From a1378c484f553f7b49d51cfeeb835a76a08325b2 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Thu, 13 Jun 2019 23:52:41 +0300 Subject: [PATCH 001/515] Drop old index (saved in branch), add high level index --- README.md | 230 ++++++++++++++++++++++++++++----------------------- README.ru.md | 106 ------------------------ README.ua.md | 106 ------------------------ 3 files changed, 128 insertions(+), 314 deletions(-) delete mode 100644 README.ru.md delete mode 100644 README.ua.md diff --git a/README.md b/README.md index 75b6f6a..17bdde5 100644 --- a/README.md +++ b/README.md @@ -1,102 +1,128 @@ -# HowProgrammingWorks Repositories Index -| [English](README.md) | [Русский](README.ru.md) | [Українська](README.ua.md) | - -## Basic Concepts - - 1. Abstractions as - [reusable components](https://github.com/HowProgrammingWorks/Reusable) and - an essence of programming and engenering at all, - see also: [cheatsheet](https://github.com/HowProgrammingWorks/Cheatsheet) - 2. [Variables and data types](https://github.com/HowProgrammingWorks/DataTypes), - scalar and reference, objects, arrays and - [data structures](https://github.com/HowProgrammingWorks/DataStructures) - 3. [Iteration](https://github.com/HowProgrammingWorks/Iteration) and loops - 4. [Functions](https://github.com/HowProgrammingWorks/Function) including - anonymous functions and lambdas, pure functions and side effects - 5. Superposition and - [Composition](https://github.com/HowProgrammingWorks/Composition), - [partial application](https://github.com/HowProgrammingWorks/PartialApplication), - currying and [wrapping](https://github.com/HowProgrammingWorks/Wrapper) functions - 6. [Higher order functions](https://github.com/HowProgrammingWorks/HigherOrderFunction) - including callbacks and [closures](https://github.com/HowProgrammingWorks/Closure) - 7. [String](https://github.com/HowProgrammingWorks/String) operations - 8. Collections: [Set and WeakSet](https://github.com/HowProgrammingWorks/Set), - [Map and WeakMap](https://github.com/HowProgrammingWorks/KeyValue) - - 9. [Abstractions](https://github.com/HowProgrammingWorks/Abstractions) - -## Related Topics - - 1. [Development tools and environment configuration](https://github.com/HowProgrammingWorks/Tools) - 2. [Version control](https://github.com/HowProgrammingWorks/VersionControl) - systems and working in groups - 3. [Code style](https://github.com/HowProgrammingWorks/CodeStyle) and - code conventions - 4. Code [benchmarking](https://github.com/HowProgrammingWorks/Benchmark) - 5. [Project template](https://github.com/HowProgrammingWorks/Project) - -## Data Structures - - 1. [Linked lists](https://github.com/HowProgrammingWorks/LinkedList): singly, doubly, circular - 2. [Trees](https://github.com/HowProgrammingWorks/Trees): classification, implementation, traversion - 3. Graphs including [directed](https://github.com/HowProgrammingWorks/DirectedGraph) graphs - -## Files, streams, buffers and sockets - - 1. [Buffers](https://github.com/HowProgrammingWorks/Buffers) - 2. [Files](https://github.com/HowProgrammingWorks/Files): - handle, sync, async, watching - 3. File [streams](https://github.com/HowProgrammingWorks/Streams) - 4. [Sockets](https://github.com/HowProgrammingWorks/Socket): - TCP and UDP, client and server - -## Advanced Concepts - - 1. [Functors](https://github.com/HowProgrammingWorks/Functor), - applicative functors and monads - 2. Caching and [Memoization](https://github.com/HowProgrammingWorks/Memoization) - 3. [Mixins](https://github.com/HowProgrammingWorks/Mixin) - as decorators and nonlinear inheritance - 4. Iterators and [generators](https://github.com/HowProgrammingWorks/Generator) - 5. [Asynchronous execution](https://github.com/HowProgrammingWorks/AsynchronousProgramming), - I/O and parallelism - 6. Events and [EventEmitter](https://github.com/HowProgrammingWorks/EventEmitter) - 7. [Promises](https://github.com/HowProgrammingWorks/Promise) and - [chaining](https://github.com/HowProgrammingWorks/Chaining) - 8. [Serialization](https://github.com/HowProgrammingWorks/Serialization) - and deserialization - 9. [Regular expressions](https://github.com/HowProgrammingWorks/RegExp) - -## Software Architecture - - 1. [Modularity](https://github.com/HowProgrammingWorks/Modularity) - and Dependency - 2. [Inversion of Control](https://github.com/HowProgrammingWorks/InversionOfControl) - 3. [Dependency Injection](https://github.com/HowProgrammingWorks/DependencyInjection) - 4. [Inter-process Communication](https://github.com/HowProgrammingWorks/InterProcessCommunication) - 5. [Sandboxing](https://github.com/HowProgrammingWorks/Sandboxes) - 6. Multi-layer and Multi-tier Architecture - 7. Data Access Layer, Cursors and Object-Relational Mapping - 8. Application Servers, thin and thic clients - 9. Introspection, Reflection and Scaffolding - -## Practical Examples - - 1. Routing for [HTTP Server](https://github.com/HowProgrammingWorks/NodeServer) - 2. [Websocket Chat](https://github.com/HowProgrammingWorks/WebsocketChat) - 3. Interactive multi-user [LiveTable](https://github.com/HowProgrammingWorks/LiveTable) - 4. Data [Projection](https://github.com/HowProgrammingWorks/Projection) - -## Programming Paradigms and Techniques - - 1. Imperative, non-structured, structured and procedural programming - - [Imperative programming](https://github.com/HowProgrammingWorks/ImperativeProgramming) - - [Prototype-oriented programming](https://github.com/HowProgrammingWorks/PrototypeOrientedProgramming) - - [Object-oriented programming](https://github.com/HowProgrammingWorks/ObjectOrientedProgramming) - 2. [Functional programming](https://github.com/HowProgrammingWorks/FunctionalProgramming) - 3. Logic, declarative and automata-based programming - 4. [Language-oriented programming and domain-specific languages](https://github.com/HowProgrammingWorks/DSL) - 5. Asynchronous, Reactive and [Event-driven programming](https://github.com/HowProgrammingWorks/EventDrivenProgramming) - 6. Probabilistic programming - 7. [Data-driven programming](https://github.com/HowProgrammingWorks/DataDrivenProgramming) - 8. [Metaprogramming](https://github.com/HowProgrammingWorks/Metaprogramming) +# Индекс репозиториев HowProgrammingWorks + +## Курсы лекций + +1. Основы программирования +2. Алгоритмы и структуры данных +3. Инструменты разработки и жизненного цикла ПО +4. Функциональное программирование +5. Объектно-ориентированное программирование +6. Шаблоны проектирования +7. Операционные системы +8. Системное программирование +9. Проектирование сетевых протоколов и сервисов +10. Архитектура информационных систем +11. Веб-технологии +12. Асинхронное программирование +13. Параллельное программирование +14. Парадигмы программирования +15. Мультипарадигменное и метапрограммирование +16. Проектирования баз данных +17. Высоконагруженные и масштабируемые системы +18. Проектирование пользовательских интерфейсов +19. Безопасность информационных систем +20. Качество и надежность ПО + +## Базовые концепции + + 1. [Переиспользуемые абстракции](https://github.com/HowProgrammingWorks/Reusable) + как сущность программирования и инженерии, + см. также: [cheatsheet](https://github.com/HowProgrammingWorks/Cheatsheet) + 2. [Переменные и типы данных](https://github.com/HowProgrammingWorks/DataTypes), + скалярные и ссылочные типы, объекты, массивы и + [структуры данных](https://github.com/HowProgrammingWorks/DataStructures) + 3. [Итерирование](https://github.com/HowProgrammingWorks/Iteration) и циклы + 4. [Функции](https://github.com/HowProgrammingWorks/Function) включая + анонимные и лямбда-выражения, чистые функции и побочные эффекты + 5. Суперпозиция и + [конпозиция](https://github.com/HowProgrammingWorks/Composition) функций, + [частичное применение](https://github.com/HowProgrammingWorks/PartialApplication), + каррирование и [функции-обертки](https://github.com/HowProgrammingWorks/Wrapper) + 6. Функции [высшего порядка](https://github.com/HowProgrammingWorks/HigherOrderFunction) + включая колбеки и [замыкания](https://github.com/HowProgrammingWorks/Closure) + 7. [Строковые](https://github.com/HowProgrammingWorks/String) операции + 8. Коллекции: [Set и WeakSet](https://github.com/HowProgrammingWorks/Set), + [Map и WeakMap](https://github.com/HowProgrammingWorks/KeyValue) + +## Вспомогательные темы + + 1. [Инструменты разработки и конфигурация среды разработки](https://github.com/HowProgrammingWorks/Tools) + 2. Системы [управления версиями](https://github.com/HowProgrammingWorks/VersionControl) + и групповая работа + 3. [Стиль кода](https://github.com/HowProgrammingWorks/CodeStyle) и конвенции + 4. Исследование [производительности](https://github.com/HowProgrammingWorks/Benchmark) + и скорости кода + 5. [Заготовка проекта](https://github.com/HowProgrammingWorks/Project) + +## Структуры данных + + 1. [Списки](https://github.com/HowProgrammingWorks/LinkedList): + односвязные, двусвязный, кольцо + 2. [Деревья](https://github.com/HowProgrammingWorks/Trees): + классификация, реализация, обход + 3. Графы и [ориентированные](https://github.com/HowProgrammingWorks/DirectedGraph) + графы + +## Файлы, потоки, буферы и сокеты + + 1. [Буферы](https://github.com/HowProgrammingWorks/Buffers) + 2. [Работа с файлами](https://github.com/HowProgrammingWorks/Files): + дескриптор, синхронные и асинхронные операции, наблюдение за файловой системой + 3. [Файловые потоки](https://github.com/HowProgrammingWorks/Streams) + 4. [Сокеты](https://github.com/HowProgrammingWorks/Socket): + TCP и UDP, client и server + +## Продвинутые темы + + 1. [Функторы](https://github.com/HowProgrammingWorks/Functor), + аппликативные функторы и монады + 2. Кеширование и [мемоизация](https://github.com/HowProgrammingWorks/Memoization) + 3. [Примеси](https://github.com/HowProgrammingWorks/Mixin) как декораторы и + непрямое наследование + 4. Итераторы и [генераторы](https://github.com/HowProgrammingWorks/Generator) + 5. [Асинхронное исполнение](https://github.com/HowProgrammingWorks/AsynchronousProgramming), + ввод/вывод и параллелизм + 6. События и [EventEmitter](https://github.com/HowProgrammingWorks/EventEmitter) + 7. [Promises](https://github.com/HowProgrammingWorks/Promise) и + [чеининг](https://github.com/HowProgrammingWorks/Chaining) + 8. [Сериализация](https://github.com/HowProgrammingWorks/Serialization) + и десериализация + 9. [Регулярные выражения](https://github.com/HowProgrammingWorks/RegExp) + +## Программная архитектура + + 1. [Модульность](https://github.com/HowProgrammingWorks/Modularity) + и зависимости + 2. [Инверсия управления](https://github.com/HowProgrammingWorks/InversionOfControl) + 3. [Внедрение зависимостей](https://github.com/HowProgrammingWorks/DependencyInjection) + 4. [Межпроцессовое взаимодействие](https://github.com/HowProgrammingWorks/InterProcessCommunication) + 5. [Песочницы](https://github.com/HowProgrammingWorks/Sandboxes) + 6. Многослойные и многозвенные архитектуры + 7. Слой доступа к данным, курсоры и объектно-реляционное отображение + 8. Сервера приложений, тонкие и толстые клиенты + 9. Интроспекция, рефлексия и скаффолдинг + +## Комплексные примеры + + 1. Маршрутизация для [HTTP сервера](https://github.com/HowProgrammingWorks/NodeServer) + 2. Чат на [Websocket-ах](https://github.com/HowProgrammingWorks/WebsocketChat) + 3. Интерактивные многопользовательские, + [живые таблицы](https://github.com/HowProgrammingWorks/LiveTable) + 4. [Проекция данных](https://github.com/HowProgrammingWorks/Projection) + +## Парадигмы и техники программирования + + 1. Императивное, неструктурное, структурное и процедурное программирование + - https://github.com/HowProgrammingWorks/ImperativeProgramming + - [Прототипное программирование](https://github.com/HowProgrammingWorks/PrototypeOrientedProgramming) + - [Объектно-ориентированное программирование](https://github.com/HowProgrammingWorks/ObjectOrientedProgramming) + 2. [Функциональное программирование](https://github.com/HowProgrammingWorks/FunctionalProgramming) + 3. Логическое, декларативное и автоматное программирование + 4. Language-oriented программирование и языки, специализированные для + предметной области + 5. Асинхронное, реактивное и [событийное + программирование](https://github.com/HowProgrammingWorks/EventDrivenProgramming) + 6. Вероятностное программирование + 7. [Программирование](https://github.com/HowProgrammingWorks/DataDrivenProgramming) + управляемое данными + 8. [Метапрограммирование](https://github.com/HowProgrammingWorks/Metaprogramming) diff --git a/README.ru.md b/README.ru.md deleted file mode 100644 index 84b9506..0000000 --- a/README.ru.md +++ /dev/null @@ -1,106 +0,0 @@ -# Индекс репозиториев HowProgrammingWorks -| [English](README.md) | [Русский](README.ru.md) | [Українська](README.ua.md) | - -## Базовые концепции - - 1. [Переиспользуемые абстракции](https://github.com/HowProgrammingWorks/Reusable) - как сущность программирования и инженерии, - см. также: [cheatsheet](https://github.com/HowProgrammingWorks/Cheatsheet) - 2. [Переменные и типы данных](https://github.com/HowProgrammingWorks/DataTypes), - скалярные и ссылочные типы, объекты, массивы и - [структуры данных](https://github.com/HowProgrammingWorks/DataStructures) - 3. [Итерирование](https://github.com/HowProgrammingWorks/Iteration) и циклы - 4. [Функции](https://github.com/HowProgrammingWorks/Function) включая - анонимные и лямбда-выражения, чистые функции и побочные эффекты - 5. Суперпозиция и - [конпозиция](https://github.com/HowProgrammingWorks/Composition) функций, - [частичное применение](https://github.com/HowProgrammingWorks/PartialApplication), - каррирование и [функции-обертки](https://github.com/HowProgrammingWorks/Wrapper) - 6. Функции [высшего порядка](https://github.com/HowProgrammingWorks/HigherOrderFunction) - включая колбеки и [замыкания](https://github.com/HowProgrammingWorks/Closure) - 7. [Строковые](https://github.com/HowProgrammingWorks/String) операции - 8. Коллекции: [Set и WeakSet](https://github.com/HowProgrammingWorks/Set), - [Map и WeakMap](https://github.com/HowProgrammingWorks/KeyValue) - -## Вспомогательные темы - - 1. [Инструменты разработки и конфигурация среды разработки](https://github.com/HowProgrammingWorks/Tools) - 2. Системы [управления версиями](https://github.com/HowProgrammingWorks/VersionControl) - и групповая работа - 3. [Стиль кода](https://github.com/HowProgrammingWorks/CodeStyle) и конвенции - 4. Исследование [производительности](https://github.com/HowProgrammingWorks/Benchmark) - и скорости кода - 5. [Заготовка проекта](https://github.com/HowProgrammingWorks/Project) - -## Структуры данных - - 1. [Списки](https://github.com/HowProgrammingWorks/LinkedList): - односвязные, двусвязный, кольцо - 2. [Деревья](https://github.com/HowProgrammingWorks/Trees): - классификация, реализация, обход - 3. Графы и [ориентированные](https://github.com/HowProgrammingWorks/DirectedGraph) - графы - -## Файлы, потоки, буферы и сокеты - - 1. [Буферы](https://github.com/HowProgrammingWorks/Buffers) - 2. [Работа с файлами](https://github.com/HowProgrammingWorks/Files): - дескриптор, синхронные и асинхронные операции, наблюдение за файловой системой - 3. [Файловые потоки](https://github.com/HowProgrammingWorks/Streams) - 4. [Сокеты](https://github.com/HowProgrammingWorks/Socket): - TCP и UDP, client и server - -## Продвинутые темы - - 1. [Функторы](https://github.com/HowProgrammingWorks/Functor), - аппликативные функторы и монады - 2. Кеширование и [мемоизация](https://github.com/HowProgrammingWorks/Memoization) - 3. [Примеси](https://github.com/HowProgrammingWorks/Mixin) как декораторы и - непрямое наследование - 4. Итераторы и [генераторы](https://github.com/HowProgrammingWorks/Generator) - 5. [Асинхронное исполнение](https://github.com/HowProgrammingWorks/AsynchronousProgramming), - ввод/вывод и параллелизм - 6. События и [EventEmitter](https://github.com/HowProgrammingWorks/EventEmitter) - 7. [Promises](https://github.com/HowProgrammingWorks/Promise) и - [чеининг](https://github.com/HowProgrammingWorks/Chaining) - 8. [Сериализация](https://github.com/HowProgrammingWorks/Serialization) - и десериализация - 9. [Регулярные выражения](https://github.com/HowProgrammingWorks/RegExp) - -## Программная архитектура - - 1. [Модульность](https://github.com/HowProgrammingWorks/Modularity) - и зависимости - 2. [Инверсия управления](https://github.com/HowProgrammingWorks/InversionOfControl) - 3. [Внедрение зависимостей](https://github.com/HowProgrammingWorks/DependencyInjection) - 4. [Межпроцессовое взаимодействие](https://github.com/HowProgrammingWorks/InterProcessCommunication) - 5. [Песочницы](https://github.com/HowProgrammingWorks/Sandboxes) - 6. Многослойные и многозвенные архитектуры - 7. Слой доступа к данным, курсоры и объектно-реляционное отображение - 8. Сервера приложений, тонкие и толстые клиенты - 9. Интроспекция, рефлексия и скаффолдинг - -## Комплексные примеры - - 1. Маршрутизация для [HTTP сервера](https://github.com/HowProgrammingWorks/NodeServer) - 2. Чат на [Websocket-ах](https://github.com/HowProgrammingWorks/WebsocketChat) - 3. Интерактивные многопользовательские, - [живые таблицы](https://github.com/HowProgrammingWorks/LiveTable) - 4. [Проекция данных](https://github.com/HowProgrammingWorks/Projection) - -## Парадигмы и техники программирования - - 1. Императивное, неструктурное, структурное и процедурное программирование - - https://github.com/HowProgrammingWorks/ImperativeProgramming - - [Прототипное программирование](https://github.com/HowProgrammingWorks/PrototypeOrientedProgramming) - - [Объектно-ориентированное программирование](https://github.com/HowProgrammingWorks/ObjectOrientedProgramming) - 2. [Функциональное программирование](https://github.com/HowProgrammingWorks/FunctionalProgramming) - 3. Логическое, декларативное и автоматное программирование - 4. Language-oriented программирование и языки, специализированные для - предметной области - 5. Асинхронное, реактивное и [событийное - программирование](https://github.com/HowProgrammingWorks/EventDrivenProgramming) - 6. Вероятностное программирование - 7. [Программирование](https://github.com/HowProgrammingWorks/DataDrivenProgramming) - управляемое данными - 8. [Метапрограммирование](https://github.com/HowProgrammingWorks/Metaprogramming) diff --git a/README.ua.md b/README.ua.md deleted file mode 100644 index e85bd82..0000000 --- a/README.ua.md +++ /dev/null @@ -1,106 +0,0 @@ -# Індекс репозиторіїв HowProgrammingWorks -| [English](README.md) | [Русский](README.ru.md) | [Українська](README.ua.md) | - -## Базові концепції - - 1. [Абстракції багаторазового](https://github.com/HowProgrammingWorks/Reusable), - використання як сутність програмування та інженерії загалом, - см. також: [cheatsheet](https://github.com/HowProgrammingWorks/Cheatsheet) - 2. [Змінні та типи даних](https://github.com/HowProgrammingWorks/DataTypes), - скалярні величини та посилання, об'єкти, масиви та - [структури даних](https://github.com/HowProgrammingWorks/DataStructures) - 3. [Ітерування](https://github.com/HowProgrammingWorks/Iteration) та цикли - 4. [Функції](https://github.com/HowProgrammingWorks/Function), - анонімні та лямбда-функції, чисті функції та побічні ефекти - 5. Суперпозиція та - [композиція](https://github.com/HowProgrammingWorks/Composition) функцій, - [часткове застосування](https://github.com/HowProgrammingWorks/PartialApplication), - каррінг та [функції-обгортки](https://github.com/HowProgrammingWorks/Wrapper) - 6. [Функції вищого порядку](https://github.com/HowProgrammingWorks/HigherOrderFunction), - колбеки та [замикання](https://github.com/HowProgrammingWorks/Closure) - 7. Операції зі [строками](https://github.com/HowProgrammingWorks/String) - 8. Коллекції: [Set та WeakSet](https://github.com/HowProgrammingWorks/Set), - [Map та WeakMap](https://github.com/HowProgrammingWorks/KeyValue) - -## Допоміжні теми - - 1. [Інструменти розробки](https://github.com/HowProgrammingWorks/Tools) - та конфігурація середовища розробки - 2. Системи [управління версіями](https://github.com/HowProgrammingWorks/VersionControl) - і групова робота - 3. [Стиль коду](https://github.com/HowProgrammingWorks/CodeStyle) та конвенції - 4. Дослідження продуктивності та - [швидкодії](https://github.com/HowProgrammingWorks/Benchmark) коду - 5. [Шаблон проекту](https://github.com/HowProgrammingWorks/Project) - -## Структури даних - - 1. [Зв'язані списки](https://github.com/HowProgrammingWorks/LinkedList): - однозв'язні, двозв'язні та кільцеві - 2. [Дерева](https://github.com/HowProgrammingWorks/Trees): - класифікація, реалізація, методи обходу - 3. Графи та [орієнтовані](https://github.com/HowProgrammingWorks/DirectedGraph) - графи - -## Файли, потоки, буфери и сокети - - 1. [Буфери](https://github.com/HowProgrammingWorks/Buffers) - 2. [Робота з файлами](https://github.com/HowProgrammingWorks/Files): - дескріптор, синхронні та асинхронні операції, спостереження за файловою системою - 3. [Файлові потоки](https://github.com/HowProgrammingWorks/Streams) - 4. [Сокети](https://github.com/HowProgrammingWorks/Socket): - TCP та UDP, client та server - -## Розширені поняття - - 1. [Функтори](https://github.com/HowProgrammingWorks/Functor), аплікативні - функтори та монади - 2. Кешування та [мемоізація](https://github.com/HowProgrammingWorks/Memoization) - 3. [Домішки](https://github.com/HowProgrammingWorks/Mixin) як декоратори та - непряме успадкування через домішки - 4. Ітератори та [генератори](https://github.com/HowProgrammingWorks/Generator) - 5. [Асинхронне виконання](https://github.com/HowProgrammingWorks/AsynchronousProgramming), - ввід/вивід та паралелізм - 6. Події та [EventEmitter](https://github.com/HowProgrammingWorks/EventEmitter) - 7. [Promises](https://github.com/HowProgrammingWorks/Promise) та - [чеінінг](https://github.com/HowProgrammingWorks/Chaining) - 8. [Серіалізація](https://github.com/HowProgrammingWorks/Serialization) та - десеріалізація - 9. [Регулярні вирази](https://github.com/HowProgrammingWorks/RegExp) - -## Архітектура програмного забезпечення - - 1. [Модульність](https://github.com/HowProgrammingWorks/Modularity) та - залежності - 2. [Інверсія управління](https://github.com/HowProgrammingWorks/InversionOfControl) - 3. [Ін'єкція залежностей](https://github.com/HowProgrammingWorks/DependencyInjection) - 4. [Міжпроцесова взаємодія](https://github.com/HowProgrammingWorks/InterProcessCommunication) - 5. [Пісочниці](https://github.com/HowProgrammingWorks/Sandboxes) - 6. Багатошарові і багатоланкові архітектури - 7. Шар доступу до даних, курсори та об'єктно-реляційне відображення - 8. Сервера додатків, тонкі та товсті клієнти - 9. Інтроспекція, рефлексія та скаффолдінг - -## Практичні приклади - - 1. Маршрутизація у [сервері HTTP](https://github.com/HowProgrammingWorks/NodeServer) - 2. Чат на [Websocket-ах](https://github.com/HowProgrammingWorks/WebsocketChat) - 3. Інтерактивні та багатокористувацькі - ["живі таблиці"](https://github.com/HowProgrammingWorks/LiveTable) - 4. [Проектування](https://github.com/HowProgrammingWorks/Projection) - та відображення наборів даних - -## Парадигми та техніки програмування - - 1. Імперативне, процедурне, структурне та неструктурне програмування - - https://github.com/HowProgrammingWorks/ImperativeProgramming - - [Прототипно-орієнтоване програмування](https://github.com/HowProgrammingWorks/PrototypeOrientedProgramming) - - [Об'єктно-орієнтоване програмування](https://github.com/HowProgrammingWorks/ObjectOrientedProgramming) - 2. [Функціональне програмування](https://github.com/HowProgrammingWorks/FunctionalProgramming) - 3. Логічне, декларативне і автоматне програмування - 4. Language-oriented програмування і мови, спеціалізовані для предметної області - 5. Асинхронне, реактивне та - [подійно-орієнтоване програмування](https://github.com/HowProgrammingWorks/EventDrivenProgramming) - 6. Ймовірнісние програмування - 7. [Програмування кероване даними](https://github.com/HowProgrammingWorks/DataDrivenProgramming) - 8. [Метапрограмування](https://github.com/HowProgrammingWorks/Metaprogramming) From b3781409747b39342d5f15dd9e7b712ac5a1503e Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Thu, 13 Jun 2019 23:54:56 +0300 Subject: [PATCH 002/515] Add asynchromius programming --- Asynchronous.md | 54 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Asynchronous.md diff --git a/Asynchronous.md b/Asynchronous.md new file mode 100644 index 0000000..32778f7 --- /dev/null +++ b/Asynchronous.md @@ -0,0 +1,54 @@ +# Асинхронное программирование + +- [1. Асинхронное программирование (обзор)](https://youtu.be/hY6Z6qNYzmc) +- [2. Таймеры, таймауты и 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 +- [3. Асинхронное программирование на callback`ах](https://youtu.be/z8Hg6zgi3yQ) + - Примеры кода: https://github.com/HowProgrammingWorks/AsynchronousProgramming + - Библиотека do: https://github.com/metarhia/do +- [4. Неблокирующее асинхронное итерирование](https://youtu.be/wYA2cIRYLoA) + - Примеры кода: https://github.com/HowProgrammingWorks/NonBlocking +- [5. Асинхронность с библиотекой async.js](https://youtu.be/XQ94wQc-erU) + - Примеры кода: https://github.com/HowProgrammingWorks/AsynchronousProgramming + - Библиотека async.js: https://caolan.github.io/async/ +- [6. Асинхронность на промисах](https://youtu.be/RMl4r6s1Y8M) + - Примеры кода: https://github.com/HowProgrammingWorks/Promise +- [7. Асинхронные функции и обработка ошибок](https://youtu.be/Jdf_tZuJbHI) + - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAwait +- [8. Асинхронные адаптеры: promisify, callbackify, asyncify](https://youtu.be/76k6_YkYRmU) + - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAdapter +- [9. Асинхронные коллекторы данных](https://youtu.be/tgodt1JL6II) + - Примеры кода: https://github.com/HowProgrammingWorks/Collector + - Библиотека: https://github.com/metarhia/metasync +- [10. Необработанные ошибки в промисах](https://youtu.be/1Ml5NE2fsZ8) + - Примеры кода: https://github.com/HowProgrammingWorks/PromiseError +- [11. Проблема асинхронного стектрейса](https://youtu.be/pfiHTx3j87Y) + - Примеры кода: https://github.com/HowProgrammingWorks/StackTrace +- [12. Генераторы и асинхронные генераторы](https://youtu.be/kvNm9D32s8s) + - Генераторы: https://github.com/HowProgrammingWorks/AsyncGenerator + - Асинхронные генераторы: https://github.com/HowProgrammingWorks/Generator +- [13. Итераторы и асинхронные итераторы](https://youtu.be/rBGFlWpVpGs) + - Итераторы: https://github.com/HowProgrammingWorks/AsyncIterator + - Асинхронные итераторы: https://github.com/HowProgrammingWorks/Iterator +- [14. Отмена асинхронных операций](https://youtu.be/T8fXlnqI4Ws) + - Примеры кода: https://github.com/HowProgrammingWorks/Cancelable +- [15. Асинхронная композиция функций](https://youtu.be/3ZCrMlMpOrM) + - Примеры кода: https://github.com/HowProgrammingWorks/AsyncCompose +- [16. Thenable и легковесный await](https://youtu.be/DXp__1VNIvI) + - Примеры кода: https://github.com/HowProgrammingWorks/Thenable +- [17. Конкурентная асинхронная очередь](https://youtu.be/Lg46AH8wFvg) + - Примеры кода: https://github.com/HowProgrammingWorks/ConcurrentQueue +- [18. Паттерн открытый конструктор (Revealing Constructor)](https://youtu.be/leR5sXRkuJI) + - Примеры кода: https://github.com/HowProgrammingWorks/RevealingConstructor +- [19. Future: Асинхронность на фьючерах без состояния](https://youtu.be/22ONv3AGXdk) + - Примеры кода: https://github.com/HowProgrammingWorks/Future +- [20. Deferred: Асинхронность на диферах с состоянием](https://youtu.be/a2fVA1o-ovM) + - Примеры кода: https://github.com/HowProgrammingWorks/Deferred +- [21. Модель акторов (Actor Model)](https://youtu.be/xp5MVKEqxY4) + - Примеры кода: https://github.com/HowProgrammingWorks/ActorModel +- [22. Паттерн Наблюдатель (Observer + Observable)](https://youtu.be/_bFXuLcXoXg) + - Примеры кода: https://github.com/HowProgrammingWorks/Observer +- [23. Асинхронность на RxJS и потоки событий](https://youtu.be/0kcpMAl-wfE) + - Примеры кода: https://github.com/HowProgrammingWorks/Rx From 9177afb25795ab93f265f15070d705163a8edb71 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Thu, 13 Jun 2019 23:58:52 +0300 Subject: [PATCH 003/515] Add architecture --- Architecture.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Architecture.md diff --git a/Architecture.md b/Architecture.md new file mode 100644 index 0000000..bff7504 --- /dev/null +++ b/Architecture.md @@ -0,0 +1,21 @@ +# Архитектура информационных систем + +- Обзор задач, компонентный, модульный и многослойный подходы к проектированию +- Классификация ИС: ERP, SCM, CRM, MRP, BI, B2B и B2C +- Слоистая архитектура и многозвенная архитектура для монолитных ИС +- Типы взаимодействия: общие данные, вызов процедур, передача событий +- Двух и трех-звенные приложения, многозвенные, пайплайн топология +- Сервисный подход: веб-сервисы и микросервисы, серверлес +- Хранилища данных и СУБД: реляционные, noSQL, колоночные, ключ-значение +- CQS, CQRS и Event-Sourcing +- Топологии распределенных ИС: звезда, шина, кольцо, конвейер, полносвязная +- Проектирование API интерфейсов +- Корпоративные интеграционные шины (обмен с внешними подсистемами) +- Шины трансляции событий и очереди событий (MQ системы) +- Планировщики отложенных задач и ресурсов, очереди исполнения +- Тестирование, оценки качества, непрерывная интеграция +- Инфраструктура, развертывание, обновление, миграции, реинженеринг +- Балансировка, репликации, шардинг, решардинг, бекапы и восстановление +- Безопасность, авторизация, аутентификация, прикладной фаервол +- Прикладное и системное логирование, расследование инцидентов +- Анализ и реинженеринг бизнес-процессов From 9eb49a485bff684c1d3d0a58e2539f222a78ec25 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Fri, 14 Jun 2019 00:00:05 +0300 Subject: [PATCH 004/515] Add parallel programming --- Parallel.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 Parallel.md diff --git a/Parallel.md b/Parallel.md new file mode 100644 index 0000000..d80feaa --- /dev/null +++ b/Parallel.md @@ -0,0 +1,15 @@ +# Параллельное программирование + +- Разделяемая память и потоки, атомарные операции, memory mapped files +- Проблемы и понятия: race condition, deadlock, livelock, синхронизация, critical section +- Подходы к решению задач: локинг, потокобезопасные и потоконезависимые структуры данных +- Примитивы параллельного программирования в операционных системах +- Мьютексы, Фьютексы и семафоры в том числе бинарные, рекурсивные и легковесные +- Условные переменные, сравнение их с семафорами, оптимизация параллельных программ +- Барьерная синхронизация, спинлоки и синхронизация в юзерспейсе +- Read-write блокировки (много параллельно читают, но только один эксклюзивно пишет) +- Другие подходы: транзакционная память, модель акторов, map/reduce, сети петри +- Другие подходы: асинхронное программирование, реактор, корутины, фьючеры и монады +- Практическое применение Java Threads, C# Tasks +- Параллельное программирование на OpenMP и MPI +- Алгоритмы консенсуса, CAP-теорема и распределенные системы From 73a408770c78629eb3016e782c12754320f7938d Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Fri, 14 Jun 2019 00:28:00 +0300 Subject: [PATCH 005/515] Add initial structure --- AlgAndData.md | 1 + Databases.md | 1 + Functional.md | 1 + Highload.md | 1 + Introduction.md | 1 + Metaprogramming.md | 1 + Network.md | 1 + OOP.md | 1 + OS.md | 1 + Paradigms.md | 1 + Patterns.md | 1 + Quality.md | 1 + README.md | 165 ++++++++++----------------------------------- Security.md | 1 + System.md | 1 + Tools.md | 1 + UI-UX.md | 1 + Web.md | 1 + 18 files changed, 54 insertions(+), 128 deletions(-) create mode 100644 AlgAndData.md create mode 100644 Databases.md create mode 100644 Functional.md create mode 100644 Highload.md create mode 100644 Introduction.md create mode 100644 Metaprogramming.md create mode 100644 Network.md create mode 100644 OOP.md create mode 100644 OS.md create mode 100644 Paradigms.md create mode 100644 Patterns.md create mode 100644 Quality.md create mode 100644 Security.md create mode 100644 System.md create mode 100644 Tools.md create mode 100644 UI-UX.md create mode 100644 Web.md diff --git a/AlgAndData.md b/AlgAndData.md new file mode 100644 index 0000000..3f70825 --- /dev/null +++ b/AlgAndData.md @@ -0,0 +1 @@ +# Алгоритмы и структуры данных diff --git a/Databases.md b/Databases.md new file mode 100644 index 0000000..86161b4 --- /dev/null +++ b/Databases.md @@ -0,0 +1 @@ +# Проектирования баз данных diff --git a/Functional.md b/Functional.md new file mode 100644 index 0000000..3a85116 --- /dev/null +++ b/Functional.md @@ -0,0 +1 @@ +# Функциональное программирование diff --git a/Highload.md b/Highload.md new file mode 100644 index 0000000..5cf9477 --- /dev/null +++ b/Highload.md @@ -0,0 +1 @@ +# Высоконагруженные и масштабируемые системы diff --git a/Introduction.md b/Introduction.md new file mode 100644 index 0000000..d8d847b --- /dev/null +++ b/Introduction.md @@ -0,0 +1 @@ +# Основы программирования diff --git a/Metaprogramming.md b/Metaprogramming.md new file mode 100644 index 0000000..b903b71 --- /dev/null +++ b/Metaprogramming.md @@ -0,0 +1 @@ +# Метапрограммирование и мультипарадигменное программирование diff --git a/Network.md b/Network.md new file mode 100644 index 0000000..2982436 --- /dev/null +++ b/Network.md @@ -0,0 +1 @@ +# Проектирование сетевых протоколов и сервисов diff --git a/OOP.md b/OOP.md new file mode 100644 index 0000000..b314c50 --- /dev/null +++ b/OOP.md @@ -0,0 +1 @@ +# Объектно-ориентированное программирование diff --git a/OS.md b/OS.md new file mode 100644 index 0000000..4ba9179 --- /dev/null +++ b/OS.md @@ -0,0 +1 @@ +# Операционные системы diff --git a/Paradigms.md b/Paradigms.md new file mode 100644 index 0000000..b933fb7 --- /dev/null +++ b/Paradigms.md @@ -0,0 +1 @@ +# Парадигмы программирования diff --git a/Patterns.md b/Patterns.md new file mode 100644 index 0000000..706cdc3 --- /dev/null +++ b/Patterns.md @@ -0,0 +1 @@ +# Шаблоны проектирования diff --git a/Quality.md b/Quality.md new file mode 100644 index 0000000..d9466b3 --- /dev/null +++ b/Quality.md @@ -0,0 +1 @@ +# Качество, тестирование и надежность ПО diff --git a/README.md b/README.md index 17bdde5..8d247f9 100644 --- a/README.md +++ b/README.md @@ -1,128 +1,37 @@ -# Индекс репозиториев HowProgrammingWorks - -## Курсы лекций - -1. Основы программирования -2. Алгоритмы и структуры данных -3. Инструменты разработки и жизненного цикла ПО -4. Функциональное программирование -5. Объектно-ориентированное программирование -6. Шаблоны проектирования -7. Операционные системы -8. Системное программирование -9. Проектирование сетевых протоколов и сервисов -10. Архитектура информационных систем -11. Веб-технологии -12. Асинхронное программирование -13. Параллельное программирование -14. Парадигмы программирования -15. Мультипарадигменное и метапрограммирование -16. Проектирования баз данных -17. Высоконагруженные и масштабируемые системы -18. Проектирование пользовательских интерфейсов -19. Безопасность информационных систем -20. Качество и надежность ПО - -## Базовые концепции - - 1. [Переиспользуемые абстракции](https://github.com/HowProgrammingWorks/Reusable) - как сущность программирования и инженерии, - см. также: [cheatsheet](https://github.com/HowProgrammingWorks/Cheatsheet) - 2. [Переменные и типы данных](https://github.com/HowProgrammingWorks/DataTypes), - скалярные и ссылочные типы, объекты, массивы и - [структуры данных](https://github.com/HowProgrammingWorks/DataStructures) - 3. [Итерирование](https://github.com/HowProgrammingWorks/Iteration) и циклы - 4. [Функции](https://github.com/HowProgrammingWorks/Function) включая - анонимные и лямбда-выражения, чистые функции и побочные эффекты - 5. Суперпозиция и - [конпозиция](https://github.com/HowProgrammingWorks/Composition) функций, - [частичное применение](https://github.com/HowProgrammingWorks/PartialApplication), - каррирование и [функции-обертки](https://github.com/HowProgrammingWorks/Wrapper) - 6. Функции [высшего порядка](https://github.com/HowProgrammingWorks/HigherOrderFunction) - включая колбеки и [замыкания](https://github.com/HowProgrammingWorks/Closure) - 7. [Строковые](https://github.com/HowProgrammingWorks/String) операции - 8. Коллекции: [Set и WeakSet](https://github.com/HowProgrammingWorks/Set), - [Map и WeakMap](https://github.com/HowProgrammingWorks/KeyValue) - -## Вспомогательные темы - - 1. [Инструменты разработки и конфигурация среды разработки](https://github.com/HowProgrammingWorks/Tools) - 2. Системы [управления версиями](https://github.com/HowProgrammingWorks/VersionControl) - и групповая работа - 3. [Стиль кода](https://github.com/HowProgrammingWorks/CodeStyle) и конвенции - 4. Исследование [производительности](https://github.com/HowProgrammingWorks/Benchmark) - и скорости кода - 5. [Заготовка проекта](https://github.com/HowProgrammingWorks/Project) - -## Структуры данных - - 1. [Списки](https://github.com/HowProgrammingWorks/LinkedList): - односвязные, двусвязный, кольцо - 2. [Деревья](https://github.com/HowProgrammingWorks/Trees): - классификация, реализация, обход - 3. Графы и [ориентированные](https://github.com/HowProgrammingWorks/DirectedGraph) - графы - -## Файлы, потоки, буферы и сокеты - - 1. [Буферы](https://github.com/HowProgrammingWorks/Buffers) - 2. [Работа с файлами](https://github.com/HowProgrammingWorks/Files): - дескриптор, синхронные и асинхронные операции, наблюдение за файловой системой - 3. [Файловые потоки](https://github.com/HowProgrammingWorks/Streams) - 4. [Сокеты](https://github.com/HowProgrammingWorks/Socket): - TCP и UDP, client и server - -## Продвинутые темы - - 1. [Функторы](https://github.com/HowProgrammingWorks/Functor), - аппликативные функторы и монады - 2. Кеширование и [мемоизация](https://github.com/HowProgrammingWorks/Memoization) - 3. [Примеси](https://github.com/HowProgrammingWorks/Mixin) как декораторы и - непрямое наследование - 4. Итераторы и [генераторы](https://github.com/HowProgrammingWorks/Generator) - 5. [Асинхронное исполнение](https://github.com/HowProgrammingWorks/AsynchronousProgramming), - ввод/вывод и параллелизм - 6. События и [EventEmitter](https://github.com/HowProgrammingWorks/EventEmitter) - 7. [Promises](https://github.com/HowProgrammingWorks/Promise) и - [чеининг](https://github.com/HowProgrammingWorks/Chaining) - 8. [Сериализация](https://github.com/HowProgrammingWorks/Serialization) - и десериализация - 9. [Регулярные выражения](https://github.com/HowProgrammingWorks/RegExp) - -## Программная архитектура - - 1. [Модульность](https://github.com/HowProgrammingWorks/Modularity) - и зависимости - 2. [Инверсия управления](https://github.com/HowProgrammingWorks/InversionOfControl) - 3. [Внедрение зависимостей](https://github.com/HowProgrammingWorks/DependencyInjection) - 4. [Межпроцессовое взаимодействие](https://github.com/HowProgrammingWorks/InterProcessCommunication) - 5. [Песочницы](https://github.com/HowProgrammingWorks/Sandboxes) - 6. Многослойные и многозвенные архитектуры - 7. Слой доступа к данным, курсоры и объектно-реляционное отображение - 8. Сервера приложений, тонкие и толстые клиенты - 9. Интроспекция, рефлексия и скаффолдинг - -## Комплексные примеры - - 1. Маршрутизация для [HTTP сервера](https://github.com/HowProgrammingWorks/NodeServer) - 2. Чат на [Websocket-ах](https://github.com/HowProgrammingWorks/WebsocketChat) - 3. Интерактивные многопользовательские, - [живые таблицы](https://github.com/HowProgrammingWorks/LiveTable) - 4. [Проекция данных](https://github.com/HowProgrammingWorks/Projection) - -## Парадигмы и техники программирования - - 1. Императивное, неструктурное, структурное и процедурное программирование - - https://github.com/HowProgrammingWorks/ImperativeProgramming - - [Прототипное программирование](https://github.com/HowProgrammingWorks/PrototypeOrientedProgramming) - - [Объектно-ориентированное программирование](https://github.com/HowProgrammingWorks/ObjectOrientedProgramming) - 2. [Функциональное программирование](https://github.com/HowProgrammingWorks/FunctionalProgramming) - 3. Логическое, декларативное и автоматное программирование - 4. Language-oriented программирование и языки, специализированные для - предметной области - 5. Асинхронное, реактивное и [событийное - программирование](https://github.com/HowProgrammingWorks/EventDrivenProgramming) - 6. Вероятностное программирование - 7. [Программирование](https://github.com/HowProgrammingWorks/DataDrivenProgramming) - управляемое данными - 8. [Метапрограммирование](https://github.com/HowProgrammingWorks/Metaprogramming) +# Индекс и состояние курсов + +1. [Основы программирования](Introduction.md) + (есть много разных вариантов, нужно сводить) +2. [Алгоритмы и структуры данных](AlgAndData.md) + (есть несколько разных курсов, нужно сводить) +3. [Инструменты разработки и жизненного цикла ПО](Tools.md) + (есть несколько видео-лекций) +4. [Функциональное программирование](Functional.md) + (есть 20% примеров кода и несколько видео-лекций) +5. [Объектно-ориентированное программирование](OOP.md) + (есть 10% примеров кода и несколько видео-лекций) +6. [Шаблоны проектирования](Patterns.md) + (есть 50% примеров кода и видео-лекций) +7. [Операционные системы](OS.md) +8. [Системное программирование](System.md) +9. [Проектирование сетевых протоколов и сервисов](Network.md) + (есть 50% примеров кода и несколько видео-лекций) +10. [Архитектура информационных систем](Architecture.md) + (есть несколько видео-лекций) +11. [Веб-технологии](Web.md) + (есть 15% кода и несколько видео-лекций) +12. [Асинхронное программирование](Asynchronous.md) + (есть примеры кода и видео-лекции) +13. [Параллельное программирование](Parallel.md) + (есть 10% примеров и несколько видео-лекций) +14. [Парадигмы программирования](Paradigms.md) + (есть 50% кода и несколько видео-лекций) +15. [Метапрограммирование и мультипарадигменное программирование](Metaprogramming.md) + (есть 50% кода и несколько видео-лекций) +16. [Проектирования баз данных](Databases.md) +17. [Высоконагруженные и масштабируемые системы](Highload.md) + (есть несколько видео-лекций) +18. [Проектирование пользовательских интерфейсов](UI-UX.md) +19. [Безопасность информационных систем](Security.md) +20. [Качество, тестирование и надежность ПО](Quality.md) + (есть несколько видео-лекций) diff --git a/Security.md b/Security.md new file mode 100644 index 0000000..522efec --- /dev/null +++ b/Security.md @@ -0,0 +1 @@ +# Безопасность информационных систем diff --git a/System.md b/System.md new file mode 100644 index 0000000..5c5dd0c --- /dev/null +++ b/System.md @@ -0,0 +1 @@ +# Системное программирование diff --git a/Tools.md b/Tools.md new file mode 100644 index 0000000..92e5b3d --- /dev/null +++ b/Tools.md @@ -0,0 +1 @@ +# Инструменты разработки и жизненного цикла ПО diff --git a/UI-UX.md b/UI-UX.md new file mode 100644 index 0000000..a5fc960 --- /dev/null +++ b/UI-UX.md @@ -0,0 +1 @@ +# Проектирование пользовательских интерфейсов diff --git a/Web.md b/Web.md new file mode 100644 index 0000000..1a07f78 --- /dev/null +++ b/Web.md @@ -0,0 +1 @@ +# Веб-технологии From e442b32de95fd2ec83e2101025af3c2a707baa53 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Fri, 14 Jun 2019 03:12:55 +0300 Subject: [PATCH 006/515] Add links to video-lectures --- AlgAndData.md | 10 +++++++ Architecture.md | 26 +++++++++++++++++ Asynchronous.md | 69 +++++++++++++++++++++++++++++--------------- Databases.md | 9 ++++++ Functional.md | 29 +++++++++++++++++++ Fundamentals.md | 71 ++++++++++++++++++++++++++++++++++++++++++++++ Highload.md | 2 ++ Introduction.md | 6 +++- Metaprogramming.md | 9 ++++++ Network.md | 17 +++++++++++ NodeJS.md | 56 ++++++++++++++++++++++++++++++++++++ OOP.md | 4 +++ OS.md | 3 ++ Paradigms.md | 9 ++++++ Parallel.md | 15 ++++++++++ Patterns.md | 18 ++++++++++++ Quality.md | 8 ++++++ README.md | 41 +++++++++++++------------- Tools.md | 2 ++ Web.md | 12 ++++++++ 20 files changed, 372 insertions(+), 44 deletions(-) create mode 100644 Fundamentals.md create mode 100644 NodeJS.md diff --git a/AlgAndData.md b/AlgAndData.md index 3f70825..13f1b7a 100644 --- a/AlgAndData.md +++ b/AlgAndData.md @@ -1 +1,11 @@ # Алгоритмы и структуры данных + +- [Коллекции, множества, хештаблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) + - Коллекции: https://github.com/HowProgrammingWorks/Collections + - Хеш таблицы: https://github.com/HowProgrammingWorks/Map + - Множества: https://github.com/HowProgrammingWorks/Set +- [Структуры данных: списки, стек, очередь, дэк в JavaScript](https://youtu.be/9KvA4hDDSjk) + - Списки: https://github.com/HowProgrammingWorks/LinkedList + - Очереди: https://github.com/HowProgrammingWorks/Dequeue +- [Графы и запросы к графовым структурам на JavaScript](https://youtu.be/a0W0T8Yqw3s) + - Примеры кода: https://github.com/HowProgrammingWorks/Graph diff --git a/Architecture.md b/Architecture.md index bff7504..8ecf487 100644 --- a/Architecture.md +++ b/Architecture.md @@ -1,5 +1,7 @@ # Архитектура информационных систем +## Структура курса + - Обзор задач, компонентный, модульный и многослойный подходы к проектированию - Классификация ИС: ERP, SCM, CRM, MRP, BI, B2B и B2C - Слоистая архитектура и многозвенная архитектура для монолитных ИС @@ -19,3 +21,27 @@ - Безопасность, авторизация, аутентификация, прикладной фаервол - Прикладное и системное логирование, расследование инцидентов - Анализ и реинженеринг бизнес-процессов + +## Видео-лекции + +- [Архитектурный подход к программированию](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 diff --git a/Asynchronous.md b/Asynchronous.md index 32778f7..51fe138 100644 --- a/Asynchronous.md +++ b/Asynchronous.md @@ -1,54 +1,77 @@ # Асинхронное программирование -- [1. Асинхронное программирование (обзор)](https://youtu.be/hY6Z6qNYzmc) -- [2. Таймеры, таймауты и EventEmitter](https://youtu.be/LK2jveAnRNg) +## Структура курса + +- Введение в асинхронное программирование и неблокирующий ввод-вывод +- Таймеры, таймауты и EventEmitter и AsyncEmitter +- Асинхронное программирование на функциях обратного вызова (callback) +- Неблокирующее асинхронное итерирование +- Асинхронность с библиотекой async.js (надстройки и утилиты над callback) +- Асинхронность на промисах и обработка ошибок, асинхронный стектрейс +- Асинхронные функции (async / await) и обработка ошибок +- Контракт Thenable и легковесный await +- Необработанные ошибки в промисах +- Отмена асинхронных операций: callback, Promise, композиции функций +- Асинхронные адаптеры: promisify, callbackify, asyncify +- Асинхронные коллекторы данных и конкурентная асинхронная очередь +- Генераторы, итераторы и асинхронные генераторы и асинхронные итераторы +- Асинхронная композиция функций и асинхронное функциональное программирование +- Другие методы: Future, Deferred, Модель акторов (Actor Model) +- Паттерн Наблюдатель (Observer + Observable), асинхронность на RxJS и потоки событий + +## Видео-лекции + +- [Асинхронное программирование (обзор)](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 -- [3. Асинхронное программирование на callback`ах](https://youtu.be/z8Hg6zgi3yQ) +- [Асинхронное программирование на callback`ах](https://youtu.be/z8Hg6zgi3yQ) - Примеры кода: https://github.com/HowProgrammingWorks/AsynchronousProgramming - Библиотека do: https://github.com/metarhia/do -- [4. Неблокирующее асинхронное итерирование](https://youtu.be/wYA2cIRYLoA) +- [Неблокирующее асинхронное итерирование](https://youtu.be/wYA2cIRYLoA) - Примеры кода: https://github.com/HowProgrammingWorks/NonBlocking -- [5. Асинхронность с библиотекой async.js](https://youtu.be/XQ94wQc-erU) +- [Асинхронность с библиотекой async.js](https://youtu.be/XQ94wQc-erU) - Примеры кода: https://github.com/HowProgrammingWorks/AsynchronousProgramming - Библиотека async.js: https://caolan.github.io/async/ -- [6. Асинхронность на промисах](https://youtu.be/RMl4r6s1Y8M) +- [Асинхронность на промисах](https://youtu.be/RMl4r6s1Y8M) - Примеры кода: https://github.com/HowProgrammingWorks/Promise -- [7. Асинхронные функции и обработка ошибок](https://youtu.be/Jdf_tZuJbHI) +- [Асинхронные функции и обработка ошибок](https://youtu.be/Jdf_tZuJbHI) - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAwait -- [8. Асинхронные адаптеры: promisify, callbackify, asyncify](https://youtu.be/76k6_YkYRmU) +- [Асинхронные адаптеры: promisify, callbackify, asyncify](https://youtu.be/76k6_YkYRmU) - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAdapter -- [9. Асинхронные коллекторы данных](https://youtu.be/tgodt1JL6II) +- [Асинхронные коллекторы данных](https://youtu.be/tgodt1JL6II) - Примеры кода: https://github.com/HowProgrammingWorks/Collector - Библиотека: https://github.com/metarhia/metasync -- [10. Необработанные ошибки в промисах](https://youtu.be/1Ml5NE2fsZ8) +- [Необработанные ошибки в промисах](https://youtu.be/1Ml5NE2fsZ8) - Примеры кода: https://github.com/HowProgrammingWorks/PromiseError -- [11. Проблема асинхронного стектрейса](https://youtu.be/pfiHTx3j87Y) +- [Проблема асинхронного стектрейса](https://youtu.be/pfiHTx3j87Y) - Примеры кода: https://github.com/HowProgrammingWorks/StackTrace -- [12. Генераторы и асинхронные генераторы](https://youtu.be/kvNm9D32s8s) +- [Генераторы и асинхронные генераторы](https://youtu.be/kvNm9D32s8s) - Генераторы: https://github.com/HowProgrammingWorks/AsyncGenerator - Асинхронные генераторы: https://github.com/HowProgrammingWorks/Generator -- [13. Итераторы и асинхронные итераторы](https://youtu.be/rBGFlWpVpGs) +- [Итераторы и асинхронные итераторы](https://youtu.be/rBGFlWpVpGs) - Итераторы: https://github.com/HowProgrammingWorks/AsyncIterator - Асинхронные итераторы: https://github.com/HowProgrammingWorks/Iterator -- [14. Отмена асинхронных операций](https://youtu.be/T8fXlnqI4Ws) +- [Отмена асинхронных операций](https://youtu.be/T8fXlnqI4Ws) - Примеры кода: https://github.com/HowProgrammingWorks/Cancelable -- [15. Асинхронная композиция функций](https://youtu.be/3ZCrMlMpOrM) +- [Асинхронная композиция функций](https://youtu.be/3ZCrMlMpOrM) - Примеры кода: https://github.com/HowProgrammingWorks/AsyncCompose -- [16. Thenable и легковесный await](https://youtu.be/DXp__1VNIvI) +- [Thenable и легковесный await](https://youtu.be/DXp__1VNIvI) - Примеры кода: https://github.com/HowProgrammingWorks/Thenable -- [17. Конкурентная асинхронная очередь](https://youtu.be/Lg46AH8wFvg) +- [Конкурентная асинхронная очередь](https://youtu.be/Lg46AH8wFvg) - Примеры кода: https://github.com/HowProgrammingWorks/ConcurrentQueue -- [18. Паттерн открытый конструктор (Revealing Constructor)](https://youtu.be/leR5sXRkuJI) +- [Паттерн открытый конструктор (Revealing Constructor)](https://youtu.be/leR5sXRkuJI) - Примеры кода: https://github.com/HowProgrammingWorks/RevealingConstructor -- [19. Future: Асинхронность на фьючерах без состояния](https://youtu.be/22ONv3AGXdk) +- [Future: Асинхронность на фьючерах без состояния](https://youtu.be/22ONv3AGXdk) - Примеры кода: https://github.com/HowProgrammingWorks/Future -- [20. Deferred: Асинхронность на диферах с состоянием](https://youtu.be/a2fVA1o-ovM) +- [Deferred: Асинхронность на диферах с состоянием](https://youtu.be/a2fVA1o-ovM) - Примеры кода: https://github.com/HowProgrammingWorks/Deferred -- [21. Модель акторов (Actor Model)](https://youtu.be/xp5MVKEqxY4) +- [Модель акторов (Actor Model)](https://youtu.be/xp5MVKEqxY4) - Примеры кода: https://github.com/HowProgrammingWorks/ActorModel -- [22. Паттерн Наблюдатель (Observer + Observable)](https://youtu.be/_bFXuLcXoXg) +- [Паттерн Наблюдатель (Observer + Observable)](https://youtu.be/_bFXuLcXoXg) - Примеры кода: https://github.com/HowProgrammingWorks/Observer -- [23. Асинхронность на RxJS и потоки событий](https://youtu.be/0kcpMAl-wfE) +- [Асинхронность на RxJS и потоки событий](https://youtu.be/0kcpMAl-wfE) - Примеры кода: https://github.com/HowProgrammingWorks/Rx +- Асинхронные обработчики событий и AsyncEmitter +- Async hooks diff --git a/Databases.md b/Databases.md index 86161b4..f57b74f 100644 --- a/Databases.md +++ b/Databases.md @@ -1 +1,10 @@ # Проектирования баз данных + +- [Слой доступа к данным, курсор, транзакция](https://youtu.be/CRcSWtWVvrA) + - Примеры кода: https://github.com/HowProgrammingWorks/Transaction +- [Работа с базами данных в Node.js на примере PostgreSQL](https://youtu.be/2tDvHQCBt3w) + - Примеры кода: https://github.com/HowProgrammingWorks/Databases +- [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 diff --git a/Functional.md b/Functional.md index 3a85116..c92a552 100644 --- a/Functional.md +++ b/Functional.md @@ -1 +1,30 @@ # Функциональное программирование + +- [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) + - Функции: https://github.com/HowProgrammingWorks/Function + - Замыкания: https://github.com/HowProgrammingWorks/Closure +- [Композиция, каррирование, частичное применение в JavaScript](https://youtu.be/ND8KQ5xjk7o) + - Частичное применение: https://github.com/HowProgrammingWorks/PartialApplication + - Композиция: https://github.com/HowProgrammingWorks/Composition +- [Функции высшего порядка, колбеки, события на JavaScript](https://youtu.be/1vqATwbGHnc) + - Функции высшего порядка: https://github.com/HowProgrammingWorks/HigherOrderFunction + - Функции обратного вызова: https://github.com/HowProgrammingWorks/Callbacks +- [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) + - Чеининг: https://github.com/HowProgrammingWorks/Chaining + - Обработка ошибок: https://github.com/HowProgrammingWorks/Errors +- [Рекурсия: косвенная и хвостовая, стек, выход](https://youtu.be/W2skCjIgVKE) + - Примеры кода: https://github.com/HowProgrammingWorks/Recursion +- [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) + - Примеры кода: https://github.com/HowProgrammingWorks/FunctionalProgramming +- [Реактивное программирование на JavaScript](https://youtu.be/7MH8-qQc-48) + - Примеры кода: https://github.com/HowProgrammingWorks/ReactiveProgramming +- [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) + - Примеры кода: https://github.com/HowProgrammingWorks/Projection +- [Функциональные объекты, функторы и монады в JavaScript](https://youtu.be/3Z7f0Gi8pxw) + - Примеры кода: https://github.com/HowProgrammingWorks/Functor +- [Асинхронные функции и обработка ошибок](https://youtu.be/Jdf_tZuJbHI) + - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAwait +- [Линзы в JavaScript - функциональные аналоги геттера и сеттера](https://youtu.be/IBF5gFU6G-o) + - Примеры кода: https://github.com/HowProgrammingWorks/Lenses +- [Асинхронная композиция функций](https://youtu.be/3ZCrMlMpOrM) + - Примеры кода: https://github.com/HowProgrammingWorks/AsyncCompose diff --git a/Fundamentals.md b/Fundamentals.md new file mode 100644 index 0000000..8fca639 --- /dev/null +++ b/Fundamentals.md @@ -0,0 +1,71 @@ +# Основы программирования + +- [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) +- [Базовый синтаксис JavaScript, продолжение](https://youtu.be/qa-XleqA0JU) +- [Функции, лямбды, контексты, замыкания в 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 +- [Композиция, каррирование, частичное применение в JavaScript](https://youtu.be/ND8KQ5xjk7o) + - Частичное применение: https://github.com/HowProgrammingWorks/PartialApplication + - Композиция: https://github.com/HowProgrammingWorks/Composition +- [Функции высшего порядка, колбеки, события на JavaScript](https://youtu.be/1vqATwbGHnc) + - Функции высшего порядка: https://github.com/HowProgrammingWorks/HigherOrderFunction + - Функции обратного вызова: https://github.com/HowProgrammingWorks/Callbacks +- [Работа со строками, шаблонами и юникодом в JavaScript](https://youtu.be/GcopcHQkA8M) + - Примеры кода: https://github.com/HowProgrammingWorks/String +- [Примеси, обертки, декораторы, мемоизация в JavaScript](https://youtu.be/oRQ0kQr1N-U) + - Обертки: https://github.com/HowProgrammingWorks/Wrapper + - Примеси: https://github.com/HowProgrammingWorks/Mixin + - Мемоизация: https://github.com/HowProgrammingWorks/Memoization +- [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) + - Чеининг: https://github.com/HowProgrammingWorks/Chaining + - Обработка ошибок: https://github.com/HowProgrammingWorks/Errors +- [Рекурсия: косвенная и хвостовая, стек, выход](https://youtu.be/W2skCjIgVKE) + - Примеры кода: https://github.com/HowProgrammingWorks/Recursion +- [Таймеры, таймауты и 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 +- [Итерирование, циклы и итераторы в JavaScript](https://youtu.be/lq3b5_UGJas) + - Примеры кода: https://github.com/HowProgrammingWorks/Iteration +- [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) + - Примеры кода: https://github.com/HowProgrammingWorks/FunctionalProgramming +- [Реактивное программирование на JavaScript](https://youtu.be/7MH8-qQc-48) + - Примеры кода: https://github.com/HowProgrammingWorks/ReactiveProgramming +- [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) + - Примеры кода: https://github.com/HowProgrammingWorks/Projection +- [Коллекции, множества, хештаблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) + - Коллекции: https://github.com/HowProgrammingWorks/Collections + - Хеш таблицы: https://github.com/HowProgrammingWorks/Map + - Множества: https://github.com/HowProgrammingWorks/Set +- [Структуры данных: списки, стек, очередь, дэк в JavaScript](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 +- [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 +- [Фабрики и пулы объектов в JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) + - Фабрики: https://github.com/HowProgrammingWorks/Factory + - Пулы объектов: https://github.com/HowProgrammingWorks/Pool +- [Типизированные массивы в JavaScript](https://youtu.be/tTNcqxbxhfY) + - Примеры кода: https://github.com/HowProgrammingWorks/TypedArrays +- [Шаблон 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/AsyncGenerator + - Асинхронные генераторы: https://github.com/HowProgrammingWorks/Generator +- [Итераторы и асинхронные итераторы](https://youtu.be/rBGFlWpVpGs) + - Итераторы: https://github.com/HowProgrammingWorks/AsyncIterator + - Асинхронные итераторы: https://github.com/HowProgrammingWorks/Iterator +- [Перечислимый тип (enum) в JavaScript и TypeScript](https://youtu.be/BXiKebOIAGI) + - Примеры кода: https://github.com/HowProgrammingWorks/Enum diff --git a/Highload.md b/Highload.md index 5cf9477..b7ff37a 100644 --- a/Highload.md +++ b/Highload.md @@ -1 +1,3 @@ # Высоконагруженные и масштабируемые системы + +- [Высоконагруженные распределенные приложения на Node.js](https://youtu.be/7tfZDABPvVs) diff --git a/Introduction.md b/Introduction.md index d8d847b..ea762df 100644 --- a/Introduction.md +++ b/Introduction.md @@ -1 +1,5 @@ -# Основы программирования +# Введение и обзор знаний + +- [Подход к изучению программирования](https://youtu.be/zMU4ir10DMg) +- [Карта специальности инженер-программист](https://youtu.be/SE5aXH-yf0I) +- [Node.js Введение в технологию](https://youtu.be/WBcHgaoHh1k) diff --git a/Metaprogramming.md b/Metaprogramming.md index b903b71..3643139 100644 --- a/Metaprogramming.md +++ b/Metaprogramming.md @@ -1 +1,10 @@ # Метапрограммирование и мультипарадигменное программирование + +- [Метапрограммирование с примерами на JavaScript](https://youtu.be/Ed9onRv4G5Y) +- [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) + - Примеры кода: https://github.com/HowProgrammingWorks/Projection +- [Интроспекция и рефлексия в JavaScript](https://youtu.be/yvW1PjUVeM0) + - Примеры интроспекции: https://github.com/HowProgrammingWorks/Introspection + - Примеры рефлексии: https://github.com/HowProgrammingWorks/Reflect +- [Скаффолдинг для API, UI и данных](https://youtu.be/lipkLQVqDd8) + - Примеры кода: https://github.com/HowProgrammingWorks/Scaffolding diff --git a/Network.md b/Network.md index 2982436..3ee41e9 100644 --- a/Network.md +++ b/Network.md @@ -1 +1,18 @@ # Проектирование сетевых протоколов и сервисов + +- [Клиент-сервер на Node.js TCP и UDP, DNS](https://youtu.be/bHn-wTlTTR0) + - Примеры кода: https://github.com/HowProgrammingWorks/Socket +- [HTTP сервер на Node.js (routing, cluster, IP sticky)](https://youtu.be/7Ufxj0oTaUo) + - Примеры кода: https://github.com/HowProgrammingWorks/NodeServer +- [Высоконагруженные распределенные приложения на Node.js](https://youtu.be/7tfZDABPvVs) +- [WebSocket сервер на Node.js (электронные таблицы и чат)](https://youtu.be/Sf7ln3n16ws) + - Вебсокеты: https://github.com/HowProgrammingWorks/WebsocketChat + - Чат: https://github.com/HowProgrammingWorks/LiveTable +- [HTTP запросы в браузере и Node.js: XMLHttpRequest, fetch](https://youtu.be/wMMki2FEYGY) + - Примеры кода: https://github.com/HowProgrammingWorks/HttpRequest +- [Разработка 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 diff --git a/NodeJS.md b/NodeJS.md new file mode 100644 index 0000000..c6a8483 --- /dev/null +++ b/NodeJS.md @@ -0,0 +1,56 @@ +# Технологический стек Node.js + +- [Node.js Введение в технологию](https://youtu.be/WBcHgaoHh1k) +- [Обзор встроенного Node.js API](https://youtu.be/sOkjR-N6IAs) +- [Модули, слои, структура проекта, песочницы в 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/eQGBS15vUac) + - Работа с файлами: https://github.com/HowProgrammingWorks/Files + - Файловые потоки: https://github.com/HowProgrammingWorks/Streams + - Буферы: https://github.com/HowProgrammingWorks/Buffers +- [Межпроцессовое взаимодействие в Node.js](https://youtu.be/2OXWZFMvfbc) + - Примеры кода: https://github.com/HowProgrammingWorks/InterProcessCommunication +- [HTTP сервер на Node.js (routing, cluster, IP sticky)](https://youtu.be/7Ufxj0oTaUo) + - Примеры кода: https://github.com/HowProgrammingWorks/NodeServer +- [Консоль и командная строка в JavaScript и Node.js](https://youtu.be/5aSZyKi5BmE) + - Примеры кода: https://github.com/HowProgrammingWorks/CommandLine +- [Высоконагруженные распределенные приложения на Node.js](https://youtu.be/7tfZDABPvVs) +- [WebSocket сервер на Node.js (электронные таблицы и чат)](https://youtu.be/Sf7ln3n16ws) + - Вебсокеты: https://github.com/HowProgrammingWorks/WebsocketChat + - Чат: https://github.com/HowProgrammingWorks/LiveTable +- [Слой доступа к данным, курсор, транзакция](https://youtu.be/CRcSWtWVvrA) + - Примеры кода: https://github.com/HowProgrammingWorks/Transaction +- [Наблюдение за файловой системой в Node.js](https://youtu.be/29QINR9rruQ) + - Файловая система в Node.js: https://github.com/HowProgrammingWorks/Files + - Наблюдение за файлами: https://github.com/HowProgrammingWorks/FilesystemWatch +- [Утечки памяти в Node.js и JavaScript, сборка мусора и профилирование](https://youtu.be/0oZa64SB2wM) + - Примеры кода: https://github.com/HowProgrammingWorks/MemoryLeaks +- [Atomics, SharedArrayBuffer, worker_threads в Node.js](https://youtu.be/zLm8pnbxSII) + - Потоки: https://github.com/HowProgrammingWorks/Threads/ + - Атомарные операции: https://github.com/HowProgrammingWorks/Atomics/ +- [Семафоры и мьютексы в JavaScript и Node.js](https://youtu.be/JNLrITevhRI) + - Семафоры: https://github.com/HowProgrammingWorks/Semaphore + - Мьютексы: https://github.com/HowProgrammingWorks/Mutex +- [Необработанные ошибки в промисах](https://youtu.be/1Ml5NE2fsZ8) + - Примеры кода: https://github.com/HowProgrammingWorks/PromiseError +- [HTTP сессии и cookies на чистом Node.js](https://youtu.be/T_wKXuWW4Wo) + - Примеры кода: https://github.com/HowProgrammingWorks/Session +- [HTTP запросы в браузере и Node.js: XMLHttpRequest, fetch](https://youtu.be/wMMki2FEYGY) + - Примеры кода: https://github.com/HowProgrammingWorks/HttpRequest +- [Разработка API на Node.js (клиент и сервер)](https://youtu.be/-az912XBCu8) + - Примеры кода: https://github.com/HowProgrammingWorks/API +- [Работа с базами данных в Node.js на примере PostgreSQL](https://youtu.be/2tDvHQCBt3w) + - Примеры кода: https://github.com/HowProgrammingWorks/Databases +- [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 +- [Логирование на Node.js и JavaScript](https://youtu.be/4DkZj2Cdokc) + - Примеры кода: https://github.com/HowProgrammingWorks/Logging +- [Модель акторов (Actor Model)](https://youtu.be/xp5MVKEqxY4) + - Примеры кода: https://github.com/HowProgrammingWorks/ActorModel diff --git a/OOP.md b/OOP.md index b314c50..2c73081 100644 --- a/OOP.md +++ b/OOP.md @@ -1 +1,5 @@ # Объектно-ориентированное программирование + +- [Have Objects Failed? Или что не так с ООП?](https://youtu.be/4yO5OS0vPSw) +- [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) + - Примеры кода: https://github.com/HowProgrammingWorks/Generics diff --git a/OS.md b/OS.md index 4ba9179..8d119c8 100644 --- a/OS.md +++ b/OS.md @@ -1 +1,4 @@ # Операционные системы + +- [Межпроцессовое взаимодействие в Node.js](https://youtu.be/2OXWZFMvfbc) + - Примеры кода: https://github.com/HowProgrammingWorks/InterProcessCommunication diff --git a/Paradigms.md b/Paradigms.md index b933fb7..960a420 100644 --- a/Paradigms.md +++ b/Paradigms.md @@ -1 +1,10 @@ # Парадигмы программирования + +- [Функциональное программирование на 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 diff --git a/Parallel.md b/Parallel.md index d80feaa..b2d8eaf 100644 --- a/Parallel.md +++ b/Parallel.md @@ -1,5 +1,7 @@ # Параллельное программирование +## Структура курса + - Разделяемая память и потоки, атомарные операции, memory mapped files - Проблемы и понятия: race condition, deadlock, livelock, синхронизация, critical section - Подходы к решению задач: локинг, потокобезопасные и потоконезависимые структуры данных @@ -13,3 +15,16 @@ - Практическое применение Java Threads, C# Tasks - Параллельное программирование на OpenMP и MPI - Алгоритмы консенсуса, CAP-теорема и распределенные системы + +## Видео-лекции + +- [Межпроцессовое взаимодействие в Node.js](https://youtu.be/2OXWZFMvfbc) + - Примеры кода: https://github.com/HowProgrammingWorks/InterProcessCommunication +- [Atomics, SharedArrayBuffer, worker_threads в Node.js](https://youtu.be/zLm8pnbxSII) + - Потоки: https://github.com/HowProgrammingWorks/Threads/ + - Атомарные операции: https://github.com/HowProgrammingWorks/Atomics/ +- [Семафоры и мьютексы в JavaScript и Node.js](https://youtu.be/JNLrITevhRI) + - Семафоры: https://github.com/HowProgrammingWorks/Semaphore + - Мьютексы: https://github.com/HowProgrammingWorks/Mutex +- [Модель акторов (Actor Model)](https://youtu.be/xp5MVKEqxY4) + - Примеры кода: https://github.com/HowProgrammingWorks/ActorModel diff --git a/Patterns.md b/Patterns.md index 706cdc3..ae1d16e 100644 --- a/Patterns.md +++ b/Patterns.md @@ -1 +1,19 @@ # Шаблоны проектирования + +- [Фабрики и пулы объектов в JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) + - Фабрики: https://github.com/HowProgrammingWorks/Factory + - Пулы объектов: https://github.com/HowProgrammingWorks/Pool +- [Шаблон Singleton (синглтон) в JavaScript](https://youtu.be/qdJ5yikZnfE) + - Примеры кода: https://github.com/HowProgrammingWorks/Singleton +- [Фасад - петтерн для скрытия сложности](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 diff --git a/Quality.md b/Quality.md index d9466b3..db53da5 100644 --- a/Quality.md +++ b/Quality.md @@ -1 +1,9 @@ # Качество, тестирование и надежность ПО + +- [Измерение производительности кода и оптимизация в JavaScript и Node.js](https://youtu.be/sanq2X7Re8o) + - Примеры кода: https://github.com/HowProgrammingWorks/Benchmark +- [Тестирование: юниттесты с примерами на JavaScript](https://youtu.be/CszugIag2TA) + - Примеры кода: https://github.com/HowProgrammingWorks/Testing + - Примеры кода: https://github.com/HowProgrammingWorks/Unittesting +- [Тестирование: системное и интеграционное тестирование на JavaScript](https://youtu.be/OuKu_6H_6gE) + - Примеры кода: https://github.com/HowProgrammingWorks/Unittesting diff --git a/README.md b/README.md index 8d247f9..344fac8 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,38 @@ # Индекс и состояние курсов -1. [Основы программирования](Introduction.md) +- [Введение и обзор знаний](Introduction.md) +- [Основы программирования](Fundamentals.md) (есть много разных вариантов, нужно сводить) -2. [Алгоритмы и структуры данных](AlgAndData.md) +- [Алгоритмы и структуры данных](AlgAndData.md) (есть несколько разных курсов, нужно сводить) -3. [Инструменты разработки и жизненного цикла ПО](Tools.md) +- [Инструменты разработки и жизненного цикла ПО](Tools.md) (есть несколько видео-лекций) -4. [Функциональное программирование](Functional.md) +- [Функциональное программирование](Functional.md) (есть 20% примеров кода и несколько видео-лекций) -5. [Объектно-ориентированное программирование](OOP.md) +- [Объектно-ориентированное программирование](OOP.md) (есть 10% примеров кода и несколько видео-лекций) -6. [Шаблоны проектирования](Patterns.md) +- [Шаблоны проектирования](Patterns.md) (есть 50% примеров кода и видео-лекций) -7. [Операционные системы](OS.md) -8. [Системное программирование](System.md) -9. [Проектирование сетевых протоколов и сервисов](Network.md) +- [Операционные системы](OS.md) +- [Системное программирование](System.md) +- [Проектирование сетевых протоколов и сервисов](Network.md) (есть 50% примеров кода и несколько видео-лекций) -10. [Архитектура информационных систем](Architecture.md) +- [Архитектура информационных систем](Architecture.md) (есть несколько видео-лекций) -11. [Веб-технологии](Web.md) +- [Веб-технологии](Web.md) (есть 15% кода и несколько видео-лекций) -12. [Асинхронное программирование](Asynchronous.md) +- [Асинхронное программирование](Asynchronous.md) (есть примеры кода и видео-лекции) -13. [Параллельное программирование](Parallel.md) +- [Параллельное программирование](Parallel.md) (есть 10% примеров и несколько видео-лекций) -14. [Парадигмы программирования](Paradigms.md) +- [Парадигмы программирования](Paradigms.md) (есть 50% кода и несколько видео-лекций) -15. [Метапрограммирование и мультипарадигменное программирование](Metaprogramming.md) +- [Метапрограммирование и мультипарадигменное программирование](Metaprogramming.md) (есть 50% кода и несколько видео-лекций) -16. [Проектирования баз данных](Databases.md) -17. [Высоконагруженные и масштабируемые системы](Highload.md) +- [Проектирования баз данных](Databases.md) +- [Высоконагруженные и масштабируемые системы](Highload.md) (есть несколько видео-лекций) -18. [Проектирование пользовательских интерфейсов](UI-UX.md) -19. [Безопасность информационных систем](Security.md) -20. [Качество, тестирование и надежность ПО](Quality.md) +- [Проектирование пользовательских интерфейсов](UI-UX.md) +- [Безопасность информационных систем](Security.md) +- [Качество, тестирование и надежность ПО](Quality.md) (есть несколько видео-лекций) diff --git a/Tools.md b/Tools.md index 92e5b3d..2cc0149 100644 --- a/Tools.md +++ b/Tools.md @@ -1 +1,3 @@ # Инструменты разработки и жизненного цикла ПО + +- [Настройка среды: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) diff --git a/Web.md b/Web.md index 1a07f78..3923f45 100644 --- a/Web.md +++ b/Web.md @@ -1 +1,13 @@ # Веб-технологии + +- [HTTP сервер на Node.js (routing, cluster, IP sticky)](https://youtu.be/7Ufxj0oTaUo) + - Примеры кода: https://github.com/HowProgrammingWorks/NodeServer +- [WebSocket сервер на Node.js (электронные таблицы и чат)](https://youtu.be/Sf7ln3n16ws) + - Вебсокеты: https://github.com/HowProgrammingWorks/WebsocketChat + - Чат: https://github.com/HowProgrammingWorks/LiveTable +- [HTTP сессии и cookies на чистом Node.js](https://youtu.be/T_wKXuWW4Wo) + - Примеры кода: https://github.com/HowProgrammingWorks/Session +- [HTTP запросы в браузере и Node.js: XMLHttpRequest, fetch](https://youtu.be/wMMki2FEYGY) + - Примеры кода: https://github.com/HowProgrammingWorks/HttpRequest +- [Разработка API на Node.js (клиент и сервер)](https://youtu.be/-az912XBCu8) + - Примеры кода: https://github.com/HowProgrammingWorks/API From 2976f480f6fd693252c77d250cc3162b3e82f755 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Fri, 14 Jun 2019 03:23:54 +0300 Subject: [PATCH 007/515] Exams 2019 --- Exams2019.md | 10 ++++++++++ Fundamentals.md | 2 ++ 2 files changed, 12 insertions(+) create mode 100644 Exams2019.md diff --git a/Exams2019.md b/Exams2019.md new file mode 100644 index 0000000..e6ec241 --- /dev/null +++ b/Exams2019.md @@ -0,0 +1,10 @@ +# Экзамены: 1 курс (июнь 2019) + +- [Введение и обзор знаний](Introduction.md) +- [Основы программирования](Fundamentals.md) +- [Алгоритмы и структуры данных](AlgAndData.md) +- [Инструменты разработки и жизненного цикла ПО](Tools.md) +- [Шаблоны проектирования](Patterns.md) +- [Парадигмы программирования](Paradigms.md) +- [Метапрограммирование и мультипарадигменное программирование](Metaprogramming.md) +- [Качество, тестирование и надежность ПО](Quality.md) diff --git a/Fundamentals.md b/Fundamentals.md index 8fca639..2fda347 100644 --- a/Fundamentals.md +++ b/Fundamentals.md @@ -69,3 +69,5 @@ - Асинхронные итераторы: https://github.com/HowProgrammingWorks/Iterator - [Перечислимый тип (enum) в JavaScript и TypeScript](https://youtu.be/BXiKebOIAGI) - Примеры кода: https://github.com/HowProgrammingWorks/Enum +- [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) + - Примеры кода: https://github.com/HowProgrammingWorks/Generics From add0a98bec15b999bc9b3d4d81b7b3a181653445 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sat, 15 Jun 2019 01:32:48 +0300 Subject: [PATCH 008/515] Move courses to folder --- AlgAndData.md => Courses/AlgAndData.md | 0 Architecture.md => Courses/Architecture.md | 0 Asynchronous.md => Courses/Asynchronous.md | 0 Databases.md => Courses/Databases.md | 0 Functional.md => Courses/Functional.md | 0 Fundamentals.md => Courses/Fundamentals.md | 0 Highload.md => Courses/Highload.md | 0 Introduction.md => Courses/Introduction.md | 0 .../Metaprogramming.md | 0 Network.md => Courses/Network.md | 0 NodeJS.md => Courses/NodeJS.md | 0 OOP.md => Courses/OOP.md | 0 OS.md => Courses/OS.md | 0 Paradigms.md => Courses/Paradigms.md | 0 Parallel.md => Courses/Parallel.md | 0 Patterns.md => Courses/Patterns.md | 0 Quality.md => Courses/Quality.md | 0 Security.md => Courses/Security.md | 0 System.md => Courses/System.md | 0 Tools.md => Courses/Tools.md | 0 UI-UX.md => Courses/UI-UX.md | 0 Web.md => Courses/Web.md | 0 Exams2019.md | 16 +++---- README.md | 42 +++++++++---------- 24 files changed, 29 insertions(+), 29 deletions(-) rename AlgAndData.md => Courses/AlgAndData.md (100%) rename Architecture.md => Courses/Architecture.md (100%) rename Asynchronous.md => Courses/Asynchronous.md (100%) rename Databases.md => Courses/Databases.md (100%) rename Functional.md => Courses/Functional.md (100%) rename Fundamentals.md => Courses/Fundamentals.md (100%) rename Highload.md => Courses/Highload.md (100%) rename Introduction.md => Courses/Introduction.md (100%) rename Metaprogramming.md => Courses/Metaprogramming.md (100%) rename Network.md => Courses/Network.md (100%) rename NodeJS.md => Courses/NodeJS.md (100%) rename OOP.md => Courses/OOP.md (100%) rename OS.md => Courses/OS.md (100%) rename Paradigms.md => Courses/Paradigms.md (100%) rename Parallel.md => Courses/Parallel.md (100%) rename Patterns.md => Courses/Patterns.md (100%) rename Quality.md => Courses/Quality.md (100%) rename Security.md => Courses/Security.md (100%) rename System.md => Courses/System.md (100%) rename Tools.md => Courses/Tools.md (100%) rename UI-UX.md => Courses/UI-UX.md (100%) rename Web.md => Courses/Web.md (100%) diff --git a/AlgAndData.md b/Courses/AlgAndData.md similarity index 100% rename from AlgAndData.md rename to Courses/AlgAndData.md diff --git a/Architecture.md b/Courses/Architecture.md similarity index 100% rename from Architecture.md rename to Courses/Architecture.md diff --git a/Asynchronous.md b/Courses/Asynchronous.md similarity index 100% rename from Asynchronous.md rename to Courses/Asynchronous.md diff --git a/Databases.md b/Courses/Databases.md similarity index 100% rename from Databases.md rename to Courses/Databases.md diff --git a/Functional.md b/Courses/Functional.md similarity index 100% rename from Functional.md rename to Courses/Functional.md diff --git a/Fundamentals.md b/Courses/Fundamentals.md similarity index 100% rename from Fundamentals.md rename to Courses/Fundamentals.md diff --git a/Highload.md b/Courses/Highload.md similarity index 100% rename from Highload.md rename to Courses/Highload.md diff --git a/Introduction.md b/Courses/Introduction.md similarity index 100% rename from Introduction.md rename to Courses/Introduction.md diff --git a/Metaprogramming.md b/Courses/Metaprogramming.md similarity index 100% rename from Metaprogramming.md rename to Courses/Metaprogramming.md diff --git a/Network.md b/Courses/Network.md similarity index 100% rename from Network.md rename to Courses/Network.md diff --git a/NodeJS.md b/Courses/NodeJS.md similarity index 100% rename from NodeJS.md rename to Courses/NodeJS.md diff --git a/OOP.md b/Courses/OOP.md similarity index 100% rename from OOP.md rename to Courses/OOP.md diff --git a/OS.md b/Courses/OS.md similarity index 100% rename from OS.md rename to Courses/OS.md diff --git a/Paradigms.md b/Courses/Paradigms.md similarity index 100% rename from Paradigms.md rename to Courses/Paradigms.md diff --git a/Parallel.md b/Courses/Parallel.md similarity index 100% rename from Parallel.md rename to Courses/Parallel.md diff --git a/Patterns.md b/Courses/Patterns.md similarity index 100% rename from Patterns.md rename to Courses/Patterns.md diff --git a/Quality.md b/Courses/Quality.md similarity index 100% rename from Quality.md rename to Courses/Quality.md diff --git a/Security.md b/Courses/Security.md similarity index 100% rename from Security.md rename to Courses/Security.md diff --git a/System.md b/Courses/System.md similarity index 100% rename from System.md rename to Courses/System.md diff --git a/Tools.md b/Courses/Tools.md similarity index 100% rename from Tools.md rename to Courses/Tools.md diff --git a/UI-UX.md b/Courses/UI-UX.md similarity index 100% rename from UI-UX.md rename to Courses/UI-UX.md diff --git a/Web.md b/Courses/Web.md similarity index 100% rename from Web.md rename to Courses/Web.md diff --git a/Exams2019.md b/Exams2019.md index e6ec241..b4baaa8 100644 --- a/Exams2019.md +++ b/Exams2019.md @@ -1,10 +1,10 @@ # Экзамены: 1 курс (июнь 2019) -- [Введение и обзор знаний](Introduction.md) -- [Основы программирования](Fundamentals.md) -- [Алгоритмы и структуры данных](AlgAndData.md) -- [Инструменты разработки и жизненного цикла ПО](Tools.md) -- [Шаблоны проектирования](Patterns.md) -- [Парадигмы программирования](Paradigms.md) -- [Метапрограммирование и мультипарадигменное программирование](Metaprogramming.md) -- [Качество, тестирование и надежность ПО](Quality.md) +- [Введение и обзор знаний](Courses/Introduction.md) +- [Основы программирования](Courses/Fundamentals.md) +- [Алгоритмы и структуры данных](Courses/AlgAndData.md) +- [Инструменты разработки и жизненного цикла ПО](Courses/Tools.md) +- [Шаблоны проектирования](Courses/Patterns.md) +- [Парадигмы программирования](Courses/Paradigms.md) +- [Метапрограммирование и мультипарадигменное программирование](Courses/Metaprogramming.md) +- [Качество, тестирование и надежность ПО](Courses/Quality.md) diff --git a/README.md b/README.md index 344fac8..0cd18d5 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,38 @@ # Индекс и состояние курсов -- [Введение и обзор знаний](Introduction.md) -- [Основы программирования](Fundamentals.md) +- [Введение и обзор знаний](Courses/Introduction.md) +- [Основы программирования](Courses/Fundamentals.md) (есть много разных вариантов, нужно сводить) -- [Алгоритмы и структуры данных](AlgAndData.md) +- [Алгоритмы и структуры данных](Courses/AlgAndData.md) (есть несколько разных курсов, нужно сводить) -- [Инструменты разработки и жизненного цикла ПО](Tools.md) +- [Инструменты разработки и жизненного цикла ПО](Courses/Tools.md) (есть несколько видео-лекций) -- [Функциональное программирование](Functional.md) +- [Функциональное программирование](Courses/Functional.md) (есть 20% примеров кода и несколько видео-лекций) -- [Объектно-ориентированное программирование](OOP.md) +- [Объектно-ориентированное программирование](Courses/OOP.md) (есть 10% примеров кода и несколько видео-лекций) -- [Шаблоны проектирования](Patterns.md) +- [Шаблоны проектирования](Courses/Patterns.md) (есть 50% примеров кода и видео-лекций) -- [Операционные системы](OS.md) -- [Системное программирование](System.md) -- [Проектирование сетевых протоколов и сервисов](Network.md) +- [Операционные системы](Courses/OS.md) +- [Системное программирование](Courses/System.md) +- [Проектирование сетевых протоколов и сервисов](Courses/Network.md) (есть 50% примеров кода и несколько видео-лекций) -- [Архитектура информационных систем](Architecture.md) +- [Архитектура информационных систем](Courses/Architecture.md) (есть несколько видео-лекций) -- [Веб-технологии](Web.md) +- [Веб-технологии](Courses/Web.md) (есть 15% кода и несколько видео-лекций) -- [Асинхронное программирование](Asynchronous.md) +- [Асинхронное программирование](Courses/Asynchronous.md) (есть примеры кода и видео-лекции) -- [Параллельное программирование](Parallel.md) +- [Параллельное программирование](Courses/Parallel.md) (есть 10% примеров и несколько видео-лекций) -- [Парадигмы программирования](Paradigms.md) +- [Парадигмы программирования](Courses/Paradigms.md) (есть 50% кода и несколько видео-лекций) -- [Метапрограммирование и мультипарадигменное программирование](Metaprogramming.md) +- [Метапрограммирование и мультипарадигменное программирование](Courses/Metaprogramming.md) (есть 50% кода и несколько видео-лекций) -- [Проектирования баз данных](Databases.md) -- [Высоконагруженные и масштабируемые системы](Highload.md) +- [Проектирования баз данных](Courses/Databases.md) +- [Высоконагруженные и масштабируемые системы](Courses/Highload.md) (есть несколько видео-лекций) -- [Проектирование пользовательских интерфейсов](UI-UX.md) -- [Безопасность информационных систем](Security.md) -- [Качество, тестирование и надежность ПО](Quality.md) +- [Проектирование пользовательских интерфейсов](Courses/UI-UX.md) +- [Безопасность информационных систем](Courses/Security.md) +- [Качество, тестирование и надежность ПО](Courses/Quality.md) (есть несколько видео-лекций) From 95843d28372a0e4c097df6b08ccef01dccc2ef3a Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sat, 15 Jun 2019 01:39:15 +0300 Subject: [PATCH 009/515] Update courses status --- README.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 0cd18d5..4793946 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,13 @@ # Индекс и состояние курсов - [Введение и обзор знаний](Courses/Introduction.md) + (есть несколько видео-лекций) - [Основы программирования](Courses/Fundamentals.md) - (есть много разных вариантов, нужно сводить) + (есть до 90% материала, но нужно сводить разные варианты) - [Алгоритмы и структуры данных](Courses/AlgAndData.md) - (есть несколько разных курсов, нужно сводить) + (есть до 20% материала, нужно сводить разные варианты) - [Инструменты разработки и жизненного цикла ПО](Courses/Tools.md) - (есть несколько видео-лекций) + (есть несколько видео-лекций, нужно расширять) - [Функциональное программирование](Courses/Functional.md) (есть 20% примеров кода и несколько видео-лекций) - [Объектно-ориентированное программирование](Courses/OOP.md) @@ -14,7 +15,9 @@ - [Шаблоны проектирования](Courses/Patterns.md) (есть 50% примеров кода и видео-лекций) - [Операционные системы](Courses/OS.md) + (нужно сформировать программу) - [Системное программирование](Courses/System.md) + (нужно сформировать программу) - [Проектирование сетевых протоколов и сервисов](Courses/Network.md) (есть 50% примеров кода и несколько видео-лекций) - [Архитектура информационных систем](Courses/Architecture.md) @@ -22,17 +25,20 @@ - [Веб-технологии](Courses/Web.md) (есть 15% кода и несколько видео-лекций) - [Асинхронное программирование](Courses/Asynchronous.md) - (есть примеры кода и видео-лекции) + (есть 95% примеров кода и видео-лекции) - [Параллельное программирование](Courses/Parallel.md) (есть 10% примеров и несколько видео-лекций) - [Парадигмы программирования](Courses/Paradigms.md) (есть 50% кода и несколько видео-лекций) - [Метапрограммирование и мультипарадигменное программирование](Courses/Metaprogramming.md) (есть 50% кода и несколько видео-лекций) -- [Проектирования баз данных](Courses/Databases.md) +- [Проектирование баз данных](Courses/Databases.md) + (нужно сформировать программу) - [Высоконагруженные и масштабируемые системы](Courses/Highload.md) (есть несколько видео-лекций) - [Проектирование пользовательских интерфейсов](Courses/UI-UX.md) + (нужно сформировать программу) - [Безопасность информационных систем](Courses/Security.md) + (нужно сформировать программу) - [Качество, тестирование и надежность ПО](Courses/Quality.md) (есть несколько видео-лекций) From f69eecb37aaf4b8db0a110caead83e84cbfd992c Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Thu, 27 Jun 2019 22:53:03 +0300 Subject: [PATCH 010/515] Updat license --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 716dbfd..f1dbfed 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2017-2018 How.Programming.Works contributors +Copyright (c) 2017-2019 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 8494f841bb8dada4c6d79a2c505fd852610c3110 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Thu, 27 Jun 2019 22:54:38 +0300 Subject: [PATCH 011/515] Add NodeJS course --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 4793946..d160d84 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,8 @@ (есть несколько видео-лекций) - [Веб-технологии](Courses/Web.md) (есть 15% кода и несколько видео-лекций) +- [Технологический стек Node.js](Courses/NodeJS.md) + (есть 75% кода и видео-лекций) - [Асинхронное программирование](Courses/Asynchronous.md) (есть 95% примеров кода и видео-лекции) - [Параллельное программирование](Courses/Parallel.md) From 952776149b8a1565ad8584b8d39d7a34040b8f97 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Wed, 10 Jul 2019 14:29:22 +0300 Subject: [PATCH 012/515] Update OOP topics --- Courses/OOP.md | 4 ++++ Courses/Patterns.md | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Courses/OOP.md b/Courses/OOP.md index 2c73081..533b57a 100644 --- a/Courses/OOP.md +++ b/Courses/OOP.md @@ -3,3 +3,7 @@ - [Have Objects Failed? Или что не так с ООП?](https://youtu.be/4yO5OS0vPSw) - [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) - Примеры кода: https://github.com/HowProgrammingWorks/Generics +- Ассоциация, Агрегация и Композиция +- Принцип подстановки Барбары Лисков +- Принцип единственной ответственности +- [Шаблоны проектирования](OOP.md) diff --git a/Courses/Patterns.md b/Courses/Patterns.md index ae1d16e..b9c4ec3 100644 --- a/Courses/Patterns.md +++ b/Courses/Patterns.md @@ -1,10 +1,10 @@ # Шаблоны проектирования +- [Шаблон 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 -- [Шаблон Singleton (синглтон) в JavaScript](https://youtu.be/qdJ5yikZnfE) - - Примеры кода: https://github.com/HowProgrammingWorks/Singleton - [Фасад - петтерн для скрытия сложности](https://youtu.be/oJtBO7CystE) - Примеры кода: https://github.com/HowProgrammingWorks/Facade - [Адаптер (Adapter) - паттерн достижения совместимости](https://youtu.be/cA65McLQrR8) From af43f48f905981c79c2cdd445b6285976c995787 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Wed, 10 Jul 2019 14:45:03 +0300 Subject: [PATCH 013/515] Add new topics --- Courses/NodeJS.md | 2 ++ Courses/Web.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index c6a8483..6153bdc 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -54,3 +54,5 @@ - Примеры кода: https://github.com/HowProgrammingWorks/Logging - [Модель акторов (Actor Model)](https://youtu.be/xp5MVKEqxY4) - Примеры кода: https://github.com/HowProgrammingWorks/ActorModel +- Отдача статики в Node.js +- Graceful Shutdown в Node.js diff --git a/Courses/Web.md b/Courses/Web.md index 3923f45..504b9c4 100644 --- a/Courses/Web.md +++ b/Courses/Web.md @@ -11,3 +11,5 @@ - Примеры кода: https://github.com/HowProgrammingWorks/HttpRequest - [Разработка API на Node.js (клиент и сервер)](https://youtu.be/-az912XBCu8) - Примеры кода: https://github.com/HowProgrammingWorks/API +- Отдача статики в Node.js +- ServiceWorkers и кеширование PWA From 9b1d634e84f593817bee1e6d9e4bc2637b0c237f Mon Sep 17 00:00:00 2001 From: bakugod <47696795+bakugod@users.noreply.github.com> Date: Thu, 18 Jul 2019 18:57:55 +0300 Subject: [PATCH 014/515] Editorial fixes --- Courses/Patterns.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Patterns.md b/Courses/Patterns.md index b9c4ec3..382ccb5 100644 --- a/Courses/Patterns.md +++ b/Courses/Patterns.md @@ -5,7 +5,7 @@ - [Фабрики и пулы объектов в JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) - Фабрики: https://github.com/HowProgrammingWorks/Factory - Пулы объектов: https://github.com/HowProgrammingWorks/Pool -- [Фасад - петтерн для скрытия сложности](https://youtu.be/oJtBO7CystE) +- [Фасад - паттерн для скрытия сложности](https://youtu.be/oJtBO7CystE) - Примеры кода: https://github.com/HowProgrammingWorks/Facade - [Адаптер (Adapter) - паттерн достижения совместимости](https://youtu.be/cA65McLQrR8) - Примеры кода: https://github.com/HowProgrammingWorks/Adapter From 692eb183c81a9747df378e63fde7974b1ed6f5ad Mon Sep 17 00:00:00 2001 From: bakugod <47696795+bakugod@users.noreply.github.com> Date: Thu, 18 Jul 2019 19:00:28 +0300 Subject: [PATCH 015/515] Editorial review --- Courses/Quality.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Quality.md b/Courses/Quality.md index db53da5..40da057 100644 --- a/Courses/Quality.md +++ b/Courses/Quality.md @@ -2,7 +2,7 @@ - [Измерение производительности кода и оптимизация в JavaScript и Node.js](https://youtu.be/sanq2X7Re8o) - Примеры кода: https://github.com/HowProgrammingWorks/Benchmark -- [Тестирование: юниттесты с примерами на JavaScript](https://youtu.be/CszugIag2TA) +- [Тестирование: юнит-тесты с примерами на JavaScript](https://youtu.be/CszugIag2TA) - Примеры кода: https://github.com/HowProgrammingWorks/Testing - Примеры кода: https://github.com/HowProgrammingWorks/Unittesting - [Тестирование: системное и интеграционное тестирование на JavaScript](https://youtu.be/OuKu_6H_6gE) From 23a4912e186f5b632cd0e715506812075d205eb5 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Thu, 18 Jul 2019 23:09:20 +0300 Subject: [PATCH 016/515] Add tools --- Courses/Tools.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Courses/Tools.md b/Courses/Tools.md index 2cc0149..0422b3f 100644 --- a/Courses/Tools.md +++ b/Courses/Tools.md @@ -1,3 +1,11 @@ # Инструменты разработки и жизненного цикла ПО - [Настройка среды: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) +- Непрерывная интеграция +- Компиляция, интерпретация, оптимизация +- Системы контроля версий и пакетные менеджеры +- IDE, RAD +- CLI - command-line interface tools +- Бенчмаркинг + - [Измерение производительности кода и оптимизация в JavaScript и Node.js](https://youtu.be/sanq2X7Re8o) + - https://github.com/HowProgrammingWorks/Benchmark From b8e8f9ebb12e30f0d88686f66d7850f39db8896d Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Thu, 18 Jul 2019 23:09:32 +0300 Subject: [PATCH 017/515] Add structures and collections --- Courses/AlgAndData.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Courses/AlgAndData.md b/Courses/AlgAndData.md index 13f1b7a..2584d0e 100644 --- a/Courses/AlgAndData.md +++ b/Courses/AlgAndData.md @@ -1,5 +1,6 @@ # Алгоритмы и структуры данных +- Встроенные коллекции: массивы и объекты - [Коллекции, множества, хештаблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) - Коллекции: https://github.com/HowProgrammingWorks/Collections - Хеш таблицы: https://github.com/HowProgrammingWorks/Map @@ -7,5 +8,10 @@ - [Структуры данных: списки, стек, очередь, дэк в JavaScript](https://youtu.be/9KvA4hDDSjk) - Списки: https://github.com/HowProgrammingWorks/LinkedList - Очереди: https://github.com/HowProgrammingWorks/Dequeue +- Деревья: бинарные деревья и иерархические многосвязные структуры - [Графы и запросы к графовым структурам на JavaScript](https://youtu.be/a0W0T8Yqw3s) - Примеры кода: https://github.com/HowProgrammingWorks/Graph +- Буферизация: бубферы, списки буферов, циклические буферы +- Immutable - неизменяемые структуры данных +- Lock-free структуры данных +- CRDT - Conflict-free data types From dea562a9f52d10f27159b3ef508398be62eb3af4 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sun, 28 Jul 2019 12:13:51 +0300 Subject: [PATCH 018/515] Introduction section --- Courses/Fundamentals.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index 2fda347..cf6f088 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -1,5 +1,14 @@ # Основы программирования +- Введение в программирование + - Абстракция, модель, алгоритм, программа, синтаксис + - Значение, идентификатор, переменная и константа, литерал, присвоение + - Типы данных, скалярные, ссылочные и структурные типы + - Оператор и выражение, блок кода, функция, цикл, условие +- Введение в программирование, продолжение + - Коллекции, модули, компоненты, библиотеки, сложность, оптимизация + - Языки и парадигмы программирования, технологические стеки + - Среда разработки и отладка кода - [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) - [Базовый синтаксис JavaScript, продолжение](https://youtu.be/qa-XleqA0JU) - [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) From 5864748fd5924783254fd8f1fabdfcf19ea79e81 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sun, 28 Jul 2019 12:14:29 +0300 Subject: [PATCH 019/515] Add antipatterns --- Courses/Fundamentals.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index cf6f088..028aa1b 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -11,19 +11,23 @@ - Среда разработки и отладка кода - [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) - [Базовый синтаксис JavaScript, продолжение](https://youtu.be/qa-XleqA0JU) +- Антипаттерны общие для всех парадигм - [Функции, лямбды, контексты, замыкания в 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 +- Антипаттерны объектно-ориентированного программирования - [Композиция, каррирование, частичное применение в JavaScript](https://youtu.be/ND8KQ5xjk7o) - Частичное применение: https://github.com/HowProgrammingWorks/PartialApplication - Композиция: https://github.com/HowProgrammingWorks/Composition - [Функции высшего порядка, колбеки, события на JavaScript](https://youtu.be/1vqATwbGHnc) - Функции высшего порядка: https://github.com/HowProgrammingWorks/HigherOrderFunction - Функции обратного вызова: https://github.com/HowProgrammingWorks/Callbacks +- Антипаттерны функционального программирования - [Работа со строками, шаблонами и юникодом в JavaScript](https://youtu.be/GcopcHQkA8M) - Примеры кода: https://github.com/HowProgrammingWorks/String - [Примеси, обертки, декораторы, мемоизация в JavaScript](https://youtu.be/oRQ0kQr1N-U) From 443646c240a8c7eba5b355a10abe473faccbc1ad Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sun, 28 Jul 2019 13:02:49 +0300 Subject: [PATCH 020/515] Add links to repos --- Courses/Fundamentals.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index 028aa1b..f5e4faf 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -1,7 +1,8 @@ # Основы программирования - Введение в программирование - - Абстракция, модель, алгоритм, программа, синтаксис + - Абстракция, модель, алгоритм, программа, синтаксис, повторное использование + - [Примеры кода и задачи](https://github.com/HowProgrammingWorks/Reusable) - Значение, идентификатор, переменная и константа, литерал, присвоение - Типы данных, скалярные, ссылочные и структурные типы - Оператор и выражение, блок кода, функция, цикл, условие @@ -10,7 +11,10 @@ - Языки и парадигмы программирования, технологические стеки - Среда разработки и отладка кода - [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) + - [Примеры кода и задачи](https://github.com/HowProgrammingWorks/Cheatsheet) - [Базовый синтаксис JavaScript, продолжение](https://youtu.be/qa-XleqA0JU) + - [Типы данных](https://github.com/HowProgrammingWorks/DataTypes) + - [Условия](https://github.com/HowProgrammingWorks/Conditional) - Антипаттерны общие для всех парадигм - [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) - Функции: https://github.com/HowProgrammingWorks/Function From 019b6de79a387842b99eeda457d4d5c28dd8ee1b Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sun, 28 Jul 2019 19:13:18 +0300 Subject: [PATCH 021/515] Reorder examples --- Courses/Fundamentals.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index f5e4faf..27d405a 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -2,7 +2,6 @@ - Введение в программирование - Абстракция, модель, алгоритм, программа, синтаксис, повторное использование - - [Примеры кода и задачи](https://github.com/HowProgrammingWorks/Reusable) - Значение, идентификатор, переменная и константа, литерал, присвоение - Типы данных, скалярные, ссылочные и структурные типы - Оператор и выражение, блок кода, функция, цикл, условие @@ -11,7 +10,9 @@ - Языки и парадигмы программирования, технологические стеки - Среда разработки и отладка кода - [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) - - [Примеры кода и задачи](https://github.com/HowProgrammingWorks/Cheatsheet) + - Примеры кода и задачи + - https://github.com/HowProgrammingWorks/Reusable + - https://github.com/HowProgrammingWorks/Cheatsheet - [Базовый синтаксис JavaScript, продолжение](https://youtu.be/qa-XleqA0JU) - [Типы данных](https://github.com/HowProgrammingWorks/DataTypes) - [Условия](https://github.com/HowProgrammingWorks/Conditional) From cce03baba8b421933026fec4734e59b6e71dff79 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sun, 28 Jul 2019 19:44:38 +0300 Subject: [PATCH 022/515] Add tasks for introduction --- Courses/Fundamentals.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index 27d405a..01ebea1 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -9,6 +9,7 @@ - Коллекции, модули, компоненты, библиотеки, сложность, оптимизация - Языки и парадигмы программирования, технологические стеки - Среда разработки и отладка кода + - Примеры кода и задачи: https://github.com/HowProgrammingWorks/Introduction - [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) - Примеры кода и задачи - https://github.com/HowProgrammingWorks/Reusable From 329a46850af50ede007b13ea370c816b7e1b3ec1 Mon Sep 17 00:00:00 2001 From: Andrew Date: Tue, 30 Jul 2019 01:12:28 +0300 Subject: [PATCH 023/515] Added Dynamic programming proposal Added Dynamic programming proposal for algorithms section --- Courses/AlgAndData.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/AlgAndData.md b/Courses/AlgAndData.md index 2584d0e..ed66b9e 100644 --- a/Courses/AlgAndData.md +++ b/Courses/AlgAndData.md @@ -15,3 +15,4 @@ - Immutable - неизменяемые структуры данных - Lock-free структуры данных - CRDT - Conflict-free data types +- Динамическое программирование From 2ac7c8bd7e0e5e985b1080605dfd8309961aa8e0 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Thu, 1 Aug 2019 23:51:44 +0300 Subject: [PATCH 024/515] Add links to antipatterns repos --- Courses/Fundamentals.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index 01ebea1..6a28afe 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -18,10 +18,12 @@ - [Типы данных](https://github.com/HowProgrammingWorks/DataTypes) - [Условия](https://github.com/HowProgrammingWorks/Conditional) - Антипаттерны общие для всех парадигм + - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/01-Common - [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) - Функции: https://github.com/HowProgrammingWorks/Function - Замыкания: https://github.com/HowProgrammingWorks/Closure - Антипаттерны процедурного программирования + - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/02-Procedural - [Массивы, объекты, классы, прототипы в JavaScript](https://youtu.be/VBMGnAPfmsY) - Структуры данных: https://github.com/HowProgrammingWorks/DataStructures - Итерирование: https://github.com/HowProgrammingWorks/Iteration From 12fdbf61ff91eac4dcc5069f8fcbd64c348b5d20 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Thu, 1 Aug 2019 23:56:28 +0300 Subject: [PATCH 025/515] Add OOP antipatterns --- Courses/Fundamentals.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index 6a28afe..3e9cf9f 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -29,6 +29,7 @@ - Итерирование: https://github.com/HowProgrammingWorks/Iteration - Прототипы: https://github.com/HowProgrammingWorks/Prototype - Антипаттерны объектно-ориентированного программирования + - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/03-OOP - [Композиция, каррирование, частичное применение в JavaScript](https://youtu.be/ND8KQ5xjk7o) - Частичное применение: https://github.com/HowProgrammingWorks/PartialApplication - Композиция: https://github.com/HowProgrammingWorks/Composition From f9f3e5cb6bb115fb378358ff9767e0c11ad12fc7 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sat, 3 Aug 2019 23:39:15 +0300 Subject: [PATCH 026/515] Add labels for new lectures --- Courses/Fundamentals.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index 3e9cf9f..01f7042 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -1,11 +1,11 @@ # Основы программирования -- Введение в программирование +- Введение в программирование (готовится) - Абстракция, модель, алгоритм, программа, синтаксис, повторное использование - Значение, идентификатор, переменная и константа, литерал, присвоение - Типы данных, скалярные, ссылочные и структурные типы - Оператор и выражение, блок кода, функция, цикл, условие -- Введение в программирование, продолжение +- Введение в программирование, продолжение (готовится) - Коллекции, модули, компоненты, библиотеки, сложность, оптимизация - Языки и парадигмы программирования, технологические стеки - Среда разработки и отладка кода @@ -17,18 +17,18 @@ - [Базовый синтаксис JavaScript, продолжение](https://youtu.be/qa-XleqA0JU) - [Типы данных](https://github.com/HowProgrammingWorks/DataTypes) - [Условия](https://github.com/HowProgrammingWorks/Conditional) -- Антипаттерны общие для всех парадигм +- Антипаттерны общие для всех парадигм (готовится) - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/01-Common - [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) - Функции: https://github.com/HowProgrammingWorks/Function - Замыкания: https://github.com/HowProgrammingWorks/Closure -- Антипаттерны процедурного программирования +- Антипаттерны процедурного программирования (готовится) - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/02-Procedural - [Массивы, объекты, классы, прототипы в JavaScript](https://youtu.be/VBMGnAPfmsY) - Структуры данных: https://github.com/HowProgrammingWorks/DataStructures - Итерирование: https://github.com/HowProgrammingWorks/Iteration - Прототипы: https://github.com/HowProgrammingWorks/Prototype -- Антипаттерны объектно-ориентированного программирования +- Антипаттерны объектно-ориентированного программирования (готовится) - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/03-OOP - [Композиция, каррирование, частичное применение в JavaScript](https://youtu.be/ND8KQ5xjk7o) - Частичное применение: https://github.com/HowProgrammingWorks/PartialApplication @@ -36,7 +36,7 @@ - [Функции высшего порядка, колбеки, события на JavaScript](https://youtu.be/1vqATwbGHnc) - Функции высшего порядка: https://github.com/HowProgrammingWorks/HigherOrderFunction - Функции обратного вызова: https://github.com/HowProgrammingWorks/Callbacks -- Антипаттерны функционального программирования +- Антипаттерны функционального программирования (готовится) - [Работа со строками, шаблонами и юникодом в JavaScript](https://youtu.be/GcopcHQkA8M) - Примеры кода: https://github.com/HowProgrammingWorks/String - [Примеси, обертки, декораторы, мемоизация в JavaScript](https://youtu.be/oRQ0kQr1N-U) From 43108195356959116e4964760cf0eca330b90c35 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sat, 3 Aug 2019 23:43:26 +0300 Subject: [PATCH 027/515] Add OOP topics --- Courses/OOP.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Courses/OOP.md b/Courses/OOP.md index 533b57a..b82dc45 100644 --- a/Courses/OOP.md +++ b/Courses/OOP.md @@ -3,7 +3,7 @@ - [Have Objects Failed? Или что не так с ООП?](https://youtu.be/4yO5OS0vPSw) - [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) - Примеры кода: https://github.com/HowProgrammingWorks/Generics -- Ассоциация, Агрегация и Композиция -- Принцип подстановки Барбары Лисков -- Принцип единственной ответственности +- Ассоциация, Агрегация и Композиция (готовится) +- Принцип подстановки Барбары Лисков (готовится) +- Принцип единственной ответственности (готовится) - [Шаблоны проектирования](OOP.md) From 44b8f513b9f7f1123ba4294d01da4efbac8cdd45 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sat, 3 Aug 2019 23:45:36 +0300 Subject: [PATCH 028/515] Fix link --- Courses/OOP.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/OOP.md b/Courses/OOP.md index b82dc45..6c652be 100644 --- a/Courses/OOP.md +++ b/Courses/OOP.md @@ -6,4 +6,4 @@ - Ассоциация, Агрегация и Композиция (готовится) - Принцип подстановки Барбары Лисков (готовится) - Принцип единственной ответственности (готовится) -- [Шаблоны проектирования](OOP.md) +- [Шаблоны проектирования](Patterns.md) From 4d0e1199a97f46de35f12ea9f6bff30af978d10b Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sat, 3 Aug 2019 23:46:30 +0300 Subject: [PATCH 029/515] Mark new topics --- Courses/AlgAndData.md | 8 ++++---- Courses/Network.md | 1 + Courses/NodeJS.md | 4 ++-- Courses/Web.md | 4 ++-- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Courses/AlgAndData.md b/Courses/AlgAndData.md index ed66b9e..3cefa33 100644 --- a/Courses/AlgAndData.md +++ b/Courses/AlgAndData.md @@ -12,7 +12,7 @@ - [Графы и запросы к графовым структурам на JavaScript](https://youtu.be/a0W0T8Yqw3s) - Примеры кода: https://github.com/HowProgrammingWorks/Graph - Буферизация: бубферы, списки буферов, циклические буферы -- Immutable - неизменяемые структуры данных -- Lock-free структуры данных -- CRDT - Conflict-free data types -- Динамическое программирование +- Immutable - неизменяемые структуры данных (готовится) +- Lock-free структуры данных (готовится) +- CRDT - Conflict-free data types (готовится) +- Динамическое программирование (готовится) diff --git a/Courses/Network.md b/Courses/Network.md index 3ee41e9..0fa42df 100644 --- a/Courses/Network.md +++ b/Courses/Network.md @@ -16,3 +16,4 @@ - CQS: https://github.com/HowProgrammingWorks/CQS - CQRS: https://github.com/HowProgrammingWorks/CQRS - EventSourcing: https://github.com/HowProgrammingWorks/EventSourcing +- Примерение EventSourcing (готовится) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index 6153bdc..e3914e4 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -54,5 +54,5 @@ - Примеры кода: https://github.com/HowProgrammingWorks/Logging - [Модель акторов (Actor Model)](https://youtu.be/xp5MVKEqxY4) - Примеры кода: https://github.com/HowProgrammingWorks/ActorModel -- Отдача статики в Node.js -- Graceful Shutdown в Node.js +- Отдача статики в Node.js (готовится) +- Graceful Shutdown в Node.js (готовится) diff --git a/Courses/Web.md b/Courses/Web.md index 504b9c4..160418b 100644 --- a/Courses/Web.md +++ b/Courses/Web.md @@ -11,5 +11,5 @@ - Примеры кода: https://github.com/HowProgrammingWorks/HttpRequest - [Разработка API на Node.js (клиент и сервер)](https://youtu.be/-az912XBCu8) - Примеры кода: https://github.com/HowProgrammingWorks/API -- Отдача статики в Node.js -- ServiceWorkers и кеширование PWA +- Отдача статики в Node.js (готовится) +- ServiceWorkers и кеширование PWA (готовится) From 36f55dbb878afeb6325c92053ff294712f650393 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sat, 3 Aug 2019 23:57:51 +0300 Subject: [PATCH 030/515] Add calendar for 2019-2020 --- Calendar.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 Calendar.md diff --git a/Calendar.md b/Calendar.md new file mode 100644 index 0000000..3be4c7f --- /dev/null +++ b/Calendar.md @@ -0,0 +1,8 @@ +# Расписание на 2019-2020 + +- Введение в программирование +- Введение в программирование, продолжение +- Антипаттерны общие для всех парадигм +- Антипаттерны процедурного программирования +- Антипаттерны объектно-ориентированного программирования +- Антипаттерны функционального программирования From c15597b34f332ff2b7d378e69b909f2382702960 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sat, 3 Aug 2019 23:59:10 +0300 Subject: [PATCH 031/515] Add lectures to calendar --- Calendar.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Calendar.md b/Calendar.md index 3be4c7f..0978ebd 100644 --- a/Calendar.md +++ b/Calendar.md @@ -6,3 +6,7 @@ - Антипаттерны процедурного программирования - Антипаттерны объектно-ориентированного программирования - Антипаттерны функционального программирования +- Immutable - неизменяемые структуры данных +- Lock-free структуры данных +- CRDT - Conflict-free data types +- Динамическое программирование From 906ed0345825d21f01ca19b5969f0cc3776ef449 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sun, 4 Aug 2019 02:32:07 +0300 Subject: [PATCH 032/515] Add dates and more topics --- Calendar.md | 39 ++++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/Calendar.md b/Calendar.md index 0978ebd..fe94f21 100644 --- a/Calendar.md +++ b/Calendar.md @@ -1,12 +1,41 @@ # Расписание на 2019-2020 -- Введение в программирование -- Введение в программирование, продолжение -- Антипаттерны общие для всех парадигм -- Антипаттерны процедурного программирования -- Антипаттерны объектно-ориентированного программирования +## Запланированные + +- вт 03 cен: Введение в программирование +- чт 05 сен: Антипаттерны общие для всех парадигм +- вт 10 сен: Введение в программирование, продолжение +- чт 12 сен: Антипаттерны общие для всех парадигм +- вт 17 сен: Языки программирования +- чт 19 сен: Антипаттерны процедурного программирования +- вт 24 сен: Парадигмы программирования +- чт 26 сен: Антипаттерны объектно-ориентированного программирования +- вт 01 окт: Code Review +- чт 03 окт: Graceful Shutdown в Node.js +- вт 08 окт: Рефакторинг +- чт 10 отк: Ассоциация, Агрегация и Композиция +- вт 15 отк: Мономорфные функции +- чт 17 отк: Отдача статики в Node.js +- вт 22 отк: Массивы в JavaScript +- чт 24 отк: Принцип единственной ответственности +- вт 29 отк: Прототипное программирование +- чт 31 отк: ServiceWorkers и кеширование PWA +- вт 05 ноя: JavaScript в браузере +- чт 07 ноя: Принцип подстановки Барбары Лисков +- вт 12 ноя: Примеси в JavaScript, Мемоизация в JavaScript +- чт 14 ноя: Применение EventSourcing +- вт 19 ноя: Обертки и декораторы в JavaScript и TypeScript +- чт 21 ноя: Отправка Email из Node.js, GeoIP в Node.js +- вт 26 ноя: Новое в JavaScript +- чт 28 ноя: Безопасность приложений Node.js +- вт 03 дек: Обзор Web API +- чт 05 дек: Изоляция запросов в Node.js + +## Очередь + - Антипаттерны функционального программирования - Immutable - неизменяемые структуры данных - Lock-free структуры данных - CRDT - Conflict-free data types - Динамическое программирование +- CAP-теорема From 78d8a3210dfa5b69026af1712f60f1d5bd5e8c57 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Tue, 6 Aug 2019 03:31:58 +0300 Subject: [PATCH 033/515] Reorder lectures --- Calendar.md | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/Calendar.md b/Calendar.md index fe94f21..d500d17 100644 --- a/Calendar.md +++ b/Calendar.md @@ -3,32 +3,32 @@ ## Запланированные - вт 03 cен: Введение в программирование -- чт 05 сен: Антипаттерны общие для всех парадигм +- чт 05 сен: Node.js в 2019 году - вт 10 сен: Введение в программирование, продолжение -- чт 12 сен: Антипаттерны общие для всех парадигм +- чт 12 сен: Graceful Shutdown в Node.js - вт 17 сен: Языки программирования -- чт 19 сен: Антипаттерны процедурного программирования +- чт 19 сен: Отдача статики в Node.js - вт 24 сен: Парадигмы программирования -- чт 26 сен: Антипаттерны объектно-ориентированного программирования -- вт 01 окт: Code Review -- чт 03 окт: Graceful Shutdown в Node.js -- вт 08 окт: Рефакторинг -- чт 10 отк: Ассоциация, Агрегация и Композиция -- вт 15 отк: Мономорфные функции -- чт 17 отк: Отдача статики в Node.js -- вт 22 отк: Массивы в JavaScript -- чт 24 отк: Принцип единственной ответственности -- вт 29 отк: Прототипное программирование -- чт 31 отк: ServiceWorkers и кеширование PWA -- вт 05 ноя: JavaScript в браузере +- чт 26 сен: Применение EventSourcing +- вт 01 окт: Антипаттерны общие для всех парадигм +- чт 03 окт: ServiceWorkers и кеширование PWA +- вт 08 окт: Антипаттерны процедурного программирования +- чт 10 отк: JavaScript в браузере +- вт 15 отк: Массивы в JavaScript +- чт 17 отк: Принцип единственной ответственности +- вт 22 отк: Code Review +- чт 24 отк: Обзор Web API +- вт 29 отк: Мономорфные функции +- чт 31 отк: Ассоциация, Агрегация и Композиция +- вт 05 ноя: Рефакторинг - чт 07 ноя: Принцип подстановки Барбары Лисков -- вт 12 ноя: Примеси в JavaScript, Мемоизация в JavaScript -- чт 14 ноя: Применение EventSourcing -- вт 19 ноя: Обертки и декораторы в JavaScript и TypeScript +- вт 12 ноя: Прототипное программирование +- чт 14 ноя: Антипаттерны объектно-ориентированного программирования +- вт 19 ноя: Примеси в JavaScript, Мемоизация в JavaScript - чт 21 ноя: Отправка Email из Node.js, GeoIP в Node.js -- вт 26 ноя: Новое в JavaScript +- вт 26 ноя: Обертки и декораторы в JavaScript и TypeScript - чт 28 ноя: Безопасность приложений Node.js -- вт 03 дек: Обзор Web API +- вт 03 дек: Новое в JavaScript - чт 05 дек: Изоляция запросов в Node.js ## Очередь From cbcc696cb5f34d128146ca3743333793078321e7 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Tue, 6 Aug 2019 04:12:53 +0300 Subject: [PATCH 034/515] IP9X plan --- IP9X.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 IP9X.md diff --git a/IP9X.md b/IP9X.md new file mode 100644 index 0000000..45190fd --- /dev/null +++ b/IP9X.md @@ -0,0 +1,49 @@ +# Программа IP9X на 1 семестр + +- вт 03 cен 16:10: Лекция: Введение в программирование +- вт 03 сен 17:30: Семинар: Обсуждение плана и материалов курса +- видео: [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) +- видео: [Базовый синтаксис JavaScript, продолжение](https://youtu.be/qa-XleqA0JU) +- вт 10 сен 16:10: Лекция: Введение в программирование, продолжение +- вт 10 сен 17:30: Семинар: Ответы на вопросы +- видео: [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) +- видео: [Массивы, объекты, классы, прототипы в JavaScript](https://youtu.be/VBMGnAPfmsY) +- вт 17 сен 16:10: Лекция: Языки программирования +- вт 17 сен 17:30: Семинар: JavaScript как ассемблер нашего времени +- видео: [Композиция, каррирование, частичное применение в JavaScript](https://youtu.be/ND8KQ5xjk7o) +- видео: [Функции высшего порядка, колбеки, события на JavaScript](https://youtu.be/1vqATwbGHnc) +- вт 24 сен 16:10: Лекция: Парадигмы программирования +- вт 24 сен 17:30: Семинар: История развития программирования +- видео: [Работа со строками, шаблонами и юникодом в JavaScript](https://youtu.be/GcopcHQkA8M) +- видео: [Примеси, обертки, декораторы, мемоизация в JavaScript](https://youtu.be/oRQ0kQr1N-U) +- вт 01 окт 16:10: Лекция: Антипаттерны общие для всех парадигм +- вт 01 окт 17:30: Семинар: Качество и красота кода +- видео: [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) +- видео: [Рекурсия: косвенная и хвостовая, стек, выход](https://youtu.be/W2skCjIgVKE) +- видео: [Итерирование, циклы и итераторы в JavaScript](https://youtu.be/lq3b5_UGJas) +- вт 08 окт 16:10: Лекция: Антипаттерны процедурного программирования +- вт 08 окт 17:30: Семинар: Как освоить сложный материал +- видео: [Таймеры, таймауты и EventEmitter](https://youtu.be/LK2jveAnRNg) +- видео: [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) +- видео: [Реактивное программирование на JavaScript](https://youtu.be/7MH8-qQc-48) +- вт 15 отк 16:10: Лекция: Массивы в JavaScript +- видео: [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) +- видео: [Коллекции, множества, хештаблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) +- вт 22 отк 16:10: Лекция: Code Review +- вт 22 окт 17:30: Семинар: Процесс разработки +- видео: [Структуры данных: списки, стек, очередь, дэк в JavaScript](https://youtu.be/9KvA4hDDSjk) +- вт 29 отк 16:10: Лекция: Мономорфные функции +- видео: [Сериализация и десериализация в JavaScript и Node.js](https://youtu.be/GtKPniOEzh8) +- вт 05 ноя 16:10: Лекция: Рефакторинг +- вт 05 ноя 17:30: Семинар: Выбор направления в программировании +- видео: [Proxy и Symbol в JavaScript](https://youtu.be/UjZjSDyi9AM) +- вт 12 ноя 16:10: Лекция: Прототипное программирование +- видео: [Регулярные выражения и парсинг в JavaScript](https://youtu.be/-ef2E0ozxao) +- вт 19 ноя 16:10: Лекция: Примеси в JavaScript, Мемоизация в JavaScript +- вт 19 ноя 17:30: Семинар: Как устроен ИТ-бизнес +- видео: [Фабрики и пулы объектов в JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) +- вт 26 ноя 16:10: Лекция: Обертки и декораторы в JavaScript и TypeScript +- вт 26 ноя 17:30: Семинар: Какие бы языки и технологии еще освоить +- видео: [Типизированные массивы в JavaScript](https://youtu.be/tTNcqxbxhfY) +- вт 03 дек 16:10: Лекция: Новое в JavaScript +- вт 03 дек 17:30: Семинар: Обзор материала и как готовиться к экзамену From f8fbaf357f8b206beeb224715a7101c7623fe5ff Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Wed, 14 Aug 2019 23:40:47 +0300 Subject: [PATCH 035/515] Remove prev exams --- Exams2019.md | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 Exams2019.md diff --git a/Exams2019.md b/Exams2019.md deleted file mode 100644 index b4baaa8..0000000 --- a/Exams2019.md +++ /dev/null @@ -1,10 +0,0 @@ -# Экзамены: 1 курс (июнь 2019) - -- [Введение и обзор знаний](Courses/Introduction.md) -- [Основы программирования](Courses/Fundamentals.md) -- [Алгоритмы и структуры данных](Courses/AlgAndData.md) -- [Инструменты разработки и жизненного цикла ПО](Courses/Tools.md) -- [Шаблоны проектирования](Courses/Patterns.md) -- [Парадигмы программирования](Courses/Paradigms.md) -- [Метапрограммирование и мультипарадигменное программирование](Courses/Metaprogramming.md) -- [Качество, тестирование и надежность ПО](Courses/Quality.md) From db9116b3098878e4fb00646ba2eb50964a12bcaa Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Wed, 14 Aug 2019 23:50:25 +0300 Subject: [PATCH 036/515] Update Node.js lectures list --- Courses/NodeJS.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index e3914e4..8689667 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -1,6 +1,9 @@ # Технологический стек Node.js +Видеолекций: 23, еще готовится в 2019 году: 8. + - [Node.js Введение в технологию](https://youtu.be/WBcHgaoHh1k) +- Node.js в 2019 году (готовится, 05 сентября 2019) - [Обзор встроенного Node.js API](https://youtu.be/sOkjR-N6IAs) - [Модули, слои, структура проекта, песочницы в JavaScript и Node.js](https://youtu.be/O7A9chb573E) - Пример проекта: https://github.com/HowProgrammingWorks/Project @@ -50,9 +53,14 @@ - CQS: https://github.com/HowProgrammingWorks/CQS - CQRS: https://github.com/HowProgrammingWorks/CQRS - EventSourcing: https://github.com/HowProgrammingWorks/EventSourcing +- Применение EventSourcing (готовится, 26 сентября 2019) - [Логирование на Node.js и JavaScript](https://youtu.be/4DkZj2Cdokc) - Примеры кода: https://github.com/HowProgrammingWorks/Logging - [Модель акторов (Actor Model)](https://youtu.be/xp5MVKEqxY4) - Примеры кода: https://github.com/HowProgrammingWorks/ActorModel -- Отдача статики в Node.js (готовится) -- Graceful Shutdown в Node.js (готовится) +- Отдача статики в Node.js (готовится, 19 сентября 2019) +- Graceful Shutdown в Node.js (готовится, 12 сентября 2019) +- Отправка Email из Node.js (готовится, 21 ноября 2019) +- GeoIP в Node.js (готовится, 21 ноября 2019) +- Безопасность приложений Node.js (готовится, 28 ноября 2019) +- Изоляция запросов в Node.js (готовится, 05 декабря 2019) From b4ee607c602af4d43b74eca68a81119ba1966f95 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Wed, 14 Aug 2019 23:52:36 +0300 Subject: [PATCH 037/515] Add JS Fest 2019 Spring --- Courses/NodeJS.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index 8689667..93c529e 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -39,6 +39,8 @@ - [Семафоры и мьютексы в JavaScript и Node.js](https://youtu.be/JNLrITevhRI) - Семафоры: https://github.com/HowProgrammingWorks/Semaphore - Мьютексы: https://github.com/HowProgrammingWorks/Mutex +- [Разделяемая память в многопоточном Node.js](https://youtu.be/KNsm_iIQt7U) - +доклад на конференции JS Fest 2019 Spring - [Необработанные ошибки в промисах](https://youtu.be/1Ml5NE2fsZ8) - Примеры кода: https://github.com/HowProgrammingWorks/PromiseError - [HTTP сессии и cookies на чистом Node.js](https://youtu.be/T_wKXuWW4Wo) From 09e646c08159526f7818f7618ea2e7cd97240b25 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sun, 18 Aug 2019 04:41:17 +0300 Subject: [PATCH 038/515] Add topics for concurrent programming --- Calendar.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Calendar.md b/Calendar.md index d500d17..f7e58de 100644 --- a/Calendar.md +++ b/Calendar.md @@ -39,3 +39,5 @@ - CRDT - Conflict-free data types - Динамическое программирование - CAP-теорема +- Состояние гонки и взаимные блокировки в асинхронном программировании +- Состояние гонки и взаимные блокировки в параллельном программировании From 5e3f734c18c6b9d64291d2145e04886a5c205b76 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 18 Aug 2019 20:06:19 +0200 Subject: [PATCH 039/515] Add jsfest video --- Courses/Asynchronous.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Asynchronous.md b/Courses/Asynchronous.md index 51fe138..5a92906 100644 --- a/Courses/Asynchronous.md +++ b/Courses/Asynchronous.md @@ -75,3 +75,4 @@ - Примеры кода: https://github.com/HowProgrammingWorks/Rx - Асинхронные обработчики событий и AsyncEmitter - Async hooks +- [Разделяемая память в многопоточном Node.js](https://youtu.be/KNsm_iIQt7U) From da2a2a109e636d2a10757f5491890f6ce8e7ed23 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 18 Aug 2019 20:07:29 +0200 Subject: [PATCH 040/515] Add link --- Courses/Parallel.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Parallel.md b/Courses/Parallel.md index b2d8eaf..b12a089 100644 --- a/Courses/Parallel.md +++ b/Courses/Parallel.md @@ -28,3 +28,4 @@ - Мьютексы: https://github.com/HowProgrammingWorks/Mutex - [Модель акторов (Actor Model)](https://youtu.be/xp5MVKEqxY4) - Примеры кода: https://github.com/HowProgrammingWorks/ActorModel +- [Разделяемая память в многопоточном Node.js](https://youtu.be/KNsm_iIQt7U) From bf2050655d5b7e8163f2c9307705b923101c422b Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Thu, 29 Aug 2019 23:15:01 +0300 Subject: [PATCH 041/515] Add NodeUA calendar --- NodeUA.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 NodeUA.md diff --git a/NodeUA.md b/NodeUA.md new file mode 100644 index 0000000..701a095 --- /dev/null +++ b/NodeUA.md @@ -0,0 +1,16 @@ +# Расписание NodeUA на 2019-2020 + +- чт 05 сен: Node.js в 2019 году +- чт 12 сен: Graceful Shutdown в Node.js +- чт 19 сен: Отдача статики в Node.js +- чт 26 сен: Применение EventSourcing +- чт 03 окт: ServiceWorkers и кеширование PWA +- чт 10 отк: JavaScript в браузере +- чт 17 отк: Принцип единственной ответственности +- чт 24 отк: Обзор Web API +- чт 31 отк: Ассоциация, Агрегация и Композиция +- чт 07 ноя: Принцип подстановки Барбары Лисков +- чт 14 ноя: Антипаттерны объектно-ориентированного программирования +- чт 21 ноя: Отправка Email из Node.js, GeoIP в Node.js +- чт 28 ноя: Безопасность приложений Node.js +- чт 05 дек: Изоляция запросов в Node.js From 96793689fe559e896f88956473a6f405db2422c3 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Fri, 30 Aug 2019 23:30:45 +0300 Subject: [PATCH 042/515] Add links to repos --- IP9X.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/IP9X.md b/IP9X.md index 45190fd..e33a701 100644 --- a/IP9X.md +++ b/IP9X.md @@ -3,7 +3,12 @@ - вт 03 cен 16:10: Лекция: Введение в программирование - вт 03 сен 17:30: Семинар: Обсуждение плана и материалов курса - видео: [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) +- примеры и задачи: + [Cheatsheet](https://github.com/HowProgrammingWorks/Cheatsheet) - видео: [Базовый синтаксис JavaScript, продолжение](https://youtu.be/qa-XleqA0JU) +- примеры и задачи: + [DataTypes](https://github.com/HowProgrammingWorks/DataTypes), + [Conditional](https://github.com/HowProgrammingWorks/Conditional) - вт 10 сен 16:10: Лекция: Введение в программирование, продолжение - вт 10 сен 17:30: Семинар: Ответы на вопросы - видео: [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) From 5f65d959dfee9bdf225db99ea9a724e305720093 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sun, 1 Sep 2019 02:28:57 +0300 Subject: [PATCH 043/515] Link to [Reusable] --- IP9X.md | 1 + 1 file changed, 1 insertion(+) diff --git a/IP9X.md b/IP9X.md index e33a701..1229e70 100644 --- a/IP9X.md +++ b/IP9X.md @@ -4,6 +4,7 @@ - вт 03 сен 17:30: Семинар: Обсуждение плана и материалов курса - видео: [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) - примеры и задачи: + [Reusable](https://github.com/HowProgrammingWorks/Reusable), [Cheatsheet](https://github.com/HowProgrammingWorks/Cheatsheet) - видео: [Базовый синтаксис JavaScript, продолжение](https://youtu.be/qa-XleqA0JU) - примеры и задачи: From 874f81b173f81ea7772fd393a3cb19b0f79aee6c Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Mon, 2 Sep 2019 15:00:49 +0300 Subject: [PATCH 044/515] Add env setup --- IP9X.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/IP9X.md b/IP9X.md index 1229e70..1ea6083 100644 --- a/IP9X.md +++ b/IP9X.md @@ -2,6 +2,8 @@ - вт 03 cен 16:10: Лекция: Введение в программирование - вт 03 сен 17:30: Семинар: Обсуждение плана и материалов курса +- видео: [Настройка среды: Node.js, npm, git, eslint(]https://youtu.be/hSyA7tcNaCE) +- задачи по настройке среды: [Exercises.ru.md](https://github.com/HowProgrammingWorks/Introduction/blob/master/Exercises.ru.md) - видео: [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) - примеры и задачи: [Reusable](https://github.com/HowProgrammingWorks/Reusable), From bbd5852050b8772e52aa918b76e3b45eefb7fead Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Tue, 3 Sep 2019 15:31:02 +0300 Subject: [PATCH 045/515] Fix broken link --- IP9X.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IP9X.md b/IP9X.md index 1ea6083..332353e 100644 --- a/IP9X.md +++ b/IP9X.md @@ -2,8 +2,8 @@ - вт 03 cен 16:10: Лекция: Введение в программирование - вт 03 сен 17:30: Семинар: Обсуждение плана и материалов курса -- видео: [Настройка среды: Node.js, npm, git, eslint(]https://youtu.be/hSyA7tcNaCE) -- задачи по настройке среды: [Exercises.ru.md](https://github.com/HowProgrammingWorks/Introduction/blob/master/Exercises.ru.md) +- видео: [Настройка среды: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) +- настройка среды: [Exercises.ru.md](https://github.com/HowProgrammingWorks/Introduction/blob/master/Exercises.ru.md) - видео: [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) - примеры и задачи: [Reusable](https://github.com/HowProgrammingWorks/Reusable), From 12919a77899e13c2cc7d0d9d34cdc2e85f92dd7c Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Wed, 4 Sep 2019 01:43:18 +0300 Subject: [PATCH 046/515] Add links to Sep 3rd lectures --- Courses/Fundamentals.md | 2 +- IP9X.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index 01f7042..a5665a0 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -1,6 +1,6 @@ # Основы программирования -- Введение в программирование (готовится) +- [Введение в программирование](https://youtu.be/5Gt61EX6HZ4) - Абстракция, модель, алгоритм, программа, синтаксис, повторное использование - Значение, идентификатор, переменная и константа, литерал, присвоение - Типы данных, скалярные, ссылочные и структурные типы diff --git a/IP9X.md b/IP9X.md index 332353e..e828d1e 100644 --- a/IP9X.md +++ b/IP9X.md @@ -1,7 +1,7 @@ # Программа IP9X на 1 семестр -- вт 03 cен 16:10: Лекция: Введение в программирование -- вт 03 сен 17:30: Семинар: Обсуждение плана и материалов курса +- вт 03 cен 16:10: [Лекция: Введение в программирование](https://youtu.be/5Gt61EX6HZ4) +- вт 03 сен 17:30: [Семинар: Обсуждение плана и материалов курса](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) - видео: [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) From 858328f0d5aa77129aa56922bcadcacb910b6295 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Wed, 4 Sep 2019 02:21:33 +0300 Subject: [PATCH 047/515] Add workshops --- IP9X.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/IP9X.md b/IP9X.md index e828d1e..a5a106c 100644 --- a/IP9X.md +++ b/IP9X.md @@ -1,8 +1,11 @@ # Программа IP9X на 1 семестр - вт 03 cен 16:10: [Лекция: Введение в программирование](https://youtu.be/5Gt61EX6HZ4) +- вт 03 cен 14:15: [Основы программирования для групп ИП-93, 94, 95](https://youtu.be/5Gt61EX6HZ4) + (это для студентов КПИ 1 курса, но может быть полезно и для IP9X) - вт 03 сен 17:30: [Семинар: Обсуждение плана и материалов курса](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) - видео: [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) - примеры и задачи: @@ -12,6 +15,7 @@ - примеры и задачи: [DataTypes](https://github.com/HowProgrammingWorks/DataTypes), [Conditional](https://github.com/HowProgrammingWorks/Conditional) +- вт 10 cен 14:15: Семинар: Базовый синтаксис JavaScript (для групп ИП-93, 94, 95) - вт 10 сен 16:10: Лекция: Введение в программирование, продолжение - вт 10 сен 17:30: Семинар: Ответы на вопросы - видео: [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) From 22b426533cc56b60e9876afbe8f80dc4f93bc973 Mon Sep 17 00:00:00 2001 From: Infant Frontender <34810942+newbornfrontender@users.noreply.github.com> Date: Wed, 4 Sep 2019 19:19:39 +0300 Subject: [PATCH 048/515] Fix broken url --- IP9X.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IP9X.md b/IP9X.md index a5a106c..e87af82 100644 --- a/IP9X.md +++ b/IP9X.md @@ -1,7 +1,7 @@ # Программа IP9X на 1 семестр - вт 03 cен 16:10: [Лекция: Введение в программирование](https://youtu.be/5Gt61EX6HZ4) -- вт 03 cен 14:15: [Основы программирования для групп ИП-93, 94, 95](https://youtu.be/5Gt61EX6HZ4) +- вт 03 cен 14:15: [Основы программирования для групп ИП-93, 94, 95](https://youtu.be/jaWu5DoMcZw) (это для студентов КПИ 1 курса, но может быть полезно и для IP9X) - вт 03 сен 17:30: [Семинар: Обсуждение плана и материалов курса](https://youtu.be/bQMTbRWrteU) - видео: [Настройка среды: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) From 5b931714b68c0d391a076ddf64f7f2965782e311 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Wed, 4 Sep 2019 23:44:16 +0300 Subject: [PATCH 049/515] Add path to Reusable/Exercises --- IP9X.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IP9X.md b/IP9X.md index a5a106c..1aea10c 100644 --- a/IP9X.md +++ b/IP9X.md @@ -9,7 +9,7 @@ - настройка среды: [Exercises.ru.md](https://github.com/HowProgrammingWorks/Introduction/blob/master/Exercises.ru.md) - видео: [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) - примеры и задачи: - [Reusable](https://github.com/HowProgrammingWorks/Reusable), + [Reusable](https://github.com/HowProgrammingWorks/Reusable/blob/master/Exercises.ru.md), [Cheatsheet](https://github.com/HowProgrammingWorks/Cheatsheet) - видео: [Базовый синтаксис JavaScript, продолжение](https://youtu.be/qa-XleqA0JU) - примеры и задачи: From c80a1903da07a168fd5e64b3672cf85b6738f2ba Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Fri, 6 Sep 2019 23:54:15 +0300 Subject: [PATCH 050/515] Add Node.js 2019 overview video --- Courses/NodeJS.md | 2 +- NodeUA.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index 93c529e..c3ab93b 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -3,7 +3,7 @@ Видеолекций: 23, еще готовится в 2019 году: 8. - [Node.js Введение в технологию](https://youtu.be/WBcHgaoHh1k) -- Node.js в 2019 году (готовится, 05 сентября 2019) +- [Node.js в 2019 году](https://youtu.be/CUU49jjHloM) - [Обзор встроенного Node.js API](https://youtu.be/sOkjR-N6IAs) - [Модули, слои, структура проекта, песочницы в JavaScript и Node.js](https://youtu.be/O7A9chb573E) - Пример проекта: https://github.com/HowProgrammingWorks/Project diff --git a/NodeUA.md b/NodeUA.md index 701a095..050e8f5 100644 --- a/NodeUA.md +++ b/NodeUA.md @@ -1,6 +1,6 @@ # Расписание NodeUA на 2019-2020 -- чт 05 сен: Node.js в 2019 году +- чт 05 сен: [Node.js в 2019 году](https://youtu.be/CUU49jjHloM) - чт 12 сен: Graceful Shutdown в Node.js - чт 19 сен: Отдача статики в Node.js - чт 26 сен: Применение EventSourcing From 5ca69c2bd5e8244eb31ff6bb464c4db0034baeee Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sun, 8 Sep 2019 16:13:54 +0300 Subject: [PATCH 051/515] Update links and fix comments --- IP9X.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/IP9X.md b/IP9X.md index 7f99083..36d3072 100644 --- a/IP9X.md +++ b/IP9X.md @@ -2,10 +2,10 @@ - вт 03 cен 16:10: [Лекция: Введение в программирование](https://youtu.be/5Gt61EX6HZ4) - вт 03 cен 14:15: [Основы программирования для групп ИП-93, 94, 95](https://youtu.be/jaWu5DoMcZw) - (это для студентов КПИ 1 курса, но может быть полезно и для IP9X) + (это для студентов КПИ 1 курса) - вт 03 сен 17:30: [Семинар: Обсуждение плана и материалов курса](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) - видео: [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) - примеры и задачи: @@ -13,7 +13,7 @@ [Cheatsheet](https://github.com/HowProgrammingWorks/Cheatsheet) - видео: [Базовый синтаксис JavaScript, продолжение](https://youtu.be/qa-XleqA0JU) - примеры и задачи: - [DataTypes](https://github.com/HowProgrammingWorks/DataTypes), + [DataTypes](https://github.com/HowProgrammingWorks/DataTypes/blob/master/Exercises.ru.md), [Conditional](https://github.com/HowProgrammingWorks/Conditional) - вт 10 cен 14:15: Семинар: Базовый синтаксис JavaScript (для групп ИП-93, 94, 95) - вт 10 сен 16:10: Лекция: Введение в программирование, продолжение From 4710bd2384dcc0a8f3da7c0a88d8f2e24cb16bd6 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Tue, 10 Sep 2019 18:40:40 +0300 Subject: [PATCH 052/515] Add latest video-lectures --- Courses/Fundamentals.md | 6 ++++-- IP9X.md | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index a5665a0..b7a1ce3 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -5,8 +5,8 @@ - Значение, идентификатор, переменная и константа, литерал, присвоение - Типы данных, скалярные, ссылочные и структурные типы - Оператор и выражение, блок кода, функция, цикл, условие -- Введение в программирование, продолжение (готовится) - - Коллекции, модули, компоненты, библиотеки, сложность, оптимизация +- [Введение в программирование, продолжение](https://youtu.be/PzlLXQ3RaDs) + - Процедуры и функции, стек и куча, коллекции, модули, компоненты, библиотеки - Языки и парадигмы программирования, технологические стеки - Среда разработки и отладка кода - Примеры кода и задачи: https://github.com/HowProgrammingWorks/Introduction @@ -17,6 +17,8 @@ - [Базовый синтаксис 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) - Антипаттерны общие для всех парадигм (готовится) - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/01-Common - [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) diff --git a/IP9X.md b/IP9X.md index 36d3072..3dc899e 100644 --- a/IP9X.md +++ b/IP9X.md @@ -15,9 +15,9 @@ - примеры и задачи: [DataTypes](https://github.com/HowProgrammingWorks/DataTypes/blob/master/Exercises.ru.md), [Conditional](https://github.com/HowProgrammingWorks/Conditional) -- вт 10 cен 14:15: Семинар: Базовый синтаксис JavaScript (для групп ИП-93, 94, 95) -- вт 10 сен 16:10: Лекция: Введение в программирование, продолжение -- вт 10 сен 17:30: Семинар: Ответы на вопросы +- вт 10 cен 14:15: [Семинар: Автоматическая проверка лабораторных работ](https://youtu.be/M4KpG0LEAyA) +- вт 10 сен 15:00: [Семинар: Базовый синтаксис языка JavaScript](https://youtu.be/PGqjTXQe_qw) +- вт 10 сен 16:10: [Лекция: Введение в программирование, продолжение](https://youtu.be/PzlLXQ3RaDs) - видео: [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) - видео: [Массивы, объекты, классы, прототипы в JavaScript](https://youtu.be/VBMGnAPfmsY) - вт 17 сен 16:10: Лекция: Языки программирования From 71f8aa5e445bd2eb25aed21ffc4ba730f824c24c Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Tue, 10 Sep 2019 22:52:23 +0300 Subject: [PATCH 053/515] Change workshops --- IP9X.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IP9X.md b/IP9X.md index 3dc899e..2397915 100644 --- a/IP9X.md +++ b/IP9X.md @@ -20,12 +20,12 @@ - вт 10 сен 16:10: [Лекция: Введение в программирование, продолжение](https://youtu.be/PzlLXQ3RaDs) - видео: [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) - видео: [Массивы, объекты, классы, прототипы в JavaScript](https://youtu.be/VBMGnAPfmsY) +- вт 17 сен 14:15: Семинар: JavaScript как ассемблер нашего времени - вт 17 сен 16:10: Лекция: Языки программирования -- вт 17 сен 17:30: Семинар: JavaScript как ассемблер нашего времени - видео: [Композиция, каррирование, частичное применение в JavaScript](https://youtu.be/ND8KQ5xjk7o) - видео: [Функции высшего порядка, колбеки, события на JavaScript](https://youtu.be/1vqATwbGHnc) +- вт 24 сен 14:15: Семинар: История развития программирования - вт 24 сен 16:10: Лекция: Парадигмы программирования -- вт 24 сен 17:30: Семинар: История развития программирования - видео: [Работа со строками, шаблонами и юникодом в JavaScript](https://youtu.be/GcopcHQkA8M) - видео: [Примеси, обертки, декораторы, мемоизация в JavaScript](https://youtu.be/oRQ0kQr1N-U) - вт 01 окт 16:10: Лекция: Антипаттерны общие для всех парадигм From d2fe017835a18dfb3549a7f667cad8febe580f05 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Thu, 12 Sep 2019 23:18:24 +0300 Subject: [PATCH 054/515] Add node.js graceful shutdown lecture video --- Courses/NodeJS.md | 2 +- NodeUA.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index c3ab93b..541ceb1 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -61,7 +61,7 @@ - [Модель акторов (Actor Model)](https://youtu.be/xp5MVKEqxY4) - Примеры кода: https://github.com/HowProgrammingWorks/ActorModel - Отдача статики в Node.js (готовится, 19 сентября 2019) -- Graceful Shutdown в Node.js (готовится, 12 сентября 2019) +- [Graceful Shutdown в Node.js](https://youtu.be/ZstnowFeCe0) - Отправка Email из Node.js (готовится, 21 ноября 2019) - GeoIP в Node.js (готовится, 21 ноября 2019) - Безопасность приложений Node.js (готовится, 28 ноября 2019) diff --git a/NodeUA.md b/NodeUA.md index 050e8f5..7e4a40f 100644 --- a/NodeUA.md +++ b/NodeUA.md @@ -1,7 +1,7 @@ # Расписание NodeUA на 2019-2020 - чт 05 сен: [Node.js в 2019 году](https://youtu.be/CUU49jjHloM) -- чт 12 сен: Graceful Shutdown в Node.js +- чт 12 сен: [Graceful Shutdown в Node.js](https://youtu.be/ZstnowFeCe0) - чт 19 сен: Отдача статики в Node.js - чт 26 сен: Применение EventSourcing - чт 03 окт: ServiceWorkers и кеширование PWA From 328eded151eb02e3a4a5445d8d9506bc241a6eaf Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 21 Sep 2019 21:08:15 +0300 Subject: [PATCH 055/515] Add 19th Sep lecture --- Courses/NodeJS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index 541ceb1..772881c 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -60,7 +60,7 @@ - Примеры кода: https://github.com/HowProgrammingWorks/Logging - [Модель акторов (Actor Model)](https://youtu.be/xp5MVKEqxY4) - Примеры кода: https://github.com/HowProgrammingWorks/ActorModel -- Отдача статики в Node.js (готовится, 19 сентября 2019) +- [Отдача статики в Node.js](https://youtu.be/a7d7RdjPAbQ) - [Graceful Shutdown в Node.js](https://youtu.be/ZstnowFeCe0) - Отправка Email из Node.js (готовится, 21 ноября 2019) - GeoIP в Node.js (готовится, 21 ноября 2019) From 059f526e0057545abae55f8f93a00c3f88ffd4c4 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 23 Sep 2019 10:28:57 +0300 Subject: [PATCH 056/515] Change links to video after sound recovery --- IP9X.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IP9X.md b/IP9X.md index 2397915..4ed23f5 100644 --- a/IP9X.md +++ b/IP9X.md @@ -20,8 +20,8 @@ - вт 10 сен 16:10: [Лекция: Введение в программирование, продолжение](https://youtu.be/PzlLXQ3RaDs) - видео: [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) - видео: [Массивы, объекты, классы, прототипы в JavaScript](https://youtu.be/VBMGnAPfmsY) -- вт 17 сен 14:15: Семинар: JavaScript как ассемблер нашего времени -- вт 17 сен 16:10: Лекция: Языки программирования +- вт 17 сен 16:10: [Лекция: Языки программирования](https://youtu.be/enHA1CRkJe0) +- вт 17 сен 17:30: [Семинар: JavaScript, ответы на вопросы](https://youtu.be/wqkQ6eslyzY) - видео: [Композиция, каррирование, частичное применение в JavaScript](https://youtu.be/ND8KQ5xjk7o) - видео: [Функции высшего порядка, колбеки, события на JavaScript](https://youtu.be/1vqATwbGHnc) - вт 24 сен 14:15: Семинар: История развития программирования From 5fc898401d433afbc5ff4d0673543ab3c6e442f6 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 23 Sep 2019 10:32:17 +0300 Subject: [PATCH 057/515] Add links to video --- Courses/Fundamentals.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index b7a1ce3..55e0ddb 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -19,6 +19,8 @@ - [Условия](https://github.com/HowProgrammingWorks/Conditional) - [Семинар: Базовый синтаксис языка JavaScript](https://youtu.be/PGqjTXQe_qw) - [Семинар: Автоматическая проверка лабораторных работ](https://youtu.be/M4KpG0LEAyA) +- [Языки программирования](https://youtu.be/enHA1CRkJe0) +- [Семинар: JavaScript, ответы на вопросы](https://youtu.be/wqkQ6eslyzY) - Антипаттерны общие для всех парадигм (готовится) - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/01-Common - [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) From b27d583444bcc573e5925a99648e44f479b26aa4 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 24 Sep 2019 23:27:49 +0300 Subject: [PATCH 058/515] Add links to video --- IP9X.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IP9X.md b/IP9X.md index 4ed23f5..edff457 100644 --- a/IP9X.md +++ b/IP9X.md @@ -24,8 +24,8 @@ - вт 17 сен 17:30: [Семинар: JavaScript, ответы на вопросы](https://youtu.be/wqkQ6eslyzY) - видео: [Композиция, каррирование, частичное применение в JavaScript](https://youtu.be/ND8KQ5xjk7o) - видео: [Функции высшего порядка, колбеки, события на JavaScript](https://youtu.be/1vqATwbGHnc) -- вт 24 сен 14:15: Семинар: История развития программирования -- вт 24 сен 16:10: Лекция: Парадигмы программирования +- вт 24 сен 16:10: [Лекция: История развития программирования](https://youtu.be/qqz0VSaNxuw) +- вт 24 сен 17:30: [Лекция: Парадигмы программирования](https://youtu.be/Yk1sxLVHfjs) - видео: [Работа со строками, шаблонами и юникодом в JavaScript](https://youtu.be/GcopcHQkA8M) - видео: [Примеси, обертки, декораторы, мемоизация в JavaScript](https://youtu.be/oRQ0kQr1N-U) - вт 01 окт 16:10: Лекция: Антипаттерны общие для всех парадигм From 2619bf2ebb96632d2238719760f80ebc479a9e40 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 24 Sep 2019 23:46:50 +0300 Subject: [PATCH 059/515] Add links to video to course index --- Courses/Fundamentals.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index 55e0ddb..60e1d87 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -21,6 +21,8 @@ - [Семинар: Автоматическая проверка лабораторных работ](https://youtu.be/M4KpG0LEAyA) - [Языки программирования](https://youtu.be/enHA1CRkJe0) - [Семинар: JavaScript, ответы на вопросы](https://youtu.be/wqkQ6eslyzY) +- [История развития программирования](https://youtu.be/qqz0VSaNxuw) +- [Парадигмы программирования](https://youtu.be/Yk1sxLVHfjs) - Антипаттерны общие для всех парадигм (готовится) - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/01-Common - [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) From 88bc2fa051146e81e8c0b789eb028c98c1f5680b Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 28 Sep 2019 21:51:20 +0300 Subject: [PATCH 060/515] Add links to video --- NodeUA.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NodeUA.md b/NodeUA.md index 7e4a40f..8d5ec29 100644 --- a/NodeUA.md +++ b/NodeUA.md @@ -2,8 +2,8 @@ - чт 05 сен: [Node.js в 2019 году](https://youtu.be/CUU49jjHloM) - чт 12 сен: [Graceful Shutdown в Node.js](https://youtu.be/ZstnowFeCe0) -- чт 19 сен: Отдача статики в Node.js -- чт 26 сен: Применение EventSourcing +- чт 19 сен: [Отдача статики в Node.js](https://youtu.be/n_AdKIzbpBc) +- чт 26 сен: [Применение EventSourcing](https://youtu.be/kFNtKiK2SPs) - чт 03 окт: ServiceWorkers и кеширование PWA - чт 10 отк: JavaScript в браузере - чт 17 отк: Принцип единственной ответственности From f4cdbcbb424b9a548a2ba0f4acd24c0d407fc9d1 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 29 Sep 2019 09:36:31 +0300 Subject: [PATCH 061/515] Add links to telegram and meetup groups --- IP9X.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/IP9X.md b/IP9X.md index edff457..fd46eba 100644 --- a/IP9X.md +++ b/IP9X.md @@ -1,4 +1,10 @@ -# Программа IP9X на 1 семестр +## Ссылки + +- Канал: https://t.me/HowProgrammingWorks +- Группа: https://t.me/Programming_IP9X +- Митапы: https://www.meetup.com/HowProgrammingWorks + +## Программа IP9X на 1 семестр - вт 03 cен 16:10: [Лекция: Введение в программирование](https://youtu.be/5Gt61EX6HZ4) - вт 03 cен 14:15: [Основы программирования для групп ИП-93, 94, 95](https://youtu.be/jaWu5DoMcZw) From 31292594c275f1fcdec413347e48fc58583f2c51 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 29 Sep 2019 09:47:13 +0300 Subject: [PATCH 062/515] Update course page --- IP9X.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/IP9X.md b/IP9X.md index fd46eba..96b6d32 100644 --- a/IP9X.md +++ b/IP9X.md @@ -1,10 +1,13 @@ +# Материалы курса IP9X: Основы программирования + ## Ссылки - Канал: https://t.me/HowProgrammingWorks -- Группа: https://t.me/Programming_IP9X -- Митапы: https://www.meetup.com/HowProgrammingWorks +- Группа (чат): https://t.me/Programming_IP9X +- Регистрация на митапы: https://www.meetup.com/HowProgrammingWorks +- Автор: https://github.com/tshemsedinov -## Программа IP9X на 1 семестр +## Программа на 1й семестр - вт 03 cен 16:10: [Лекция: Введение в программирование](https://youtu.be/5Gt61EX6HZ4) - вт 03 cен 14:15: [Основы программирования для групп ИП-93, 94, 95](https://youtu.be/jaWu5DoMcZw) From 21aa9ad9eeed46b0ffc26ed9c6d78630abb18f10 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 2 Oct 2019 23:44:20 +0300 Subject: [PATCH 063/515] Add new video --- IP9X.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/IP9X.md b/IP9X.md index 96b6d32..121ee66 100644 --- a/IP9X.md +++ b/IP9X.md @@ -37,8 +37,7 @@ - вт 24 сен 17:30: [Лекция: Парадигмы программирования](https://youtu.be/Yk1sxLVHfjs) - видео: [Работа со строками, шаблонами и юникодом в JavaScript](https://youtu.be/GcopcHQkA8M) - видео: [Примеси, обертки, декораторы, мемоизация в JavaScript](https://youtu.be/oRQ0kQr1N-U) -- вт 01 окт 16:10: Лекция: Антипаттерны общие для всех парадигм -- вт 01 окт 17:30: Семинар: Качество и красота кода +- вт 01 окт 16:10: [Лекция: Антипаттерны общие для всех парадигм](https://youtu.be/NMUsUiFokr4) - видео: [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) - видео: [Рекурсия: косвенная и хвостовая, стек, выход](https://youtu.be/W2skCjIgVKE) - видео: [Итерирование, циклы и итераторы в JavaScript](https://youtu.be/lq3b5_UGJas) From b010725cc79c38b6c3c1ab07f27de77624b1330f Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 2 Oct 2019 23:45:01 +0300 Subject: [PATCH 064/515] Add lecture about console and command line --- IP9X.md | 1 + 1 file changed, 1 insertion(+) diff --git a/IP9X.md b/IP9X.md index 121ee66..a084768 100644 --- a/IP9X.md +++ b/IP9X.md @@ -38,6 +38,7 @@ - видео: [Работа со строками, шаблонами и юникодом в JavaScript](https://youtu.be/GcopcHQkA8M) - видео: [Примеси, обертки, декораторы, мемоизация в JavaScript](https://youtu.be/oRQ0kQr1N-U) - вт 01 окт 16:10: [Лекция: Антипаттерны общие для всех парадигм](https://youtu.be/NMUsUiFokr4) +- видео: [Консоль и командная строка в JavaScript и Node.js](https://youtu.be/5aSZyKi5BmE) - видео: [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) - видео: [Рекурсия: косвенная и хвостовая, стек, выход](https://youtu.be/W2skCjIgVKE) - видео: [Итерирование, циклы и итераторы в JavaScript](https://youtu.be/lq3b5_UGJas) From 322f9e6d27c1017eb3c42b2f494e971e99123a12 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 6 Oct 2019 17:49:14 +0300 Subject: [PATCH 065/515] Add video --- Courses/Fundamentals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index 60e1d87..5a14248 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -23,7 +23,7 @@ - [Семинар: JavaScript, ответы на вопросы](https://youtu.be/wqkQ6eslyzY) - [История развития программирования](https://youtu.be/qqz0VSaNxuw) - [Парадигмы программирования](https://youtu.be/Yk1sxLVHfjs) -- Антипаттерны общие для всех парадигм (готовится) +- [Антипаттерны общие для всех парадигм](https://youtu.be/NMUsUiFokr4) - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/01-Common - [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) - Функции: https://github.com/HowProgrammingWorks/Function From 009a73036c0e21f7f3a26a34158b9976c63c3ace Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 9 Oct 2019 21:43:31 +0300 Subject: [PATCH 066/515] Add video --- NodeUA.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NodeUA.md b/NodeUA.md index 8d5ec29..7093573 100644 --- a/NodeUA.md +++ b/NodeUA.md @@ -4,7 +4,7 @@ - чт 12 сен: [Graceful Shutdown в Node.js](https://youtu.be/ZstnowFeCe0) - чт 19 сен: [Отдача статики в Node.js](https://youtu.be/n_AdKIzbpBc) - чт 26 сен: [Применение EventSourcing](https://youtu.be/kFNtKiK2SPs) -- чт 03 окт: ServiceWorkers и кеширование PWA +- чт 03 окт: [Progressive Web Applications PWA и ServiceWorkers](https://youtu.be/s7AIwZMTVPs) - чт 10 отк: JavaScript в браузере - чт 17 отк: Принцип единственной ответственности - чт 24 отк: Обзор Web API From adc7ce9541eeebe9e01e759f0961726f2b7b550e Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 10 Oct 2019 21:20:37 +0300 Subject: [PATCH 067/515] Add video --- NodeUA.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NodeUA.md b/NodeUA.md index 7093573..45f8e0f 100644 --- a/NodeUA.md +++ b/NodeUA.md @@ -5,9 +5,9 @@ - чт 19 сен: [Отдача статики в Node.js](https://youtu.be/n_AdKIzbpBc) - чт 26 сен: [Применение EventSourcing](https://youtu.be/kFNtKiK2SPs) - чт 03 окт: [Progressive Web Applications PWA и ServiceWorkers](https://youtu.be/s7AIwZMTVPs) -- чт 10 отк: JavaScript в браузере +- чт 10 отк: [JavaScript в браузере: Web API (часть 1)](https://youtu.be/6O8SBJsNeNw) - чт 17 отк: Принцип единственной ответственности -- чт 24 отк: Обзор Web API +- чт 24 отк: JavaScript в браузере: Web API (часть 2) - чт 31 отк: Ассоциация, Агрегация и Композиция - чт 07 ноя: Принцип подстановки Барбары Лисков - чт 14 ноя: Антипаттерны объектно-ориентированного программирования From 82d86a2e7ffb01be0f3f659a52c471753536bc6a Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 11 Oct 2019 07:51:19 +0300 Subject: [PATCH 068/515] Add new lectures --- Courses/Web.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Courses/Web.md b/Courses/Web.md index 160418b..70b2f58 100644 --- a/Courses/Web.md +++ b/Courses/Web.md @@ -11,5 +11,8 @@ - Примеры кода: https://github.com/HowProgrammingWorks/HttpRequest - [Разработка API на Node.js (клиент и сервер)](https://youtu.be/-az912XBCu8) - Примеры кода: https://github.com/HowProgrammingWorks/API -- Отдача статики в Node.js (готовится) -- ServiceWorkers и кеширование PWA (готовится) +- [Отдача статики в 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) From 3c6c2827165ea5e350b04f33d20e8a85050811a7 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 11 Oct 2019 22:32:12 +0300 Subject: [PATCH 069/515] Add videos --- IP9X.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IP9X.md b/IP9X.md index a084768..9f792a5 100644 --- a/IP9X.md +++ b/IP9X.md @@ -42,8 +42,8 @@ - видео: [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) - видео: [Рекурсия: косвенная и хвостовая, стек, выход](https://youtu.be/W2skCjIgVKE) - видео: [Итерирование, циклы и итераторы в JavaScript](https://youtu.be/lq3b5_UGJas) -- вт 08 окт 16:10: Лекция: Антипаттерны процедурного программирования -- вт 08 окт 17:30: Семинар: Как освоить сложный материал +- вт 08 окт 16:10: [Антипаттерны процедурного программирования](https://youtu.be/cTv7V22mkwE) +- вт 08 окт 14:15: [Ответы на вопросы по курсу "Основы программирования"](https://youtu.be/TY6nDW7aYys) - видео: [Таймеры, таймауты и EventEmitter](https://youtu.be/LK2jveAnRNg) - видео: [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) - видео: [Реактивное программирование на JavaScript](https://youtu.be/7MH8-qQc-48) From 37ee7a0734e66bae5f3180a39f539b22ac9f528b Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 12 Oct 2019 16:45:53 +0300 Subject: [PATCH 070/515] Change topic --- IP9X.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IP9X.md b/IP9X.md index 9f792a5..cdaa426 100644 --- a/IP9X.md +++ b/IP9X.md @@ -50,7 +50,7 @@ - вт 15 отк 16:10: Лекция: Массивы в JavaScript - видео: [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) - видео: [Коллекции, множества, хештаблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) -- вт 22 отк 16:10: Лекция: Code Review +- вт 22 отк 16:10: Лекция: Code Review, как это и зачем - вт 22 окт 17:30: Семинар: Процесс разработки - видео: [Структуры данных: списки, стек, очередь, дэк в JavaScript](https://youtu.be/9KvA4hDDSjk) - вт 29 отк 16:10: Лекция: Мономорфные функции From 986dc61307524cc9dedf295f2bbf0bc76d5b898f Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 17 Oct 2019 10:40:27 +0300 Subject: [PATCH 071/515] Add videos --- IP9X.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/IP9X.md b/IP9X.md index cdaa426..31b15be 100644 --- a/IP9X.md +++ b/IP9X.md @@ -47,7 +47,8 @@ - видео: [Таймеры, таймауты и EventEmitter](https://youtu.be/LK2jveAnRNg) - видео: [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) - видео: [Реактивное программирование на JavaScript](https://youtu.be/7MH8-qQc-48) -- вт 15 отк 16:10: Лекция: Массивы в JavaScript +- вт 15 отк 16:10: [Семинар: выполнение лабораторных работ по курсу](https://youtu.be/ikUOyFPzdJw) +- вт 15 отк 17:00: [Массивы в JavaScript: методы Array](https://youtu.be/D1kfYBkX9FE) - видео: [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) - видео: [Коллекции, множества, хештаблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) - вт 22 отк 16:10: Лекция: Code Review, как это и зачем From f6628fdaa45034c34ad83f33c805253dce42dbba Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 18 Oct 2019 17:26:53 +0300 Subject: [PATCH 072/515] Add video --- NodeUA.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NodeUA.md b/NodeUA.md index 45f8e0f..b589ab7 100644 --- a/NodeUA.md +++ b/NodeUA.md @@ -6,7 +6,7 @@ - чт 26 сен: [Применение EventSourcing](https://youtu.be/kFNtKiK2SPs) - чт 03 окт: [Progressive Web Applications PWA и ServiceWorkers](https://youtu.be/s7AIwZMTVPs) - чт 10 отк: [JavaScript в браузере: Web API (часть 1)](https://youtu.be/6O8SBJsNeNw) -- чт 17 отк: Принцип единственной ответственности +- чт 17 отк: [Принцип единственной ответственности и закон Конвея](https://youtu.be/o4bQywkBKOI) - чт 24 отк: JavaScript в браузере: Web API (часть 2) - чт 31 отк: Ассоциация, Агрегация и Композиция - чт 07 ноя: Принцип подстановки Барбары Лисков From dce6355f09b525f4095357c6f8d4f58cc983f6c6 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 19 Oct 2019 21:37:43 +0300 Subject: [PATCH 073/515] Add exercises --- IP9X.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/IP9X.md b/IP9X.md index 31b15be..322b0db 100644 --- a/IP9X.md +++ b/IP9X.md @@ -49,6 +49,9 @@ - видео: [Реактивное программирование на JavaScript](https://youtu.be/7MH8-qQc-48) - вт 15 отк 16:10: [Семинар: выполнение лабораторных работ по курсу](https://youtu.be/ikUOyFPzdJw) - вт 15 отк 17:00: [Массивы в JavaScript: методы Array](https://youtu.be/D1kfYBkX9FE) +- примеры и задачи: + [Function](https://github.com/HowProgrammingWorks/Function/blob/master/Exercises.ru.md), + [Iteration](https://github.com/HowProgrammingWorks/Iteration/blob/master/Exercises.ru.md) - видео: [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) - видео: [Коллекции, множества, хештаблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) - вт 22 отк 16:10: Лекция: Code Review, как это и зачем From d1884842546cfa3d10e43ce0fa01d1c12f6ec1b4 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 20 Oct 2019 10:26:57 +0300 Subject: [PATCH 074/515] Exercises list --- Exercises.ru.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 Exercises.ru.md diff --git a/Exercises.ru.md b/Exercises.ru.md new file mode 100644 index 0000000..2893e1e --- /dev/null +++ b/Exercises.ru.md @@ -0,0 +1,6 @@ +# Практические задания + +1. [Переменные и типы данных](https://github.com/HowProgrammingWorks/DataTypes/blob/master/Exercises.ru.md) +2. [Базовый синтаксис JavaScript](https://github.com/HowProgrammingWorks/Reusable/blob/master/Exercises.ru.md) +3. [Функции и методы](https://github.com/HowProgrammingWorks/Function/blob/master/Exercises.ru.md) +4. [Циклы, итераирование](https://github.com/HowProgrammingWorks/Iteration/blob/master/Exercises.ru.md) From b8656e3b26c2c510af288814751f54545403e37c Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 20 Oct 2019 10:30:19 +0300 Subject: [PATCH 075/515] Add videos --- Exercises.ru.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Exercises.ru.md b/Exercises.ru.md index 2893e1e..be24f94 100644 --- a/Exercises.ru.md +++ b/Exercises.ru.md @@ -1,5 +1,10 @@ # Практические задания +Запись семинаров про выполнение и проверку лабораторных работ: +- [Семинар: автоматическая проверка лабораторных работ](https://youtu.be/M4KpG0LEAyA) +- [Семинар: выполнение лабораторных работ по курсу "Основы программирования"](https://youtu.be/ikUOyFPzdJw) + +Репозитории с задачами: 1. [Переменные и типы данных](https://github.com/HowProgrammingWorks/DataTypes/blob/master/Exercises.ru.md) 2. [Базовый синтаксис JavaScript](https://github.com/HowProgrammingWorks/Reusable/blob/master/Exercises.ru.md) 3. [Функции и методы](https://github.com/HowProgrammingWorks/Function/blob/master/Exercises.ru.md) From 21269ad5a70ce523370b86d6b6db769644d5f3cf Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 21 Oct 2019 09:20:53 +0300 Subject: [PATCH 076/515] Add link to exercises --- IP9X.md | 1 + 1 file changed, 1 insertion(+) diff --git a/IP9X.md b/IP9X.md index 322b0db..4cf39a9 100644 --- a/IP9X.md +++ b/IP9X.md @@ -5,6 +5,7 @@ - Канал: https://t.me/HowProgrammingWorks - Группа (чат): https://t.me/Programming_IP9X - Регистрация на митапы: https://www.meetup.com/HowProgrammingWorks +- Все задачи: https://github.com/HowProgrammingWorks/Index/blob/master/Exercises.ru.md - Автор: https://github.com/tshemsedinov ## Программа на 1й семестр From 0d58e272677ee5ca2da1f76e9dda8c0e21802b59 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 23 Oct 2019 19:41:50 +0300 Subject: [PATCH 077/515] Add videos --- IP9X.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IP9X.md b/IP9X.md index 4cf39a9..9b4a4db 100644 --- a/IP9X.md +++ b/IP9X.md @@ -55,8 +55,8 @@ [Iteration](https://github.com/HowProgrammingWorks/Iteration/blob/master/Exercises.ru.md) - видео: [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) - видео: [Коллекции, множества, хештаблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) -- вт 22 отк 16:10: Лекция: Code Review, как это и зачем -- вт 22 окт 17:30: Семинар: Процесс разработки +- вт 22 отк 16:10: [Code Review: как это и зачем](https://www.youtube.com/watch?v=EKL6NiIQ6ZU) +- вт 22 окт 17:30: [Семинар: Code Review, ответы на вопросы](https://www.youtube.com/watch?v=AgH4OAKbmkM) - видео: [Структуры данных: списки, стек, очередь, дэк в JavaScript](https://youtu.be/9KvA4hDDSjk) - вт 29 отк 16:10: Лекция: Мономорфные функции - видео: [Сериализация и десериализация в JavaScript и Node.js](https://youtu.be/GtKPniOEzh8) From a095e77cbeaa7f0d5c825fea95b982e9eb20d07f Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 25 Oct 2019 22:55:09 +0300 Subject: [PATCH 078/515] Remove canceled lecture --- Calendar.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Calendar.md b/Calendar.md index f7e58de..021d554 100644 --- a/Calendar.md +++ b/Calendar.md @@ -17,7 +17,6 @@ - вт 15 отк: Массивы в JavaScript - чт 17 отк: Принцип единственной ответственности - вт 22 отк: Code Review -- чт 24 отк: Обзор Web API - вт 29 отк: Мономорфные функции - чт 31 отк: Ассоциация, Агрегация и Композиция - вт 05 ноя: Рефакторинг @@ -33,6 +32,7 @@ ## Очередь +- Обзор Web API (Часть 2) - Антипаттерны функционального программирования - Immutable - неизменяемые структуры данных - Lock-free структуры данных From 569b5e1298d838cc36dfd6b5a273863fd4890c65 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 27 Oct 2019 22:29:12 +0200 Subject: [PATCH 079/515] Fix topic --- IP9X.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IP9X.md b/IP9X.md index 9b4a4db..a7741d4 100644 --- a/IP9X.md +++ b/IP9X.md @@ -58,7 +58,7 @@ - вт 22 отк 16:10: [Code Review: как это и зачем](https://www.youtube.com/watch?v=EKL6NiIQ6ZU) - вт 22 окт 17:30: [Семинар: Code Review, ответы на вопросы](https://www.youtube.com/watch?v=AgH4OAKbmkM) - видео: [Структуры данных: списки, стек, очередь, дэк в JavaScript](https://youtu.be/9KvA4hDDSjk) -- вт 29 отк 16:10: Лекция: Мономорфные функции +- вт 29 отк 16:10: Лекция: Мономорфный и полиморфный код - видео: [Сериализация и десериализация в JavaScript и Node.js](https://youtu.be/GtKPniOEzh8) - вт 05 ноя 16:10: Лекция: Рефакторинг - вт 05 ноя 17:30: Семинар: Выбор направления в программировании From 45b79ff5a071c0264834b714ef98264f2b91bd5c Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 29 Oct 2019 19:19:04 +0200 Subject: [PATCH 080/515] Add topic --- Calendar.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Calendar.md b/Calendar.md index 021d554..f64fb14 100644 --- a/Calendar.md +++ b/Calendar.md @@ -39,5 +39,6 @@ - CRDT - Conflict-free data types - Динамическое программирование - CAP-теорема +- Конечные автоматы (Машины состояний) - Состояние гонки и взаимные блокировки в асинхронном программировании - Состояние гонки и взаимные блокировки в параллельном программировании From 0062a9d6e71b88bcf93386893c8cedbd026475ba Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 29 Oct 2019 22:34:57 +0200 Subject: [PATCH 081/515] Add video --- IP9X.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IP9X.md b/IP9X.md index a7741d4..83125f8 100644 --- a/IP9X.md +++ b/IP9X.md @@ -58,7 +58,7 @@ - вт 22 отк 16:10: [Code Review: как это и зачем](https://www.youtube.com/watch?v=EKL6NiIQ6ZU) - вт 22 окт 17:30: [Семинар: Code Review, ответы на вопросы](https://www.youtube.com/watch?v=AgH4OAKbmkM) - видео: [Структуры данных: списки, стек, очередь, дэк в JavaScript](https://youtu.be/9KvA4hDDSjk) -- вт 29 отк 16:10: Лекция: Мономорфный и полиморфный код +- вт 29 отк 16:10: [Мономорфный и полиморфный код, инлайн-кэш, скрытые классы](https://www.youtube.com/watch?v=9JUY3prnCQ4) - видео: [Сериализация и десериализация в JavaScript и Node.js](https://youtu.be/GtKPniOEzh8) - вт 05 ноя 16:10: Лекция: Рефакторинг - вт 05 ноя 17:30: Семинар: Выбор направления в программировании From 577d0b462612feeea9647cb6faa7a25fcb93242e Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 1 Nov 2019 20:56:35 +0200 Subject: [PATCH 082/515] Add video --- Courses/OOP.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/OOP.md b/Courses/OOP.md index 6c652be..cec4a2b 100644 --- a/Courses/OOP.md +++ b/Courses/OOP.md @@ -7,3 +7,4 @@ - Принцип подстановки Барбары Лисков (готовится) - Принцип единственной ответственности (готовится) - [Шаблоны проектирования](Patterns.md) +- [Ассоциация, агрегация и композиция объектов](https://www.youtube.com/watch?v=tOIcBrzezK0) From 2ae92b6eb4e77cfdf0a0ad55bb84e86ee1a66a52 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 1 Nov 2019 20:57:24 +0200 Subject: [PATCH 083/515] Add examples --- Courses/OOP.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/OOP.md b/Courses/OOP.md index cec4a2b..2454321 100644 --- a/Courses/OOP.md +++ b/Courses/OOP.md @@ -3,8 +3,8 @@ - [Have Objects Failed? Или что не так с ООП?](https://youtu.be/4yO5OS0vPSw) - [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) - Примеры кода: https://github.com/HowProgrammingWorks/Generics -- Ассоциация, Агрегация и Композиция (готовится) - Принцип подстановки Барбары Лисков (готовится) - Принцип единственной ответственности (готовится) - [Шаблоны проектирования](Patterns.md) - [Ассоциация, агрегация и композиция объектов](https://www.youtube.com/watch?v=tOIcBrzezK0) + - Примеры кода: https://github.com/HowProgrammingWorks/Association From 3ef413910a38e13ab2193c420c33066a505b2b76 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 4 Nov 2019 09:51:59 +0200 Subject: [PATCH 084/515] Change lecture date --- IP9X.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IP9X.md b/IP9X.md index 83125f8..fa9dcfe 100644 --- a/IP9X.md +++ b/IP9X.md @@ -61,7 +61,7 @@ - вт 29 отк 16:10: [Мономорфный и полиморфный код, инлайн-кэш, скрытые классы](https://www.youtube.com/watch?v=9JUY3prnCQ4) - видео: [Сериализация и десериализация в JavaScript и Node.js](https://youtu.be/GtKPniOEzh8) - вт 05 ноя 16:10: Лекция: Рефакторинг -- вт 05 ноя 17:30: Семинар: Выбор направления в программировании +- чт 07 ноя 16:10: Семинар: Выбор направления в программировании - видео: [Proxy и Symbol в JavaScript](https://youtu.be/UjZjSDyi9AM) - вт 12 ноя 16:10: Лекция: Прототипное программирование - видео: [Регулярные выражения и парсинг в JavaScript](https://youtu.be/-ef2E0ozxao) From 0c4c1f1086d6d35508de9e7865dca99fd9b7b68c Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 4 Nov 2019 10:16:39 +0200 Subject: [PATCH 085/515] Added to waiting list Closes: #13 --- Calendar.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Calendar.md b/Calendar.md index f64fb14..497c1ca 100644 --- a/Calendar.md +++ b/Calendar.md @@ -42,3 +42,4 @@ - Конечные автоматы (Машины состояний) - Состояние гонки и взаимные блокировки в асинхронном программировании - Состояние гонки и взаимные блокировки в параллельном программировании +- Обзорная лекция: Парсинг, компиляция и интерпретация кода From 3f7f83cdfbd2d714423e9b25901dc8a3e7f591a4 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 7 Nov 2019 23:44:04 +0200 Subject: [PATCH 086/515] Add videos --- IP9X.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IP9X.md b/IP9X.md index fa9dcfe..63d28e0 100644 --- a/IP9X.md +++ b/IP9X.md @@ -60,8 +60,8 @@ - видео: [Структуры данных: списки, стек, очередь, дэк в JavaScript](https://youtu.be/9KvA4hDDSjk) - вт 29 отк 16:10: [Мономорфный и полиморфный код, инлайн-кэш, скрытые классы](https://www.youtube.com/watch?v=9JUY3prnCQ4) - видео: [Сериализация и десериализация в JavaScript и Node.js](https://youtu.be/GtKPniOEzh8) -- вт 05 ноя 16:10: Лекция: Рефакторинг -- чт 07 ноя 16:10: Семинар: Выбор направления в программировании +- вт 05 ноя 16:10: [Рефакторинг: причины, цели, техники и процесс](https://youtu.be/z73wmpdweQ4) +- чт 07 ноя 16:10: [Семинар: Выбор направления в программировании](https://youtu.be/1gL627DQF4A) - видео: [Proxy и Symbol в JavaScript](https://youtu.be/UjZjSDyi9AM) - вт 12 ноя 16:10: Лекция: Прототипное программирование - видео: [Регулярные выражения и парсинг в JavaScript](https://youtu.be/-ef2E0ozxao) From 3ca2ca28fa2a242166a8f4d6e485e18fc47e8cac Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 7 Nov 2019 23:45:58 +0200 Subject: [PATCH 087/515] Add LSP lecture video --- NodeUA.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NodeUA.md b/NodeUA.md index b589ab7..8654d96 100644 --- a/NodeUA.md +++ b/NodeUA.md @@ -9,7 +9,7 @@ - чт 17 отк: [Принцип единственной ответственности и закон Конвея](https://youtu.be/o4bQywkBKOI) - чт 24 отк: JavaScript в браузере: Web API (часть 2) - чт 31 отк: Ассоциация, Агрегация и Композиция -- чт 07 ноя: Принцип подстановки Барбары Лисков +- чт 07 ноя: [Принцип подстановки Барбары Лисков](https://youtu.be/RbhYxygxroc) - чт 14 ноя: Антипаттерны объектно-ориентированного программирования - чт 21 ноя: Отправка Email из Node.js, GeoIP в Node.js - чт 28 ноя: Безопасность приложений Node.js From e4ecc9496e846910f69d05b5c4e567169884c938 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 7 Nov 2019 23:47:05 +0200 Subject: [PATCH 088/515] Remove lecture --- NodeUA.md | 1 - 1 file changed, 1 deletion(-) diff --git a/NodeUA.md b/NodeUA.md index 8654d96..f9bf73c 100644 --- a/NodeUA.md +++ b/NodeUA.md @@ -7,7 +7,6 @@ - чт 03 окт: [Progressive Web Applications PWA и ServiceWorkers](https://youtu.be/s7AIwZMTVPs) - чт 10 отк: [JavaScript в браузере: Web API (часть 1)](https://youtu.be/6O8SBJsNeNw) - чт 17 отк: [Принцип единственной ответственности и закон Конвея](https://youtu.be/o4bQywkBKOI) -- чт 24 отк: JavaScript в браузере: Web API (часть 2) - чт 31 отк: Ассоциация, Агрегация и Композиция - чт 07 ноя: [Принцип подстановки Барбары Лисков](https://youtu.be/RbhYxygxroc) - чт 14 ноя: Антипаттерны объектно-ориентированного программирования From d6386eb0937c1b0c55461a0935e17677d081d4d3 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 7 Nov 2019 23:47:33 +0200 Subject: [PATCH 089/515] Add video --- NodeUA.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NodeUA.md b/NodeUA.md index f9bf73c..dc7546f 100644 --- a/NodeUA.md +++ b/NodeUA.md @@ -7,7 +7,7 @@ - чт 03 окт: [Progressive Web Applications PWA и ServiceWorkers](https://youtu.be/s7AIwZMTVPs) - чт 10 отк: [JavaScript в браузере: Web API (часть 1)](https://youtu.be/6O8SBJsNeNw) - чт 17 отк: [Принцип единственной ответственности и закон Конвея](https://youtu.be/o4bQywkBKOI) -- чт 31 отк: Ассоциация, Агрегация и Композиция +- чт 31 отк: [Ассоциация, Агрегация и Композиция](https://youtu.be/tOIcBrzezK0) - чт 07 ноя: [Принцип подстановки Барбары Лисков](https://youtu.be/RbhYxygxroc) - чт 14 ноя: Антипаттерны объектно-ориентированного программирования - чт 21 ноя: Отправка Email из Node.js, GeoIP в Node.js From f126c2505483f47631d528c303888bdf432ed05a Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 10 Nov 2019 20:02:01 +0200 Subject: [PATCH 090/515] Move lecture from Nov 12th to Nov 19th --- IP9X.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/IP9X.md b/IP9X.md index 63d28e0..f7801b1 100644 --- a/IP9X.md +++ b/IP9X.md @@ -63,9 +63,10 @@ - вт 05 ноя 16:10: [Рефакторинг: причины, цели, техники и процесс](https://youtu.be/z73wmpdweQ4) - чт 07 ноя 16:10: [Семинар: Выбор направления в программировании](https://youtu.be/1gL627DQF4A) - видео: [Proxy и Symbol в JavaScript](https://youtu.be/UjZjSDyi9AM) -- вт 12 ноя 16:10: Лекция: Прототипное программирование - видео: [Регулярные выражения и парсинг в JavaScript](https://youtu.be/-ef2E0ozxao) -- вт 19 ноя 16:10: Лекция: Примеси в JavaScript, Мемоизация в JavaScript +- вт 19 ноя 14:15: Лекция: Прототипное программирование +- вт 19 ноя 15:15: Лекция: Примеси в JavaScript +- вт 19 ноя 16:10: Лекция: Мемоизация в JavaScript - вт 19 ноя 17:30: Семинар: Как устроен ИТ-бизнес - видео: [Фабрики и пулы объектов в JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) - вт 26 ноя 16:10: Лекция: Обертки и декораторы в JavaScript и TypeScript From be764b07a5b40eabd1a3b0297fe131b17eb4e6a6 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 10 Nov 2019 20:07:47 +0200 Subject: [PATCH 091/515] Move lecture from Nov 14th to queue --- Calendar.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Calendar.md b/Calendar.md index 497c1ca..4fabbcd 100644 --- a/Calendar.md +++ b/Calendar.md @@ -21,10 +21,10 @@ - чт 31 отк: Ассоциация, Агрегация и Композиция - вт 05 ноя: Рефакторинг - чт 07 ноя: Принцип подстановки Барбары Лисков -- вт 12 ноя: Прототипное программирование -- чт 14 ноя: Антипаттерны объектно-ориентированного программирования -- вт 19 ноя: Примеси в JavaScript, Мемоизация в JavaScript -- чт 21 ноя: Отправка Email из Node.js, GeoIP в Node.js +- вт 19 ноя: Прототипное программирование +- вт 19 ноя: Примеси в JavaScript +- вт 19 ноя: Мемоизация в JavaScript +- чт 21 ноя: Антипаттерны объектно-ориентированного программирования - вт 26 ноя: Обертки и декораторы в JavaScript и TypeScript - чт 28 ноя: Безопасность приложений Node.js - вт 03 дек: Новое в JavaScript @@ -32,6 +32,7 @@ ## Очередь +- Отправка Email из Node.js, GeoIP в Node.js - Обзор Web API (Часть 2) - Антипаттерны функционального программирования - Immutable - неизменяемые структуры данных From 6c2311c758ddbf4eb512d6b6e09c2eb8eaf1ce2c Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 13 Nov 2019 21:37:55 +0200 Subject: [PATCH 092/515] Add SQL syntax --- Courses/Databases.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/Courses/Databases.md b/Courses/Databases.md index f57b74f..9f6ca61 100644 --- a/Courses/Databases.md +++ b/Courses/Databases.md @@ -1,5 +1,37 @@ # Проектирования баз данных +- SQL: SELECT (оператор выборки) + - WHERE клауза, составные условия + - IN, BETWEEN выражения + - GROUP BY клауза + - HAVING клауза + - ORDER BY клауза + - WITH клауза + - INTO клауза +- SQL: Операторы сравнения +- SQL: Оператор LIKE +- SQL: DISTINCT, ALL, ANY +- SQL: Агрегатные функции +- SQL: Математические функции +- SQL: Алиасы полей и таблиц +- SQL: LIMIT, OFFSET +- SQL: Комментарии +- SQL JOINS: + - CROSS JOIN + - INNER JOIN + - LEFT (OUTER) JOIN + - RIGHT JOIN + - FULL JOIN + - Рекурссивный JOIN +- SQL: CREATE DATABASE, DROP DATABASE +- SQL: CREATE TABLE, DROP TABLE +- SQL: ALTER TABLE +- SQL: CHECK ограничения на поля +- SQL: NULL, NOT NULL +- SQL: UNIQUE поля +- SQL: DEFAULT значения +- SQL: Первичные ключи +- SQL: Уникальные и не уникальные индексы - [Слой доступа к данным, курсор, транзакция](https://youtu.be/CRcSWtWVvrA) - Примеры кода: https://github.com/HowProgrammingWorks/Transaction - [Работа с базами данных в Node.js на примере PostgreSQL](https://youtu.be/2tDvHQCBt3w) From 228f78a09e0abe659a782d195c203b16db34944c Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 13 Nov 2019 21:54:46 +0200 Subject: [PATCH 093/515] Add lectures --- Courses/Databases.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Courses/Databases.md b/Courses/Databases.md index 9f6ca61..c09a32f 100644 --- a/Courses/Databases.md +++ b/Courses/Databases.md @@ -40,3 +40,5 @@ - CQS: https://github.com/HowProgrammingWorks/CQS - CQRS: https://github.com/HowProgrammingWorks/CQRS - EventSourcing: https://github.com/HowProgrammingWorks/EventSourcing +- Трехзвенные приложения баз данных +- Инъекции SQL и защита от них From f0e1898cbccdb70fa713ccb8bdbfe0376bf0f2e9 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 16 Nov 2019 23:07:31 +0200 Subject: [PATCH 094/515] Add IoT to queue --- Calendar.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Calendar.md b/Calendar.md index 4fabbcd..5958ff3 100644 --- a/Calendar.md +++ b/Calendar.md @@ -32,6 +32,7 @@ ## Очередь +- Node.js для IoT (Internet of Things) - Отправка Email из Node.js, GeoIP в Node.js - Обзор Web API (Часть 2) - Антипаттерны функционального программирования From 29fb28ea037ba547b30380e94645a9205c65e7eb Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 17 Nov 2019 14:19:17 +0200 Subject: [PATCH 095/515] Add two seminars --- Calendar.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Calendar.md b/Calendar.md index 5958ff3..1cb8862 100644 --- a/Calendar.md +++ b/Calendar.md @@ -45,3 +45,5 @@ - Состояние гонки и взаимные блокировки в асинхронном программировании - Состояние гонки и взаимные блокировки в параллельном программировании - Обзорная лекция: Парсинг, компиляция и интерпретация кода +- Семинар: Как устроен ИТ-бизнес +- Семинар: Как получить первый практический опыт From c6ca307dc72706e1192421412d0cff1bd8fd4d0f Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 17 Nov 2019 14:21:25 +0200 Subject: [PATCH 096/515] Move lecture from Nov 14th to 21th --- NodeUA.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/NodeUA.md b/NodeUA.md index dc7546f..f6ebe1b 100644 --- a/NodeUA.md +++ b/NodeUA.md @@ -9,7 +9,6 @@ - чт 17 отк: [Принцип единственной ответственности и закон Конвея](https://youtu.be/o4bQywkBKOI) - чт 31 отк: [Ассоциация, Агрегация и Композиция](https://youtu.be/tOIcBrzezK0) - чт 07 ноя: [Принцип подстановки Барбары Лисков](https://youtu.be/RbhYxygxroc) -- чт 14 ноя: Антипаттерны объектно-ориентированного программирования -- чт 21 ноя: Отправка Email из Node.js, GeoIP в Node.js +- чт 21 ноя: Антипаттерны объектно-ориентированного программирования - чт 28 ноя: Безопасность приложений Node.js - чт 05 дек: Изоляция запросов в Node.js From 4fb2ceb70ed5733f6a50b30e1a424487e157874f Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 17 Nov 2019 14:22:08 +0200 Subject: [PATCH 097/515] Reorder topics --- IP9X.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/IP9X.md b/IP9X.md index f7801b1..0a74ebc 100644 --- a/IP9X.md +++ b/IP9X.md @@ -64,10 +64,9 @@ - чт 07 ноя 16:10: [Семинар: Выбор направления в программировании](https://youtu.be/1gL627DQF4A) - видео: [Proxy и Symbol в JavaScript](https://youtu.be/UjZjSDyi9AM) - видео: [Регулярные выражения и парсинг в JavaScript](https://youtu.be/-ef2E0ozxao) -- вт 19 ноя 14:15: Лекция: Прототипное программирование -- вт 19 ноя 15:15: Лекция: Примеси в JavaScript -- вт 19 ноя 16:10: Лекция: Мемоизация в JavaScript -- вт 19 ноя 17:30: Семинар: Как устроен ИТ-бизнес +- вт 19 ноя 16:10: Лекция: Примеси в JavaScript +- вт 19 ноя 16:40: Лекция: Прототипное программирование +- вт 19 ноя 17:20: Лекция: Мемоизация в JavaScript - видео: [Фабрики и пулы объектов в JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) - вт 26 ноя 16:10: Лекция: Обертки и декораторы в JavaScript и TypeScript - вт 26 ноя 17:30: Семинар: Какие бы языки и технологии еще освоить From 0fdf51e49fe5e00ac47a42cb0bfea63ea35bc753 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 20 Nov 2019 01:37:41 +0200 Subject: [PATCH 098/515] Add video lectures --- IP9X.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/IP9X.md b/IP9X.md index 0a74ebc..9e8ca23 100644 --- a/IP9X.md +++ b/IP9X.md @@ -64,9 +64,10 @@ - чт 07 ноя 16:10: [Семинар: Выбор направления в программировании](https://youtu.be/1gL627DQF4A) - видео: [Proxy и Symbol в JavaScript](https://youtu.be/UjZjSDyi9AM) - видео: [Регулярные выражения и парсинг в JavaScript](https://youtu.be/-ef2E0ozxao) -- вт 19 ноя 16:10: Лекция: Примеси в JavaScript -- вт 19 ноя 16:40: Лекция: Прототипное программирование -- вт 19 ноя 17:20: Лекция: Мемоизация в JavaScript +- вт 19 ноя 15:00: [Композиция: pipe, compose](https://youtu.be/xS9FicVrOTI) +- вт 19 ноя 16:10: [Примеси: mixin, extend, Object.assign, class λ-mixin](https://youtu.be/NZMrJ2adEyY) +- вт 19 ноя 16:40: [Прототипное программирование и прототипное наследование](https://youtu.be/SzaXTW2qcJE) +- вт 19 ноя 17:20: [Мемоизация: memoize](https://youtu.be/H6S8QJo2Qxg) - видео: [Фабрики и пулы объектов в JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) - вт 26 ноя 16:10: Лекция: Обертки и декораторы в JavaScript и TypeScript - вт 26 ноя 17:30: Семинар: Какие бы языки и технологии еще освоить From 7a41723e6dedb1eb9412dea3b146b2df7aef1dfd Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 20 Nov 2019 14:07:29 +0200 Subject: [PATCH 099/515] Add new labs --- Exercises.ru.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Exercises.ru.md b/Exercises.ru.md index be24f94..3822401 100644 --- a/Exercises.ru.md +++ b/Exercises.ru.md @@ -9,3 +9,5 @@ 2. [Базовый синтаксис JavaScript](https://github.com/HowProgrammingWorks/Reusable/blob/master/Exercises.ru.md) 3. [Функции и методы](https://github.com/HowProgrammingWorks/Function/blob/master/Exercises.ru.md) 4. [Циклы, итераирование](https://github.com/HowProgrammingWorks/Iteration/blob/master/Exercises.ru.md) +5. [Замыкания и чеининг](https://github.com/HowProgrammingWorks/Closure/blob/master/Exercises.ru.md) +6. [Композиция функций](https://github.com/HowProgrammingWorks/Composition/blob/master/Exercises.ru.md) From ffa15b1ec11bbfac26bf1bb618df80f2c8a0b572 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 20 Nov 2019 15:55:56 +0200 Subject: [PATCH 100/515] Add Summer'2017 index --- Archive/2017-Summer-school.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 Archive/2017-Summer-school.md diff --git a/Archive/2017-Summer-school.md b/Archive/2017-Summer-school.md new file mode 100644 index 0000000..6b1576e --- /dev/null +++ b/Archive/2017-Summer-school.md @@ -0,0 +1,20 @@ +## Летняя школа 2017 + +Архив исторических лекций 2016-2017 учебного года, когда курс только +формировался, в ютюбе не было ничего, а в гитхабе было всего несколько +репозиториев, два раза в году на школы и собиралось по 600 человек в 7 +корпусе КПИ. Конечно было душно и шумно, да и материал с того времени +сильно улучшился, но Летняя школа 2017 по JavaScript и NodeJS многим +запомнилась, как важное событие. Есть еще видео с 2015-2016 учебного +года и очень жаль, что с 2014-2015 не осталось видео. + +- [1. Обзор курса и обсуждение структуры курса](https://youtu.be/gKttsTvLmFI) +- [2. Настройка среды: git, node, npm, eslint, ci](https://youtu.be/cDcJ5uVsWX0) +- [3. JavaScript, как ассемблер нашего времени](https://youtu.be/dKRbXGwXiwg) +- [4. Введение в Node js и серверный JavaScript](https://youtu.be/iT1oDAyhybQ) +- [5. Замыкания, примеси, обертки, функторы, события](https://youtu.be/8_aKQBhzpl8) +- [6. Файлы, потоки, буферы, сеть, сокеты, ошибки](https://youtu.be/Cvsv672Lbvk) +- [7. Внедрение зависимостей DI, Firebase, Angular, SPA, React, Обработка ошибок](https://youtu.be/LaxV_CDdV5c) +- 8. Асинхронное программирование +- 9. Песочницы, IoC, DI, IPC, структура приложений +- 10. Архитектура приложений и метапрограммирование From 06bcf7ef9c6ef24afef88caf44f09360dde8c982 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 20 Nov 2019 21:05:00 +0200 Subject: [PATCH 101/515] Improve index --- IP9X.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/IP9X.md b/IP9X.md index 9e8ca23..4954679 100644 --- a/IP9X.md +++ b/IP9X.md @@ -10,7 +10,7 @@ ## Программа на 1й семестр -- вт 03 cен 16:10: [Лекция: Введение в программирование](https://youtu.be/5Gt61EX6HZ4) +- вт 03 cен 16:10: [Введение в программирование](https://youtu.be/5Gt61EX6HZ4) - вт 03 cен 14:15: [Основы программирования для групп ИП-93, 94, 95](https://youtu.be/jaWu5DoMcZw) (это для студентов КПИ 1 курса) - вт 03 сен 17:30: [Семинар: Обсуждение плана и материалов курса](https://youtu.be/bQMTbRWrteU) @@ -27,18 +27,18 @@ [Conditional](https://github.com/HowProgrammingWorks/Conditional) - вт 10 cен 14:15: [Семинар: Автоматическая проверка лабораторных работ](https://youtu.be/M4KpG0LEAyA) - вт 10 сен 15:00: [Семинар: Базовый синтаксис языка JavaScript](https://youtu.be/PGqjTXQe_qw) -- вт 10 сен 16:10: [Лекция: Введение в программирование, продолжение](https://youtu.be/PzlLXQ3RaDs) +- вт 10 сен 16:10: [Введение в программирование, продолжение](https://youtu.be/PzlLXQ3RaDs) - видео: [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) - видео: [Массивы, объекты, классы, прототипы в JavaScript](https://youtu.be/VBMGnAPfmsY) -- вт 17 сен 16:10: [Лекция: Языки программирования](https://youtu.be/enHA1CRkJe0) +- вт 17 сен 16:10: [Языки программирования](https://youtu.be/enHA1CRkJe0) - вт 17 сен 17:30: [Семинар: JavaScript, ответы на вопросы](https://youtu.be/wqkQ6eslyzY) - видео: [Композиция, каррирование, частичное применение в JavaScript](https://youtu.be/ND8KQ5xjk7o) - видео: [Функции высшего порядка, колбеки, события на JavaScript](https://youtu.be/1vqATwbGHnc) -- вт 24 сен 16:10: [Лекция: История развития программирования](https://youtu.be/qqz0VSaNxuw) -- вт 24 сен 17:30: [Лекция: Парадигмы программирования](https://youtu.be/Yk1sxLVHfjs) +- вт 24 сен 16:10: [История развития программирования](https://youtu.be/qqz0VSaNxuw) +- вт 24 сен 17:30: [Парадигмы программирования](https://youtu.be/Yk1sxLVHfjs) - видео: [Работа со строками, шаблонами и юникодом в JavaScript](https://youtu.be/GcopcHQkA8M) - видео: [Примеси, обертки, декораторы, мемоизация в JavaScript](https://youtu.be/oRQ0kQr1N-U) -- вт 01 окт 16:10: [Лекция: Антипаттерны общие для всех парадигм](https://youtu.be/NMUsUiFokr4) +- вт 01 окт 16:10: [Антипаттерны общие для всех парадигм](https://youtu.be/NMUsUiFokr4) - видео: [Консоль и командная строка в JavaScript и Node.js](https://youtu.be/5aSZyKi5BmE) - видео: [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) - видео: [Рекурсия: косвенная и хвостовая, стек, выход](https://youtu.be/W2skCjIgVKE) @@ -69,8 +69,8 @@ - вт 19 ноя 16:40: [Прототипное программирование и прототипное наследование](https://youtu.be/SzaXTW2qcJE) - вт 19 ноя 17:20: [Мемоизация: memoize](https://youtu.be/H6S8QJo2Qxg) - видео: [Фабрики и пулы объектов в JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) -- вт 26 ноя 16:10: Лекция: Обертки и декораторы в JavaScript и TypeScript +- вт 26 ноя 16:10: Обертки и декораторы в JavaScript и TypeScript - вт 26 ноя 17:30: Семинар: Какие бы языки и технологии еще освоить - видео: [Типизированные массивы в JavaScript](https://youtu.be/tTNcqxbxhfY) -- вт 03 дек 16:10: Лекция: Новое в JavaScript +- вт 03 дек 16:10: Новое в JavaScript - вт 03 дек 17:30: Семинар: Обзор материала и как готовиться к экзамену From 59207cecb716b6bb12b8ac0414a3fef89c6ae442 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 20 Nov 2019 23:47:06 +0200 Subject: [PATCH 102/515] Add array tasks --- Exercises.ru.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Exercises.ru.md b/Exercises.ru.md index 3822401..659e732 100644 --- a/Exercises.ru.md +++ b/Exercises.ru.md @@ -11,3 +11,4 @@ 4. [Циклы, итераирование](https://github.com/HowProgrammingWorks/Iteration/blob/master/Exercises.ru.md) 5. [Замыкания и чеининг](https://github.com/HowProgrammingWorks/Closure/blob/master/Exercises.ru.md) 6. [Композиция функций](https://github.com/HowProgrammingWorks/Composition/blob/master/Exercises.ru.md) +7. [Работа с массивами](https://github.com/HowProgrammingWorks/Arrays/blob/master/Exercises.ru.md) From 3ca0fd3e4f1f379fea2abad00c9f9f7a469a5a51 Mon Sep 17 00:00:00 2001 From: Mikhail Alyoshyn <44239053+ArMANIAK@users.noreply.github.com> Date: Fri, 22 Nov 2019 00:11:00 +0200 Subject: [PATCH 103/515] Update Exercises.ru.md Mistype correction --- Exercises.ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Exercises.ru.md b/Exercises.ru.md index 659e732..c4d280e 100644 --- a/Exercises.ru.md +++ b/Exercises.ru.md @@ -8,7 +8,7 @@ 1. [Переменные и типы данных](https://github.com/HowProgrammingWorks/DataTypes/blob/master/Exercises.ru.md) 2. [Базовый синтаксис JavaScript](https://github.com/HowProgrammingWorks/Reusable/blob/master/Exercises.ru.md) 3. [Функции и методы](https://github.com/HowProgrammingWorks/Function/blob/master/Exercises.ru.md) -4. [Циклы, итераирование](https://github.com/HowProgrammingWorks/Iteration/blob/master/Exercises.ru.md) +4. [Циклы, итерирование](https://github.com/HowProgrammingWorks/Iteration/blob/master/Exercises.ru.md) 5. [Замыкания и чеининг](https://github.com/HowProgrammingWorks/Closure/blob/master/Exercises.ru.md) 6. [Композиция функций](https://github.com/HowProgrammingWorks/Composition/blob/master/Exercises.ru.md) 7. [Работа с массивами](https://github.com/HowProgrammingWorks/Arrays/blob/master/Exercises.ru.md) From 09f1c3004d58b00c3368ee288acbe85cd4ae61ad Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 22 Nov 2019 14:55:45 +0200 Subject: [PATCH 104/515] Add video --- NodeUA.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NodeUA.md b/NodeUA.md index f6ebe1b..5d01112 100644 --- a/NodeUA.md +++ b/NodeUA.md @@ -9,6 +9,6 @@ - чт 17 отк: [Принцип единственной ответственности и закон Конвея](https://youtu.be/o4bQywkBKOI) - чт 31 отк: [Ассоциация, Агрегация и Композиция](https://youtu.be/tOIcBrzezK0) - чт 07 ноя: [Принцип подстановки Барбары Лисков](https://youtu.be/RbhYxygxroc) -- чт 21 ноя: Антипаттерны объектно-ориентированного программирования +- чт 21 ноя: [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) - чт 28 ноя: Безопасность приложений Node.js - чт 05 дек: Изоляция запросов в Node.js From 29a1dad35f5cc5bc770ca6b6a24c955db583b53b Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 24 Nov 2019 22:38:29 +0200 Subject: [PATCH 105/515] Environment configuration --- Exercises.ru.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Exercises.ru.md b/Exercises.ru.md index 659e732..585a2b7 100644 --- a/Exercises.ru.md +++ b/Exercises.ru.md @@ -5,6 +5,7 @@ - [Семинар: выполнение лабораторных работ по курсу "Основы программирования"](https://youtu.be/ikUOyFPzdJw) Репозитории с задачами: +0. [Настройка среды](https://github.com/HowProgrammingWorks/Introduction/blob/master/Exercises.ru.md) 1. [Переменные и типы данных](https://github.com/HowProgrammingWorks/DataTypes/blob/master/Exercises.ru.md) 2. [Базовый синтаксис JavaScript](https://github.com/HowProgrammingWorks/Reusable/blob/master/Exercises.ru.md) 3. [Функции и методы](https://github.com/HowProgrammingWorks/Function/blob/master/Exercises.ru.md) From 427081c3644b9b88f027f22aafd4b7b49aafbaf1 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 24 Nov 2019 22:39:02 +0200 Subject: [PATCH 106/515] Fix list --- Exercises.ru.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Exercises.ru.md b/Exercises.ru.md index 585a2b7..ae1d181 100644 --- a/Exercises.ru.md +++ b/Exercises.ru.md @@ -5,6 +5,7 @@ - [Семинар: выполнение лабораторных работ по курсу "Основы программирования"](https://youtu.be/ikUOyFPzdJw) Репозитории с задачами: + 0. [Настройка среды](https://github.com/HowProgrammingWorks/Introduction/blob/master/Exercises.ru.md) 1. [Переменные и типы данных](https://github.com/HowProgrammingWorks/DataTypes/blob/master/Exercises.ru.md) 2. [Базовый синтаксис JavaScript](https://github.com/HowProgrammingWorks/Reusable/blob/master/Exercises.ru.md) From 565b0ffce653232b4f33b78a37d754b0bbfb6ac3 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 25 Nov 2019 22:03:49 +0200 Subject: [PATCH 107/515] Add special course --- Courses/Special.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Courses/Special.md diff --git a/Courses/Special.md b/Courses/Special.md new file mode 100644 index 0000000..dc2ced0 --- /dev/null +++ b/Courses/Special.md @@ -0,0 +1,42 @@ +# Special Course for Information System Security + +1. Web programming and technologies +1.1. [JavaScript Syntax (Day 1)](https://github.com/HowProgrammingWorks/Reusable/tree/master/JavaScript) +1.1.1. Variables, data types, typeof, instanceof +1.1.2. Functions, arrays, objects +1.1.3. Difference between literals and references +1.1.4. Loop statements: for, for...of, for...in +1.2. Environment setup for practical tasks (Day 2) +1.2.1. Tools: node, npm, git, eslint (install if not installed) +1.2.2. How to use MDN documentation and find solutions +1.2.3. Clone repository, install dependencies and run tests +``` +git clone https://github.com/HowProgrammingWorks/Reusable +cd Reusable +npm i +npm t +``` +1.2.4. Open tasks in file: `./Exercises.en.md` +1.2.5. Find tasks stubs in directory `./Exercises` +1.2.6. Implement and run tests: `npm t` +1.3. Project structure (Day 3) +1.3.1. Functions, closures +1.3.2. Modules, import and export +1.3.3. Prototypes and classes +1.3.4. Patterns overview +1.4. Practical tasks (Day 4) +1.5. Data structures and collections (Day 5) +1.5.1. Arrays, Object, Map, Set +1.5.2. Lists, graphs, trees, queue +2. Creating server-side application +2.1. Node.js and server-side JavaScript Introduction (Day 5) +2.1.1. Node.js projects, package.json, dependencies, global namespace +2.1.2. Event loop, Async I/O, Timers +2.1.3. Process arguments, console, CLI +2.2. Node.js web servers (Day 6) +2.3. Practical tasks (Day 7) +2.4. Working with databases from Node.js (Day 8) +3. Final contest +3.1. Application structure, Prepare contest (Day 9) +3.2. API implementation (Day 10) +3.3. Contest day (Day 11) From 0e8b45b96eb07cfef2e917874762724c5ef4bc42 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 25 Nov 2019 22:26:13 +0200 Subject: [PATCH 108/515] Update markdown --- Courses/Special.md | 70 ++++++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/Courses/Special.md b/Courses/Special.md index dc2ced0..f3fb080 100644 --- a/Courses/Special.md +++ b/Courses/Special.md @@ -1,42 +1,44 @@ # Special Course for Information System Security -1. Web programming and technologies -1.1. [JavaScript Syntax (Day 1)](https://github.com/HowProgrammingWorks/Reusable/tree/master/JavaScript) -1.1.1. Variables, data types, typeof, instanceof -1.1.2. Functions, arrays, objects -1.1.3. Difference between literals and references -1.1.4. Loop statements: for, for...of, for...in -1.2. Environment setup for practical tasks (Day 2) -1.2.1. Tools: node, npm, git, eslint (install if not installed) -1.2.2. How to use MDN documentation and find solutions -1.2.3. Clone repository, install dependencies and run tests +## Web programming and technologies +1. [JavaScript Syntax (Day 1)](https://github.com/HowProgrammingWorks/Reusable/tree/master/JavaScript) + - Variables, data types, typeof, instanceof + - Functions, arrays, objects + - Difference between literals and references + - Loop statements: for, for...of, for...in +2. Environment setup for practical tasks (Day 2) + - Tools: node, npm, git, eslint (install if not installed) + - How to use MDN documentation and find solutions + - Clone repository, install dependencies and run tests ``` git clone https://github.com/HowProgrammingWorks/Reusable cd Reusable npm i npm t ``` -1.2.4. Open tasks in file: `./Exercises.en.md` -1.2.5. Find tasks stubs in directory `./Exercises` -1.2.6. Implement and run tests: `npm t` -1.3. Project structure (Day 3) -1.3.1. Functions, closures -1.3.2. Modules, import and export -1.3.3. Prototypes and classes -1.3.4. Patterns overview -1.4. Practical tasks (Day 4) -1.5. Data structures and collections (Day 5) -1.5.1. Arrays, Object, Map, Set -1.5.2. Lists, graphs, trees, queue -2. Creating server-side application -2.1. Node.js and server-side JavaScript Introduction (Day 5) -2.1.1. Node.js projects, package.json, dependencies, global namespace -2.1.2. Event loop, Async I/O, Timers -2.1.3. Process arguments, console, CLI -2.2. Node.js web servers (Day 6) -2.3. Practical tasks (Day 7) -2.4. Working with databases from Node.js (Day 8) -3. Final contest -3.1. Application structure, Prepare contest (Day 9) -3.2. API implementation (Day 10) -3.3. Contest day (Day 11) + - Open tasks in file: `./Exercises.en.md` + - Find tasks stubs in directory `./Exercises` + - Implement and run tests: `npm t` +3. Project structure (Day 3) + - Functions, closures + - Modules, import and export + - Prototypes and classes + - Patterns overview +4. Practical tasks (Day 4) +5. Data structures and collections (Day 5) + - Arrays, Object, Map, Set + - Lists, graphs, trees, queue + +## Creating server-side application +1. Node.js and server-side JavaScript Introduction (Day 5) + - Node.js projects, package.json, dependencies, global namespace + - Event loop, Async I/O, Timers + - Process arguments, console, CLI +2. Node.js web servers (Day 6) +3. Practical tasks (Day 7) +4. Working with databases from Node.js (Day 8) + +## Final contest +1. Application structure, Prepare contest (Day 9) +2. API implementation (Day 10) +3. Contest day (Day 11) From dec087be5584eb088a143fb06e1533b363405bc7 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 26 Nov 2019 20:19:04 +0200 Subject: [PATCH 109/515] Add video --- IP9X.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/IP9X.md b/IP9X.md index 4954679..2fb46a3 100644 --- a/IP9X.md +++ b/IP9X.md @@ -69,8 +69,7 @@ - вт 19 ноя 16:40: [Прототипное программирование и прототипное наследование](https://youtu.be/SzaXTW2qcJE) - вт 19 ноя 17:20: [Мемоизация: memoize](https://youtu.be/H6S8QJo2Qxg) - видео: [Фабрики и пулы объектов в JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) -- вт 26 ноя 16:10: Обертки и декораторы в JavaScript и TypeScript -- вт 26 ноя 17:30: Семинар: Какие бы языки и технологии еще освоить +- вт 26 ноя 16:10: [Функции-обертки: wrappers](https://www.youtube.com/watch?v=En7pWi2fSzs) - видео: [Типизированные массивы в JavaScript](https://youtu.be/tTNcqxbxhfY) - вт 03 дек 16:10: Новое в JavaScript - вт 03 дек 17:30: Семинар: Обзор материала и как готовиться к экзамену From 024fa22f9c6aead50d8d763a450d35ea4340850c Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 26 Nov 2019 20:20:56 +0200 Subject: [PATCH 110/515] Add to queue --- Calendar.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Calendar.md b/Calendar.md index 1cb8862..b86cbf4 100644 --- a/Calendar.md +++ b/Calendar.md @@ -47,3 +47,4 @@ - Обзорная лекция: Парсинг, компиляция и интерпретация кода - Семинар: Как устроен ИТ-бизнес - Семинар: Как получить первый практический опыт +- Семинар: Какие бы языки и технологии еще освоить From e0557007b295ce2d08310120dd14ffe463a0fc2d Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 30 Nov 2019 23:19:04 +0200 Subject: [PATCH 111/515] Add video --- Courses/Introduction.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Introduction.md b/Courses/Introduction.md index ea762df..7280ed9 100644 --- a/Courses/Introduction.md +++ b/Courses/Introduction.md @@ -1,5 +1,6 @@ # Введение и обзор знаний +- [Почему хорошее ИТ-образование невостребовано рыночком (выступление на Глушков Fest 2019)](https://youtu.be/nvIJE6xMpiI) - [Подход к изучению программирования](https://youtu.be/zMU4ir10DMg) - [Карта специальности инженер-программист](https://youtu.be/SE5aXH-yf0I) - [Node.js Введение в технологию](https://youtu.be/WBcHgaoHh1k) From cad962097c1556558748d2c1063054f5a0180a31 Mon Sep 17 00:00:00 2001 From: Ivan Granat Date: Sat, 30 Nov 2019 23:10:27 +0100 Subject: [PATCH 112/515] Update 2017-Summer-school.md --- Archive/2017-Summer-school.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Archive/2017-Summer-school.md b/Archive/2017-Summer-school.md index 6b1576e..0c267e6 100644 --- a/Archive/2017-Summer-school.md +++ b/Archive/2017-Summer-school.md @@ -15,6 +15,6 @@ - [5. Замыкания, примеси, обертки, функторы, события](https://youtu.be/8_aKQBhzpl8) - [6. Файлы, потоки, буферы, сеть, сокеты, ошибки](https://youtu.be/Cvsv672Lbvk) - [7. Внедрение зависимостей DI, Firebase, Angular, SPA, React, Обработка ошибок](https://youtu.be/LaxV_CDdV5c) -- 8. Асинхронное программирование -- 9. Песочницы, IoC, DI, IPC, структура приложений +- [8. Асинхронное программирование](https://youtu.be/81tXZUP7tBY) +- [9. Песочницы, IoC, DI, IPC, структура приложений](https://youtu.be/fjAUssuzTm4) - 10. Архитектура приложений и метапрограммирование From 4c1ec5fc22a76dd2efb245cab592258ccc99ef15 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 3 Dec 2019 21:29:16 +0200 Subject: [PATCH 113/515] Add video --- IP9X.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IP9X.md b/IP9X.md index 2fb46a3..32a2520 100644 --- a/IP9X.md +++ b/IP9X.md @@ -71,5 +71,5 @@ - видео: [Фабрики и пулы объектов в JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) - вт 26 ноя 16:10: [Функции-обертки: wrappers](https://www.youtube.com/watch?v=En7pWi2fSzs) - видео: [Типизированные массивы в JavaScript](https://youtu.be/tTNcqxbxhfY) -- вт 03 дек 16:10: Новое в JavaScript +- вт 03 дек 16:10: [Новое в JavaScript](https://youtu.be/fUjHLj8bq_Y) - вт 03 дек 17:30: Семинар: Обзор материала и как готовиться к экзамену From a96e2106e78fca8f0e9ebccbde0bfeed715442e2 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 3 Dec 2019 21:30:08 +0200 Subject: [PATCH 114/515] Schedule next lecture --- IP9X.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IP9X.md b/IP9X.md index 32a2520..fdc59b3 100644 --- a/IP9X.md +++ b/IP9X.md @@ -72,4 +72,4 @@ - вт 26 ноя 16:10: [Функции-обертки: wrappers](https://www.youtube.com/watch?v=En7pWi2fSzs) - видео: [Типизированные массивы в JavaScript](https://youtu.be/tTNcqxbxhfY) - вт 03 дек 16:10: [Новое в JavaScript](https://youtu.be/fUjHLj8bq_Y) -- вт 03 дек 17:30: Семинар: Обзор материала и как готовиться к экзамену +- вт 10 дек 14:15: Семинар: Обзор материала и как готовиться к экзамену From 50fb320ee1ea7198ae6ee5210a17593b9157ea84 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 5 Dec 2019 00:04:02 +0200 Subject: [PATCH 115/515] Add video --- NodeUA.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NodeUA.md b/NodeUA.md index 5d01112..37c4004 100644 --- a/NodeUA.md +++ b/NodeUA.md @@ -10,5 +10,5 @@ - чт 31 отк: [Ассоциация, Агрегация и Композиция](https://youtu.be/tOIcBrzezK0) - чт 07 ноя: [Принцип подстановки Барбары Лисков](https://youtu.be/RbhYxygxroc) - чт 21 ноя: [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) -- чт 28 ноя: Безопасность приложений Node.js +- чт 28 ноя: [Безопасность приложений Node.js](https://youtu.be/Pdfo1G-gI6s) - чт 05 дек: Изоляция запросов в Node.js From db897ccc12425e19a1f97723038b1472bfaeb929 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 5 Dec 2019 00:30:30 +0200 Subject: [PATCH 116/515] Add links to videos --- Courses/Fundamentals.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index 5a14248..97f3b8a 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -28,13 +28,13 @@ - [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) - Функции: https://github.com/HowProgrammingWorks/Function - Замыкания: https://github.com/HowProgrammingWorks/Closure -- Антипаттерны процедурного программирования (готовится) +- [Антипаттерны процедурного программирования](https://youtu.be/cTv7V22mkwE) - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/02-Procedural - [Массивы, объекты, классы, прототипы в JavaScript](https://youtu.be/VBMGnAPfmsY) - Структуры данных: https://github.com/HowProgrammingWorks/DataStructures - Итерирование: https://github.com/HowProgrammingWorks/Iteration - Прототипы: https://github.com/HowProgrammingWorks/Prototype -- Антипаттерны объектно-ориентированного программирования (готовится) +- [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/03-OOP - [Композиция, каррирование, частичное применение в JavaScript](https://youtu.be/ND8KQ5xjk7o) - Частичное применение: https://github.com/HowProgrammingWorks/PartialApplication From 8d1ef8a91aa365d0da00e063fc2260c0ade64dc4 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 5 Dec 2019 21:35:02 +0200 Subject: [PATCH 117/515] Add video --- NodeUA.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NodeUA.md b/NodeUA.md index 37c4004..3da9ab6 100644 --- a/NodeUA.md +++ b/NodeUA.md @@ -11,4 +11,4 @@ - чт 07 ноя: [Принцип подстановки Барбары Лисков](https://youtu.be/RbhYxygxroc) - чт 21 ноя: [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) - чт 28 ноя: [Безопасность приложений Node.js](https://youtu.be/Pdfo1G-gI6s) -- чт 05 дек: Изоляция запросов в Node.js +- чт 05 дек: [Serverless Clouds (FaaS) и изоляция контекстов запросов в Node.js](https://youtu.be/x-Rd6fPV6L8) From 937762a1817f95e7fae6392166e6305a91520ae2 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 9 Dec 2019 20:27:35 +0200 Subject: [PATCH 118/515] Fix IP9X index --- IP9X.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/IP9X.md b/IP9X.md index fdc59b3..b6e4b69 100644 --- a/IP9X.md +++ b/IP9X.md @@ -1,12 +1,12 @@ -# Материалы курса IP9X: Основы программирования +# Материалы курса IP9X: Основы инженерии программного обеспечения ## Ссылки -- Канал: https://t.me/HowProgrammingWorks -- Группа (чат): https://t.me/Programming_IP9X -- Регистрация на митапы: https://www.meetup.com/HowProgrammingWorks -- Все задачи: https://github.com/HowProgrammingWorks/Index/blob/master/Exercises.ru.md - Автор: https://github.com/tshemsedinov +- Канал в телеграме: https://t.me/HowProgrammingWorks +- Группа (чат): https://t.me/Programming_IP9X +- Задачи по курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Exercises.ru.md +- Словарь терминов: https://github.com/HowProgrammingWorks/Dictionary/blob/master/IP9X.ru.md ## Программа на 1й семестр From e074a814d0fd1606a0dd227acf247a1b82eda30d Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 10 Dec 2019 00:08:59 +0200 Subject: [PATCH 119/515] Update fundamentals index --- Courses/Fundamentals.md | 112 +++++++++++++++++++++++++++++----------- IP9X.md | 2 + README.md | 2 +- 3 files changed, 84 insertions(+), 32 deletions(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index 97f3b8a..ed4d1de 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -1,90 +1,140 @@ # Основы программирования +## Ссылки + +- Автор: https://github.com/tshemsedinov +- Канал в телеграме: https://t.me/HowProgrammingWorks +- Группа (чат): https://t.me/Programming_IP9X +- Задачи по курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Exercises.ru.md +- Словарь терминов: https://github.com/HowProgrammingWorks/Dictionary/blob/master/IP9X.ru.md + +## 1 семестр + - [Введение в программирование](https://youtu.be/5Gt61EX6HZ4) - Абстракция, модель, алгоритм, программа, синтаксис, повторное использование - Значение, идентификатор, переменная и константа, литерал, присвоение - Типы данных, скалярные, ссылочные и структурные типы - Оператор и выражение, блок кода, функция, цикл, условие + - Слайды: https://www.slideshare.net/tshemsedinov/1-168855278 - [Введение в программирование, продолжение](https://youtu.be/PzlLXQ3RaDs) - Процедуры и функции, стек и куча, коллекции, модули, компоненты, библиотеки - Языки и парадигмы программирования, технологические стеки - Среда разработки и отладка кода - - Примеры кода и задачи: https://github.com/HowProgrammingWorks/Introduction +- Семинар: [Обсуждение плана и материалов курса](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) - [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) - - Примеры кода и задачи - - https://github.com/HowProgrammingWorks/Reusable - - https://github.com/HowProgrammingWorks/Cheatsheet + - Абстракции и их переиспользование: 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) -- [Языки программирования](https://youtu.be/enHA1CRkJe0) -- [Семинар: JavaScript, ответы на вопросы](https://youtu.be/wqkQ6eslyzY) -- [История развития программирования](https://youtu.be/qqz0VSaNxuw) -- [Парадигмы программирования](https://youtu.be/Yk1sxLVHfjs) -- [Антипаттерны общие для всех парадигм](https://youtu.be/NMUsUiFokr4) - - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/01-Common + - Типы данных: https://github.com/HowProgrammingWorks/DataTypes + - Условия: https://github.com/HowProgrammingWorks/Conditional +- Семинар: [Базовый синтаксис языка JavaScript](https://youtu.be/PGqjTXQe_qw) +- Семинар: [Автоматическая проверка лабораторных работ](https://youtu.be/M4KpG0LEAyA) - [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) - Функции: https://github.com/HowProgrammingWorks/Function - Замыкания: https://github.com/HowProgrammingWorks/Closure -- [Антипаттерны процедурного программирования](https://youtu.be/cTv7V22mkwE) - - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/02-Procedural - [Массивы, объекты, классы, прототипы в JavaScript](https://youtu.be/VBMGnAPfmsY) - Структуры данных: https://github.com/HowProgrammingWorks/DataStructures - Итерирование: https://github.com/HowProgrammingWorks/Iteration - Прототипы: https://github.com/HowProgrammingWorks/Prototype -- [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) - - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/03-OOP -- [Композиция, каррирование, частичное применение в JavaScript](https://youtu.be/ND8KQ5xjk7o) - - Частичное применение: https://github.com/HowProgrammingWorks/PartialApplication - - Композиция: https://github.com/HowProgrammingWorks/Composition +- [Языки программирования](https://youtu.be/enHA1CRkJe0) +- Семинар: [JavaScript, ответы на вопросы](https://youtu.be/wqkQ6eslyzY) +- [Частичное применение и каррирование в 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 -- Антипаттерны функционального программирования (готовится) +- [История развития языков программирования](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 -- [Примеси, обертки, декораторы, мемоизация в JavaScript](https://youtu.be/oRQ0kQr1N-U) +- [Примеси, обертки, декораторы, мемоизация в JavaScript](https://youtu.be/2h9syXN5wO0) - Обертки: https://github.com/HowProgrammingWorks/Wrapper - Примеси: https://github.com/HowProgrammingWorks/Mixin - Мемоизация: https://github.com/HowProgrammingWorks/Memoization +- [Антипаттерны общие для всех парадигм](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 - [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) - Чеининг: https://github.com/HowProgrammingWorks/Chaining - Обработка ошибок: https://github.com/HowProgrammingWorks/Errors - [Рекурсия: косвенная и хвостовая, стек, выход](https://youtu.be/W2skCjIgVKE) - Примеры кода: https://github.com/HowProgrammingWorks/Recursion +- [Итерирование, циклы и итераторы в 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) - [Таймеры, таймауты и 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 -- [Итерирование, циклы и итераторы в JavaScript](https://youtu.be/lq3b5_UGJas) - - Примеры кода: https://github.com/HowProgrammingWorks/Iteration -- [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) - - Примеры кода: https://github.com/HowProgrammingWorks/FunctionalProgramming -- [Реактивное программирование на JavaScript](https://youtu.be/7MH8-qQc-48) - - Примеры кода: https://github.com/HowProgrammingWorks/ReactiveProgramming -- [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) - - Примеры кода: https://github.com/HowProgrammingWorks/Projection +- Семинар: [Выполнение лабораторных работ по курсу](https://youtu.be/ikUOyFPzdJw) +- [Массивы в 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 +- [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 +- [Мономорфный и полиморфный код, инлайн-кэш, скрытые классы](https://youtu.be/9JUY3prnCQ4) + - Примеры кода: https://github.com/HowProgrammingWorks/Monomorphism - [Сериализация и десериализация в 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 в 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 +- [Композиция: 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/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 - [Фабрики и пулы объектов в 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 - [Типизированные массивы в JavaScript](https://youtu.be/tTNcqxbxhfY) - Примеры кода: https://github.com/HowProgrammingWorks/TypedArrays +- [Новое в JavaScript](https://youtu.be/fUjHLj8bq_Y) + - Слайды: https://www.slideshare.net/tshemsedinov/javascript-esnext-ecmascript-2020-es11-es10-es9-es8-es7-es6-es2020-es2019 + - Примеры кода: https://github.com/HowProgrammingWorks/ESNext +- Семинар: Обзор материала и как готовиться к экзамену + +## Необязательные темы на 1 семестр + +- [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) + - Примеры кода: https://github.com/HowProgrammingWorks/Projection +- [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) + - Смотрите обзорно, это не обязательная лекция, попробуйте уловить суть парадигмы + - Примеры кода: https://github.com/HowProgrammingWorks/FunctionalProgramming +- [Реактивное программирование на JavaScript](https://youtu.be/7MH8-qQc-48) + - Примеры кода: https://github.com/HowProgrammingWorks/ReactiveProgramming + +## 2 семестр (материалы готовятся) + +- [Антипаттерны объектно-ориентированного программирования](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) diff --git a/IP9X.md b/IP9X.md index b6e4b69..2b15d57 100644 --- a/IP9X.md +++ b/IP9X.md @@ -1,5 +1,7 @@ # Материалы курса IP9X: Основы инженерии программного обеспечения +[Обновленная версия программы курса](Courses/Fundamentals.md) + ## Ссылки - Автор: https://github.com/tshemsedinov diff --git a/README.md b/README.md index d160d84..33e06ee 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ - [Введение и обзор знаний](Courses/Introduction.md) (есть несколько видео-лекций) - [Основы программирования](Courses/Fundamentals.md) - (есть до 90% материала, но нужно сводить разные варианты) + (есть до 95% материала) - [Алгоритмы и структуры данных](Courses/AlgAndData.md) (есть до 20% материала, нужно сводить разные варианты) - [Инструменты разработки и жизненного цикла ПО](Courses/Tools.md) From 5d16eb27c2e30abf980ee6f9126da3a566a15ab7 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 10 Dec 2019 20:47:28 +0200 Subject: [PATCH 120/515] Remove old video to additional lectures --- Courses/Fundamentals.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index ed4d1de..bea55ab 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -52,10 +52,6 @@ - [Парадигмы программирования](https://youtu.be/Yk1sxLVHfjs) - [Работа со строками, шаблонами и юникодом в JavaScript](https://youtu.be/GcopcHQkA8M) - Примеры кода: https://github.com/HowProgrammingWorks/String -- [Примеси, обертки, декораторы, мемоизация в JavaScript](https://youtu.be/2h9syXN5wO0) - - Обертки: https://github.com/HowProgrammingWorks/Wrapper - - Примеси: https://github.com/HowProgrammingWorks/Mixin - - Мемоизация: https://github.com/HowProgrammingWorks/Memoization - [Антипаттерны общие для всех парадигм](https://youtu.be/NMUsUiFokr4) - Примеры кода: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/01-Common - [Консоль и командная строка в JavaScript и Node.js](https://youtu.be/5aSZyKi5BmE) @@ -103,17 +99,21 @@ - [Композиция: pipe, compose](https://youtu.be/xS9FicVrOTI) - Примеры кода: https://github.com/HowProgrammingWorks/Composition - [Примеси: mixin, extend, Object.assign, class λ-mixin](https://youtu.be/NZMrJ2adEyY) + - Тема class λ-mixin из этой лекции не обязательна для 1 семестра - Примеры кода: https://github.com/HowProgrammingWorks/Mixin + - Старая версия лекции: https://youtu.be/2h9syXN5wO0 - [Прототипное программирование и прототипное наследование](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 - [Фабрики и пулы объектов в 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) From 5dc52d12e3c1e07b854f2f27690bce84665964de Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 10 Dec 2019 20:54:56 +0200 Subject: [PATCH 121/515] Move lectures to optional --- Courses/Fundamentals.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index bea55ab..a2e6bff 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -83,8 +83,6 @@ - [Структуры данных: списки, стек, очередь, дэк в JavaScript](https://youtu.be/9KvA4hDDSjk) - Списки: https://github.com/HowProgrammingWorks/LinkedList - Очереди: https://github.com/HowProgrammingWorks/Dequeue -- [Мономорфный и полиморфный код, инлайн-кэш, скрытые классы](https://youtu.be/9JUY3prnCQ4) - - Примеры кода: https://github.com/HowProgrammingWorks/Monomorphism - [Сериализация и десериализация в JavaScript и Node.js](https://youtu.be/GtKPniOEzh8) - Примеры кода: https://github.com/HowProgrammingWorks/Serialization - [Рефакторинг: причины, цели, техники и процесс](https://youtu.be/z73wmpdweQ4) @@ -117,14 +115,16 @@ - [Типизированные массивы в JavaScript](https://youtu.be/tTNcqxbxhfY) - Примеры кода: https://github.com/HowProgrammingWorks/TypedArrays - [Новое в JavaScript](https://youtu.be/fUjHLj8bq_Y) + - Не все в лекции обязательно для 1 семестра, что поймете, то и хорошо - Слайды: https://www.slideshare.net/tshemsedinov/javascript-esnext-ecmascript-2020-es11-es10-es9-es8-es7-es6-es2020-es2019 - Примеры кода: https://github.com/HowProgrammingWorks/ESNext -- Семинар: Обзор материала и как готовиться к экзамену ## Необязательные темы на 1 семестр - [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) - Примеры кода: https://github.com/HowProgrammingWorks/Projection +- [Мономорфный и полиморфный код, инлайн-кэш, скрытые классы](https://youtu.be/9JUY3prnCQ4) + - Примеры кода: https://github.com/HowProgrammingWorks/Monomorphism - [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) - Смотрите обзорно, это не обязательная лекция, попробуйте уловить суть парадигмы - Примеры кода: https://github.com/HowProgrammingWorks/FunctionalProgramming From ffb28f821312b0a4e0d53df0f8c5e17dfdc1af69 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 14 Dec 2019 23:20:26 +0200 Subject: [PATCH 122/515] Add securiti lectures --- Courses/Security.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Courses/Security.md b/Courses/Security.md index 522efec..a790cf8 100644 --- a/Courses/Security.md +++ b/Courses/Security.md @@ -1 +1,12 @@ # Безопасность информационных систем + +- [SQL Injection](https://youtu.be/Pdfo1G-gI6s) + - https://github.com/HowProgrammingWorks/SQLInjection +- [Path Traversal Attack](https://youtu.be/Pdfo1G-gI6s) + - https://github.com/HowProgrammingWorks/PathTraversal +- Cross-Site Request Forgery (CSRF) + - https://github.com/HowProgrammingWorks/CSRF +- Cross-site Scripting (XSS) + - https://github.com/HowProgrammingWorks/XSS +- Denial of Service (DoS) + - https://github.com/HowProgrammingWorks/DoS From a48411cced019db8224b5c3706cefb4ff9e5c693 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 17 Dec 2019 00:06:16 +0200 Subject: [PATCH 123/515] Add link to new exercises --- Exercises.ru.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Exercises.ru.md b/Exercises.ru.md index 585f165..5cba081 100644 --- a/Exercises.ru.md +++ b/Exercises.ru.md @@ -14,3 +14,4 @@ 5. [Замыкания и чеининг](https://github.com/HowProgrammingWorks/Closure/blob/master/Exercises.ru.md) 6. [Композиция функций](https://github.com/HowProgrammingWorks/Composition/blob/master/Exercises.ru.md) 7. [Работа с массивами](https://github.com/HowProgrammingWorks/Arrays/blob/master/Exercises.ru.md) +8. [Функции высшего порядка](https://github.com/HowProgrammingWorks/HigherOrderFunction/blob/master/Exercises.ru.md) From 1493c66f4a1b8cb6cd053de307af74b3065a2147 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 20 Dec 2019 23:43:01 +0200 Subject: [PATCH 124/515] Update Node.js lectures, add slides --- Courses/NodeJS.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index 772881c..904dbad 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -4,6 +4,7 @@ - [Node.js Введение в технологию](https://youtu.be/WBcHgaoHh1k) - [Node.js в 2019 году](https://youtu.be/CUU49jjHloM) + - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-in-2019 - [Обзор встроенного Node.js API](https://youtu.be/sOkjR-N6IAs) - [Модули, слои, структура проекта, песочницы в JavaScript и Node.js](https://youtu.be/O7A9chb573E) - Пример проекта: https://github.com/HowProgrammingWorks/Project @@ -41,6 +42,7 @@ - Мьютексы: https://github.com/HowProgrammingWorks/Mutex - [Разделяемая память в многопоточном Node.js](https://youtu.be/KNsm_iIQt7U) - доклад на конференции JS Fest 2019 Spring + - Слайды: https://www.slideshare.net/JSFestUA/js-fest-2019-nodejs - [Необработанные ошибки в промисах](https://youtu.be/1Ml5NE2fsZ8) - Примеры кода: https://github.com/HowProgrammingWorks/PromiseError - [HTTP сессии и cookies на чистом Node.js](https://youtu.be/T_wKXuWW4Wo) @@ -60,9 +62,11 @@ - Примеры кода: https://github.com/HowProgrammingWorks/Logging - [Модель акторов (Actor Model)](https://youtu.be/xp5MVKEqxY4) - Примеры кода: https://github.com/HowProgrammingWorks/ActorModel -- [Отдача статики в Node.js](https://youtu.be/a7d7RdjPAbQ) +- [Отдача статики в Node.js](https://youtu.be/n_AdKIzbpBc) + - Примеры кода и задачи: https://github.com/HowProgrammingWorks/ServeStatic - [Graceful Shutdown в Node.js](https://youtu.be/ZstnowFeCe0) -- Отправка Email из Node.js (готовится, 21 ноября 2019) -- GeoIP в Node.js (готовится, 21 ноября 2019) -- Безопасность приложений Node.js (готовится, 28 ноября 2019) -- Изоляция запросов в Node.js (готовится, 05 декабря 2019) + - Примеры кода и задачи: https://github.com/HowProgrammingWorks/GracefulShutdown +- [Безопасность приложений Node.js](https://youtu.be/Pdfo1G-gI6s) + - Слайды: 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 From 7247787706e4ad0e46f790179113fd37fbd0a265 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 20 Dec 2019 23:54:17 +0200 Subject: [PATCH 125/515] Add 2019 autumn lectures --- Courses/Architecture.md | 6 ++++++ Courses/Databases.md | 6 ++++++ Courses/Functional.md | 1 + Courses/Highload.md | 2 ++ Courses/Network.md | 5 ++++- Courses/OOP.md | 4 ++++ Courses/Patterns.md | 4 ++++ Courses/Web.md | 4 ++++ 8 files changed, 31 insertions(+), 1 deletion(-) diff --git a/Courses/Architecture.md b/Courses/Architecture.md index 8ecf487..27deaa8 100644 --- a/Courses/Architecture.md +++ b/Courses/Architecture.md @@ -45,3 +45,9 @@ - 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 diff --git a/Courses/Databases.md b/Courses/Databases.md index c09a32f..87e72fc 100644 --- a/Courses/Databases.md +++ b/Courses/Databases.md @@ -42,3 +42,9 @@ - EventSourcing: https://github.com/HowProgrammingWorks/EventSourcing - Трехзвенные приложения баз данных - Инъекции SQL и защита от них +- [Применение EventSourcing](https://youtu.be/kFNtKiK2SPs) + - https://github.com/HowProgrammingWorks/EventSourcing + - https://github.com/HowProgrammingWorks/CQRS + - https://github.com/HowProgrammingWorks/Command +- [Безопасность приложений Node.js](https://youtu.be/Pdfo1G-gI6s) + - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-security-199004963 diff --git a/Courses/Functional.md b/Courses/Functional.md index c92a552..57cfee5 100644 --- a/Courses/Functional.md +++ b/Courses/Functional.md @@ -28,3 +28,4 @@ - Примеры кода: https://github.com/HowProgrammingWorks/Lenses - [Асинхронная композиция функций](https://youtu.be/3ZCrMlMpOrM) - Примеры кода: https://github.com/HowProgrammingWorks/AsyncCompose +- [Принцип подстановки Барбары Лисков](https://youtu.be/RbhYxygxroc) diff --git a/Courses/Highload.md b/Courses/Highload.md index b7ff37a..878358a 100644 --- a/Courses/Highload.md +++ b/Courses/Highload.md @@ -1,3 +1,5 @@ # Высоконагруженные и масштабируемые системы - [Высоконагруженные распределенные приложения на Node.js](https://youtu.be/7tfZDABPvVs) +- [Serverless Clouds (FaaS) и изоляция контекстов запросов в Node.js](https://youtu.be/x-Rd6fPV6L8) + - Слайды: https://www.slideshare.net/tshemsedinov/serverless-clouds-faas-and-request-context-isolation-in-nodejs diff --git a/Courses/Network.md b/Courses/Network.md index 0fa42df..e113edf 100644 --- a/Courses/Network.md +++ b/Courses/Network.md @@ -16,4 +16,7 @@ - CQS: https://github.com/HowProgrammingWorks/CQS - CQRS: https://github.com/HowProgrammingWorks/CQRS - EventSourcing: https://github.com/HowProgrammingWorks/EventSourcing -- Примерение EventSourcing (готовится) +- [Применение EventSourcing](https://youtu.be/kFNtKiK2SPs) + - https://github.com/HowProgrammingWorks/EventSourcing + - https://github.com/HowProgrammingWorks/CQRS + - https://github.com/HowProgrammingWorks/Command diff --git a/Courses/OOP.md b/Courses/OOP.md index 2454321..5b652b9 100644 --- a/Courses/OOP.md +++ b/Courses/OOP.md @@ -8,3 +8,7 @@ - [Шаблоны проектирования](Patterns.md) - [Ассоциация, агрегация и композиция объектов](https://www.youtube.com/watch?v=tOIcBrzezK0) - Примеры кода: https://github.com/HowProgrammingWorks/Association +- [Принцип единственной ответственности и закон Конвея](https://youtu.be/o4bQywkBKOI) +- [Ассоциация, Агрегация и Композиция](https://youtu.be/tOIcBrzezK0) +- [Принцип подстановки Барбары Лисков](https://youtu.be/RbhYxygxroc) +- [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) diff --git a/Courses/Patterns.md b/Courses/Patterns.md index 382ccb5..b2a3e79 100644 --- a/Courses/Patterns.md +++ b/Courses/Patterns.md @@ -17,3 +17,7 @@ - Примеры кода: https://github.com/HowProgrammingWorks/RevealingConstructor - [Паттерн Наблюдатель (Observer + Observable)](https://youtu.be/_bFXuLcXoXg) - Примеры кода: https://github.com/HowProgrammingWorks/Observer +- [Принцип единственной ответственности и закон Конвея](https://youtu.be/o4bQywkBKOI) +- [Ассоциация, Агрегация и Композиция](https://youtu.be/tOIcBrzezK0) +- [Принцип подстановки Барбары Лисков](https://youtu.be/RbhYxygxroc) +- [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) diff --git a/Courses/Web.md b/Courses/Web.md index 70b2f58..4485bdc 100644 --- a/Courses/Web.md +++ b/Courses/Web.md @@ -16,3 +16,7 @@ - [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) +- [JavaScript в браузере: Web API (часть 1)](https://youtu.be/6O8SBJsNeNw) From 8e0c0318189c8c867f8d6b529dee7306c8cbad15 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 8 Jan 2020 00:00:35 +0200 Subject: [PATCH 126/515] Update license --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index f1dbfed..c12d3d8 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2017-2019 How.Programming.Works contributors +Copyright (c) 2017-2020 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 18358e5601965c87744e0742b166a4f5e4eaaa29 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 8 Jan 2020 00:04:06 +0200 Subject: [PATCH 127/515] Remove autumn schedule --- Calendar.md | 30 +----------------------------- 1 file changed, 1 insertion(+), 29 deletions(-) diff --git a/Calendar.md b/Calendar.md index b86cbf4..44bc2b8 100644 --- a/Calendar.md +++ b/Calendar.md @@ -1,35 +1,7 @@ -# Расписание на 2019-2020 +# Расписание на весну 2020 ## Запланированные -- вт 03 cен: Введение в программирование -- чт 05 сен: Node.js в 2019 году -- вт 10 сен: Введение в программирование, продолжение -- чт 12 сен: Graceful Shutdown в Node.js -- вт 17 сен: Языки программирования -- чт 19 сен: Отдача статики в Node.js -- вт 24 сен: Парадигмы программирования -- чт 26 сен: Применение EventSourcing -- вт 01 окт: Антипаттерны общие для всех парадигм -- чт 03 окт: ServiceWorkers и кеширование PWA -- вт 08 окт: Антипаттерны процедурного программирования -- чт 10 отк: JavaScript в браузере -- вт 15 отк: Массивы в JavaScript -- чт 17 отк: Принцип единственной ответственности -- вт 22 отк: Code Review -- вт 29 отк: Мономорфные функции -- чт 31 отк: Ассоциация, Агрегация и Композиция -- вт 05 ноя: Рефакторинг -- чт 07 ноя: Принцип подстановки Барбары Лисков -- вт 19 ноя: Прототипное программирование -- вт 19 ноя: Примеси в JavaScript -- вт 19 ноя: Мемоизация в JavaScript -- чт 21 ноя: Антипаттерны объектно-ориентированного программирования -- вт 26 ноя: Обертки и декораторы в JavaScript и TypeScript -- чт 28 ноя: Безопасность приложений Node.js -- вт 03 дек: Новое в JavaScript -- чт 05 дек: Изоляция запросов в Node.js - ## Очередь - Node.js для IoT (Internet of Things) From 9f444634122966d1b95fa0d72e7462d037caa7a6 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 8 Jan 2020 00:12:28 +0200 Subject: [PATCH 128/515] Add lectures to queue --- Calendar.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Calendar.md b/Calendar.md index 44bc2b8..3e5a5ab 100644 --- a/Calendar.md +++ b/Calendar.md @@ -4,6 +4,10 @@ ## Очередь +- Логирование в Node.js приложениях +- Конфигурирование приложений на Node.js +- Схемы для API, структур данных и баз данных +- Контрактное программирование - Node.js для IoT (Internet of Things) - Отправка Email из Node.js, GeoIP в Node.js - Обзор Web API (Часть 2) From 5f194327677d4c2ad7a6743489478fbfde181ec8 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 9 Jan 2020 20:49:51 +0200 Subject: [PATCH 129/515] Fix links --- Courses/Fundamentals.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index a2e6bff..2bf923e 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -140,8 +140,8 @@ - [Функциональные объекты, функторы и монады в JavaScript](https://youtu.be/3Z7f0Gi8pxw) - Примеры кода: https://github.com/HowProgrammingWorks/Functor - [Генераторы и асинхронные генераторы](https://youtu.be/kvNm9D32s8s) - - Генераторы: https://github.com/HowProgrammingWorks/AsyncGenerator - - Асинхронные генераторы: https://github.com/HowProgrammingWorks/Generator + - Генераторы: https://github.com/HowProgrammingWorks/Generator + - Асинхронные генераторы: https://github.com/HowProgrammingWorks/AsyncGenerator - [Итераторы и асинхронные итераторы](https://youtu.be/rBGFlWpVpGs) - Итераторы: https://github.com/HowProgrammingWorks/AsyncIterator - Асинхронные итераторы: https://github.com/HowProgrammingWorks/Iterator From 09abb23647edd68a0c46d0cf82b9f8c0935b7528 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 13 Jan 2020 23:23:38 +0200 Subject: [PATCH 130/515] Add toptic to queue --- Calendar.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Calendar.md b/Calendar.md index 3e5a5ab..cce8eed 100644 --- a/Calendar.md +++ b/Calendar.md @@ -8,6 +8,7 @@ - Конфигурирование приложений на Node.js - Схемы для API, структур данных и баз данных - Контрактное программирование +- Протекающие абстракции (Leaky abstractions) - Node.js для IoT (Internet of Things) - Отправка Email из Node.js, GeoIP в Node.js - Обзор Web API (Часть 2) From 1699eda19fec73910cfc1bd1befd2a6f7176edc5 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 13 Jan 2020 23:27:43 +0200 Subject: [PATCH 131/515] Add links to code examples --- Courses/OOP.md | 4 ++++ Courses/Patterns.md | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/Courses/OOP.md b/Courses/OOP.md index 5b652b9..40a087c 100644 --- a/Courses/OOP.md +++ b/Courses/OOP.md @@ -9,6 +9,10 @@ - [Ассоциация, агрегация и композиция объектов](https://www.youtube.com/watch?v=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) + - Примеры кода: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/03-OOP diff --git a/Courses/Patterns.md b/Courses/Patterns.md index b2a3e79..febf4df 100644 --- a/Courses/Patterns.md +++ b/Courses/Patterns.md @@ -18,6 +18,10 @@ - [Паттерн Наблюдатель (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 From 3ace5ba867b484546e59e039f3033ec495aad102 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 13 Jan 2020 23:30:39 +0200 Subject: [PATCH 132/515] Remove announcements --- Courses/NodeJS.md | 4 +--- Courses/OOP.md | 2 -- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index 904dbad..344811c 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -1,7 +1,5 @@ # Технологический стек Node.js -Видеолекций: 23, еще готовится в 2019 году: 8. - - [Node.js Введение в технологию](https://youtu.be/WBcHgaoHh1k) - [Node.js в 2019 году](https://youtu.be/CUU49jjHloM) - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-in-2019 @@ -57,7 +55,7 @@ - CQS: https://github.com/HowProgrammingWorks/CQS - CQRS: https://github.com/HowProgrammingWorks/CQRS - EventSourcing: https://github.com/HowProgrammingWorks/EventSourcing -- Применение EventSourcing (готовится, 26 сентября 2019) +- [Применение EventSourcing](https://youtu.be/kFNtKiK2SPs) - [Логирование на Node.js и JavaScript](https://youtu.be/4DkZj2Cdokc) - Примеры кода: https://github.com/HowProgrammingWorks/Logging - [Модель акторов (Actor Model)](https://youtu.be/xp5MVKEqxY4) diff --git a/Courses/OOP.md b/Courses/OOP.md index 40a087c..2b7fea6 100644 --- a/Courses/OOP.md +++ b/Courses/OOP.md @@ -3,8 +3,6 @@ - [Have Objects Failed? Или что не так с ООП?](https://youtu.be/4yO5OS0vPSw) - [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) - Примеры кода: https://github.com/HowProgrammingWorks/Generics -- Принцип подстановки Барбары Лисков (готовится) -- Принцип единственной ответственности (готовится) - [Шаблоны проектирования](Patterns.md) - [Ассоциация, агрегация и композиция объектов](https://www.youtube.com/watch?v=tOIcBrzezK0) - Примеры кода: https://github.com/HowProgrammingWorks/Association From 9aad380a06f9b0a3a0c76d62b343a28a85ec024f Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 18 Jan 2020 15:11:25 +0200 Subject: [PATCH 133/515] Update fundamentals (1 year) --- Courses/Fundamentals.md | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index 2bf923e..db6f572 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -6,9 +6,14 @@ - Канал в телеграме: https://t.me/HowProgrammingWorks - Группа (чат): https://t.me/Programming_IP9X - Задачи по курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Exercises.ru.md -- Словарь терминов: https://github.com/HowProgrammingWorks/Dictionary/blob/master/IP9X.ru.md +- Словарь терминов: https://github.com/HowProgrammingWorks/Dictionary/blob/master/Fundamentals.ru.md -## 1 семестр +## 1 семестр 1 курса + +Объем материала: 36 лекций (из них 4 вводные лекции, 8 лекций по языку JS, +18 лекций по фундаментальным понятиям теории программирования, 6 лекций по +инструментам и процессу разработки), 8 семинаров, 9 лабораторных работ, +47 репозиториев с примерами кода. - [Введение в программирование](https://youtu.be/5Gt61EX6HZ4) - Абстракция, модель, алгоритм, программа, синтаксис, повторное использование @@ -65,7 +70,7 @@ - Примеры кода: https://github.com/HowProgrammingWorks/Iteration - [Антипаттерны процедурного программирования](https://youtu.be/cTv7V22mkwE) - Примеры кода: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/02-Procedural -- [Ответы на вопросы по курсу "Основы программирования"](https://youtu.be/TY6nDW7aYys) +- Семинар: [Ответы на вопросы по курсу "Основы программирования"](https://youtu.be/TY6nDW7aYys) - [Таймеры, таймауты и EventEmitter](https://youtu.be/LK2jveAnRNg) - Таймеры: https://github.com/HowProgrammingWorks/Timers - EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter @@ -119,20 +124,30 @@ - Слайды: https://www.slideshare.net/tshemsedinov/javascript-esnext-ecmascript-2020-es11-es10-es9-es8-es7-es6-es2020-es2019 - Примеры кода: https://github.com/HowProgrammingWorks/ESNext -## Необязательные темы на 1 семестр +## 2 семестр 1 курса (материалы готовятся) +- [Карта специальности инженер-программист](https://youtu.be/SE5aXH-yf0I) +- [Подход к изучению программирования](https://youtu.be/zMU4ir10DMg) +- Списки: односвязные, двусвязные, циклические, развернутые +- [Графы и запросы к графовым структурам данных](https://youtu.be/a0W0T8Yqw3s) +- Структуры (struct или записи), наборы данных в памяти - [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) - Примеры кода: https://github.com/HowProgrammingWorks/Projection - [Мономорфный и полиморфный код, инлайн-кэш, скрытые классы](https://youtu.be/9JUY3prnCQ4) - Примеры кода: https://github.com/HowProgrammingWorks/Monomorphism -- [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) +- Объектно-ориентированное программирование +- [Функциональное программирование](https://youtu.be/0JxSs_GcvbQ) - Смотрите обзорно, это не обязательная лекция, попробуйте уловить суть парадигмы - Примеры кода: https://github.com/HowProgrammingWorks/FunctionalProgramming -- [Реактивное программирование на JavaScript](https://youtu.be/7MH8-qQc-48) +- [Реактивное программирование](https://youtu.be/7MH8-qQc-48) - Примеры кода: https://github.com/HowProgrammingWorks/ReactiveProgramming - -## 2 семестр (материалы готовятся) - +- Работа с файлами +- Оценка сложности алгоритмов +- [Измерение производительности кода и оптимизация](https://youtu.be/sanq2X7Re8o) +- [Асинхронное программирование на callback`ах](https://youtu.be/z8Hg6zgi3yQ) +- [Асинхронные функции async, await, thenable, обработка ошибок](https://youtu.be/Jdf_tZuJbHI) +- Неизменяемые структуры данных (immutable) +- Автоматное программирование: конечные автоматы (машины состояний) - [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/03-OOP - [Шаблон Singleton (синглтон) в JavaScript](https://youtu.be/qdJ5yikZnfE) From 067581b9f34755d571403f9c14e2bb668b650ad2 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 18 Jan 2020 15:52:07 +0200 Subject: [PATCH 134/515] Add testing to 1st year --- Courses/Fundamentals.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index db6f572..90014a6 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -164,3 +164,7 @@ - Примеры кода: https://github.com/HowProgrammingWorks/Enum - [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) - Примеры кода: https://github.com/HowProgrammingWorks/Generics +- [Тестирование: юниттесты с примерами](https://youtu.be/CszugIag2TA) +- [Тестирование: системное и интеграционное тестирование](https://youtu.be/OuKu_6H_6gE) +- [Интроспекция и рефлексия в JavaScript](https://youtu.be/yvW1PjUVeM0) +- [Почему хорошее ИТ-образование невостребовано рыночком](https://youtu.be/nvIJE6xMpiI) From af8aae3af792c6d86f51ed27d659c85fdd25e0c6 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 19 Jan 2020 19:11:27 +0200 Subject: [PATCH 135/515] Add links to repos --- Courses/Fundamentals.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index 90014a6..f16ecfa 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -130,6 +130,7 @@ - [Подход к изучению программирования](https://youtu.be/zMU4ir10DMg) - Списки: односвязные, двусвязные, циклические, развернутые - [Графы и запросы к графовым структурам данных](https://youtu.be/a0W0T8Yqw3s) + - Примеры кода: https://github.com/HowProgrammingWorks/Graph - Структуры (struct или записи), наборы данных в памяти - [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) - Примеры кода: https://github.com/HowProgrammingWorks/Projection @@ -144,8 +145,11 @@ - Работа с файлами - Оценка сложности алгоритмов - [Измерение производительности кода и оптимизация](https://youtu.be/sanq2X7Re8o) + - Примеры кода: https://github.com/HowProgrammingWorks/Benchmark - [Асинхронное программирование на callback`ах](https://youtu.be/z8Hg6zgi3yQ) + - Примеры кода: https://github.com/HowProgrammingWorks/AsynchronousProgramming - [Асинхронные функции async, await, thenable, обработка ошибок](https://youtu.be/Jdf_tZuJbHI) + - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAwait - Неизменяемые структуры данных (immutable) - Автоматное программирование: конечные автоматы (машины состояний) - [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) @@ -165,6 +169,11 @@ - [Дженерики и обобщенное программирование](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 26e21016d9af40cd8647ff2e6f98ddb5fcbf9c91 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 21 Jan 2020 16:06:05 +0200 Subject: [PATCH 136/515] Update Nodejs course program --- Courses/NodeJS.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index 344811c..74b2b26 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -1,9 +1,12 @@ # Технологический стек Node.js +Объем материала: 30 лекций, 34 репозитория с примерами кода, 4 PDF со слайдами + - [Node.js Введение в технологию](https://youtu.be/WBcHgaoHh1k) - [Node.js в 2019 году](https://youtu.be/CUU49jjHloM) - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-in-2019 - [Обзор встроенного Node.js API](https://youtu.be/sOkjR-N6IAs) + - Ссылка на документацию: https://nodejs.org/api/documentation.html - [Модули, слои, структура проекта, песочницы в JavaScript и Node.js](https://youtu.be/O7A9chb573E) - Пример проекта: https://github.com/HowProgrammingWorks/Project - Абстрактные слои: https://github.com/HowProgrammingWorks/AbstractionLayers @@ -55,7 +58,9 @@ - CQS: https://github.com/HowProgrammingWorks/CQS - CQRS: https://github.com/HowProgrammingWorks/CQRS - EventSourcing: https://github.com/HowProgrammingWorks/EventSourcing + - Паттерн Command https://github.com/HowProgrammingWorks/Command - [Применение EventSourcing](https://youtu.be/kFNtKiK2SPs) + - См. ссылки на примеры выше из лекции по CQS, CQRS, Event Sourcing - [Логирование на Node.js и JavaScript](https://youtu.be/4DkZj2Cdokc) - Примеры кода: https://github.com/HowProgrammingWorks/Logging - [Модель акторов (Actor Model)](https://youtu.be/xp5MVKEqxY4) From 81f9c027a16c5b321cb28d7648b2f6d32a46e889 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 22 Jan 2020 23:26:28 +0200 Subject: [PATCH 137/515] Update Node.js lectures structure --- Courses/NodeJS.md | 98 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 68 insertions(+), 30 deletions(-) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index 74b2b26..417b5f7 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -1,12 +1,34 @@ # Технологический стек Node.js -Объем материала: 30 лекций, 34 репозитория с примерами кода, 4 PDF со слайдами +Объем материала: 38 лекций, 37 репозиториев с примерами кода, 4 PDF со слайдами. +Перед основной частью курса по Node.js нужно сначала освоить хоть частично курс +по асинхронному программированию: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md + +## Введение и основы - [Node.js Введение в технологию](https://youtu.be/WBcHgaoHh1k) - [Node.js в 2019 году](https://youtu.be/CUU49jjHloM) - Слайды: 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) + - Репозиторий с инстрементами: https://github.com/HowProgrammingWorks/Tools +- [Работа с файлами, буферами и файловыми потоками в Node.js](https://youtu.be/eQGBS15vUac) + - Работа с файлами: https://github.com/HowProgrammingWorks/Files + - Файловые потоки: https://github.com/HowProgrammingWorks/Streams + - Буферы: https://github.com/HowProgrammingWorks/Buffers +- [Наблюдение за файловой системой в Node.js](https://youtu.be/29QINR9rruQ) + - Файловая система в Node.js: https://github.com/HowProgrammingWorks/Files + - Наблюдение за файлами: https://github.com/HowProgrammingWorks/FilesystemWatch +- [Консоль и командная строка в JavaScript и Node.js](https://youtu.be/5aSZyKi5BmE) + - Примеры кода: https://github.com/HowProgrammingWorks/CommandLine + +## Структура и архитектуре приложений на Node.js + +- [Архитектурный подход к программированию](https://youtu.be/d_vyO2CkiOc) - [Модули, слои, структура проекта, песочницы в JavaScript и Node.js](https://youtu.be/O7A9chb573E) - Пример проекта: https://github.com/HowProgrammingWorks/Project - Абстрактные слои: https://github.com/HowProgrammingWorks/AbstractionLayers @@ -14,25 +36,55 @@ - [Инверсия управления и внедрение зависимостей в Node.js](https://youtu.be/Fz86Fdjz-LM) - Инверсия управления: https://github.com/HowProgrammingWorks/InversionOfControl - Внедрение зависимостей: https://github.com/HowProgrammingWorks/DependencyInjection -- [Работа с файлами, буферами и файловыми потоками в Node.js](https://youtu.be/eQGBS15vUac) - - Работа с файлами: https://github.com/HowProgrammingWorks/Files - - Файловые потоки: https://github.com/HowProgrammingWorks/Streams - - Буферы: https://github.com/HowProgrammingWorks/Buffers - [Межпроцессовое взаимодействие в Node.js](https://youtu.be/2OXWZFMvfbc) - Примеры кода: https://github.com/HowProgrammingWorks/InterProcessCommunication +- [Слои, связанность и связность кода](https://youtu.be/A3RpwNlVeyY) + - Примеры кода: https://github.com/HowProgrammingWorks/Abstractions + +## Разработка серверов приложений и API на Node.js + +- [Клиент-сервер на Node.js TCP и UDP, DNS](https://youtu.be/bHn-wTlTTR0) + - Примеры кода: https://github.com/HowProgrammingWorks/Socket - [HTTP сервер на Node.js (routing, cluster, IP sticky)](https://youtu.be/7Ufxj0oTaUo) - Примеры кода: https://github.com/HowProgrammingWorks/NodeServer -- [Консоль и командная строка в JavaScript и Node.js](https://youtu.be/5aSZyKi5BmE) - - Примеры кода: https://github.com/HowProgrammingWorks/CommandLine -- [Высоконагруженные распределенные приложения на Node.js](https://youtu.be/7tfZDABPvVs) +- [HTTP сессии и cookies на чистом Node.js](https://youtu.be/T_wKXuWW4Wo) + - Примеры кода: https://github.com/HowProgrammingWorks/Session +- [HTTP запросы в браузере и Node.js: XMLHttpRequest, fetch](https://youtu.be/wMMki2FEYGY) + - Примеры кода: https://github.com/HowProgrammingWorks/HttpRequest +- [Разработка API на Node.js (клиент и сервер)](https://youtu.be/-az912XBCu8) + - Примеры кода: https://github.com/HowProgrammingWorks/API - [WebSocket сервер на Node.js (электронные таблицы и чат)](https://youtu.be/Sf7ln3n16ws) - Вебсокеты: https://github.com/HowProgrammingWorks/WebsocketChat - Чат: https://github.com/HowProgrammingWorks/LiveTable +- [Скаффолдинг для API, UI и данных](https://youtu.be/lipkLQVqDd8) + - Примеры кода: https://github.com/HowProgrammingWorks/Scaffolding +- [Высоконагруженные распределенные приложения на Node.js](https://youtu.be/7tfZDABPvVs) +- [Отдача статики в Node.js](https://youtu.be/n_AdKIzbpBc) + - Примеры кода и задачи: https://github.com/HowProgrammingWorks/ServeStatic + +## Работа с базами данных на Node.js + - [Слой доступа к данным, курсор, транзакция](https://youtu.be/CRcSWtWVvrA) - Примеры кода: https://github.com/HowProgrammingWorks/Transaction -- [Наблюдение за файловой системой в Node.js](https://youtu.be/29QINR9rruQ) - - Файловая система в Node.js: https://github.com/HowProgrammingWorks/Files - - Наблюдение за файлами: https://github.com/HowProgrammingWorks/FilesystemWatch +- [Работа с базами данных в Node.js на примере PostgreSQL](https://youtu.be/2tDvHQCBt3w) + - Примеры кода: https://github.com/HowProgrammingWorks/Databases + +## Лекции по CQRS и Event Sourcing + +- [Паттерн Команда (Command) действие и параметры как объект](https://youtu.be/vER0vYL4hM4) + - Этот паттерн понадобится для следующей лекции + - Примеры кода: https://github.com/HowProgrammingWorks/Command +- [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) + - См. примеры из предыдущей лекции +- [Модель акторов (Actor Model)](https://youtu.be/xp5MVKEqxY4) + - Примеры кода: https://github.com/HowProgrammingWorks/ActorModel + +## Управление памятью и параллельное программирование + - [Утечки памяти в Node.js и JavaScript, сборка мусора и профилирование](https://youtu.be/0oZa64SB2wM) - Примеры кода: https://github.com/HowProgrammingWorks/MemoryLeaks - [Atomics, SharedArrayBuffer, worker_threads в Node.js](https://youtu.be/zLm8pnbxSII) @@ -44,29 +96,15 @@ - [Разделяемая память в многопоточном Node.js](https://youtu.be/KNsm_iIQt7U) - доклад на конференции JS Fest 2019 Spring - Слайды: https://www.slideshare.net/JSFestUA/js-fest-2019-nodejs + +## Безопасность, надежность, развертывание и управление инфраструктурой + - [Необработанные ошибки в промисах](https://youtu.be/1Ml5NE2fsZ8) - Примеры кода: https://github.com/HowProgrammingWorks/PromiseError -- [HTTP сессии и cookies на чистом Node.js](https://youtu.be/T_wKXuWW4Wo) - - Примеры кода: https://github.com/HowProgrammingWorks/Session -- [HTTP запросы в браузере и Node.js: XMLHttpRequest, fetch](https://youtu.be/wMMki2FEYGY) - - Примеры кода: https://github.com/HowProgrammingWorks/HttpRequest -- [Разработка API на Node.js (клиент и сервер)](https://youtu.be/-az912XBCu8) - - Примеры кода: https://github.com/HowProgrammingWorks/API -- [Работа с базами данных в Node.js на примере PostgreSQL](https://youtu.be/2tDvHQCBt3w) - - Примеры кода: https://github.com/HowProgrammingWorks/Databases -- [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 - - Паттерн Command https://github.com/HowProgrammingWorks/Command -- [Применение EventSourcing](https://youtu.be/kFNtKiK2SPs) - - См. ссылки на примеры выше из лекции по CQS, CQRS, Event Sourcing +- [Проблема асинхронного стектрейса в JavaScript и Node.js](https://youtu.be/pfiHTx3j87Y) + - Примеры кода: https://github.com/HowProgrammingWorks/StackTrace - [Логирование на Node.js и JavaScript](https://youtu.be/4DkZj2Cdokc) - Примеры кода: https://github.com/HowProgrammingWorks/Logging -- [Модель акторов (Actor Model)](https://youtu.be/xp5MVKEqxY4) - - Примеры кода: https://github.com/HowProgrammingWorks/ActorModel -- [Отдача статики в Node.js](https://youtu.be/n_AdKIzbpBc) - - Примеры кода и задачи: https://github.com/HowProgrammingWorks/ServeStatic - [Graceful Shutdown в Node.js](https://youtu.be/ZstnowFeCe0) - Примеры кода и задачи: https://github.com/HowProgrammingWorks/GracefulShutdown - [Безопасность приложений Node.js](https://youtu.be/Pdfo1G-gI6s) From ce9e840506384efb6a2940d8916e2e30a7b1da30 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 22 Jan 2020 23:47:52 +0200 Subject: [PATCH 138/515] Add totals to async programming lectures --- Courses/Asynchronous.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Courses/Asynchronous.md b/Courses/Asynchronous.md index 5a92906..6781520 100644 --- a/Courses/Asynchronous.md +++ b/Courses/Asynchronous.md @@ -1,5 +1,7 @@ # Асинхронное программирование +Объем материала: 24 лекций, 27 репозиториев с примерами кода. + ## Структура курса - Введение в асинхронное программирование и неблокирующий ввод-вывод From 5be71629926643299500b50d10b1f70d09ac32a1 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 24 Jan 2020 02:21:16 +0200 Subject: [PATCH 139/515] Update index --- Courses/Advanced.md | 1 + README.md | 37 ++++++++++++++++++++++--------------- 2 files changed, 23 insertions(+), 15 deletions(-) create mode 100644 Courses/Advanced.md diff --git a/Courses/Advanced.md b/Courses/Advanced.md new file mode 100644 index 0000000..c12da7d --- /dev/null +++ b/Courses/Advanced.md @@ -0,0 +1 @@ +# Второй год обучения diff --git a/README.md b/README.md index 33e06ee..1c3e605 100644 --- a/README.md +++ b/README.md @@ -1,39 +1,46 @@ # Индекс и состояние курсов +## Последовательная программа на 2 года + - [Введение и обзор знаний](Courses/Introduction.md) (есть несколько видео-лекций) -- [Основы программирования](Courses/Fundamentals.md) +- [Основы программирования (1 год обучения)](Courses/Fundamentals.md) (есть до 95% материала) +- [Программирование (2 год обучения)](Courses/Advanced.md) + (есть до 50% материала) + +## Отдельные курсы + +- [Асинхронное программирование](Courses/Asynchronous.md) + (есть 95% примеров кода и видео-лекции) +- [Технологический стек Node.js](Courses/NodeJS.md) + (есть 90% кода и видео-лекций) +- [Шаблоны проектирования](Courses/Patterns.md) + (есть 50% примеров кода и видео-лекций) +- [Парадигмы программирования](Courses/Paradigms.md) + (есть 50% кода и несколько видео-лекций) +- [Метапрограммирование и мультипарадигменное программирование](Courses/Metaprogramming.md) + (есть 50% кода и несколько видео-лекций) - [Алгоритмы и структуры данных](Courses/AlgAndData.md) (есть до 20% материала, нужно сводить разные варианты) +- [Проектирование сетевых протоколов и сервисов](Courses/Network.md) + (есть 50% примеров кода и несколько видео-лекций) - [Инструменты разработки и жизненного цикла ПО](Courses/Tools.md) (есть несколько видео-лекций, нужно расширять) - [Функциональное программирование](Courses/Functional.md) (есть 20% примеров кода и несколько видео-лекций) - [Объектно-ориентированное программирование](Courses/OOP.md) - (есть 10% примеров кода и несколько видео-лекций) -- [Шаблоны проектирования](Courses/Patterns.md) - (есть 50% примеров кода и видео-лекций) + (есть 20% примеров кода и несколько видео-лекций) - [Операционные системы](Courses/OS.md) (нужно сформировать программу) - [Системное программирование](Courses/System.md) (нужно сформировать программу) -- [Проектирование сетевых протоколов и сервисов](Courses/Network.md) - (есть 50% примеров кода и несколько видео-лекций) - [Архитектура информационных систем](Courses/Architecture.md) (есть несколько видео-лекций) - [Веб-технологии](Courses/Web.md) - (есть 15% кода и несколько видео-лекций) -- [Технологический стек Node.js](Courses/NodeJS.md) - (есть 75% кода и видео-лекций) -- [Асинхронное программирование](Courses/Asynchronous.md) - (есть 95% примеров кода и видео-лекции) + (есть 25% кода и несколько видео-лекций) - [Параллельное программирование](Courses/Parallel.md) (есть 10% примеров и несколько видео-лекций) -- [Парадигмы программирования](Courses/Paradigms.md) - (есть 50% кода и несколько видео-лекций) -- [Метапрограммирование и мультипарадигменное программирование](Courses/Metaprogramming.md) - (есть 50% кода и несколько видео-лекций) - [Проектирование баз данных](Courses/Databases.md) (нужно сформировать программу) - [Высоконагруженные и масштабируемые системы](Courses/Highload.md) From 0eada81c2773da04b294630a150cf647f2dedc82 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 24 Jan 2020 09:57:22 +0200 Subject: [PATCH 140/515] Fix spelling --- Courses/NodeJS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index 417b5f7..e919222 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -26,7 +26,7 @@ - [Консоль и командная строка в JavaScript и Node.js](https://youtu.be/5aSZyKi5BmE) - Примеры кода: https://github.com/HowProgrammingWorks/CommandLine -## Структура и архитектуре приложений на Node.js +## Структура и архитектура приложений на Node.js - [Архитектурный подход к программированию](https://youtu.be/d_vyO2CkiOc) - [Модули, слои, структура проекта, песочницы в JavaScript и Node.js](https://youtu.be/O7A9chb573E) From 7113f5be2cd1f53d28e7705e128ad11afcb58d83 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 24 Jan 2020 22:39:20 +0200 Subject: [PATCH 141/515] Add Odessa.js Summer school lectutes (archive) --- Archive/2018-Summer-school.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 Archive/2018-Summer-school.md diff --git a/Archive/2018-Summer-school.md b/Archive/2018-Summer-school.md new file mode 100644 index 0000000..3e88f51 --- /dev/null +++ b/Archive/2018-Summer-school.md @@ -0,0 +1,23 @@ +## Летняя школа 2018 в Одессе + +Архив летней школы на конференции Odessa.js. Лекции читают: Тимур Шемсединов, +Алексей Голиков и Алексей Орленко. + +- [Часть 1: Введение и парадигмы программирования](https://youtu.be/UHl_BPEfc_M) +- [Часть 2: Стиль, парадигмы, функции](https://youtu.be/HWOdjxUqVmY) +- [Часть 3: Частичное применение, каррирование, замыкания, чеининг](https://youtu.be/OBTYfpCRABA) +- [Часть 4: Обертки и мемоизация](https://youtu.be/Lij_ne_DvZU) +- [Часть 5: EventEmitter, Symbol, Proxy](https://youtu.be/UwhOIFJX4Ok) +- [Часть 6: Композиция функций](https://youtu.be/0ldgoRKoTuo) +- [Часть 7: Коллекции: Array, Object, Map, Set, weak & typed, итераторы](https://youtu.be/1CFCvFGk4fM) +- [Часть 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) +- [Часть 20: Процессы, кластеризация и балансировка в Node.js](https://youtu.be/YPoiltzkUXI) From bcdcc3a72eec1fc726529b32cbb22a79cdce220c Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 25 Jan 2020 22:41:58 +0200 Subject: [PATCH 142/515] Add link to youtube --- Archive/2017-Summer-school.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Archive/2017-Summer-school.md b/Archive/2017-Summer-school.md index 0c267e6..a2f7ea1 100644 --- a/Archive/2017-Summer-school.md +++ b/Archive/2017-Summer-school.md @@ -17,4 +17,4 @@ - [7. Внедрение зависимостей DI, Firebase, Angular, SPA, React, Обработка ошибок](https://youtu.be/LaxV_CDdV5c) - [8. Асинхронное программирование](https://youtu.be/81tXZUP7tBY) - [9. Песочницы, IoC, DI, IPC, структура приложений](https://youtu.be/fjAUssuzTm4) -- 10. Архитектура приложений и метапрограммирование +- [10. Архитектура приложений и метапрограммирование](https://youtu.be/aDtKUEKkzKs) From f01c0a985ecfdb09e9212d50237eaf441d367e44 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 25 Jan 2020 22:52:20 +0200 Subject: [PATCH 143/515] Add lectures to archive --- Archive/2017-Archive.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 Archive/2017-Archive.md diff --git a/Archive/2017-Archive.md b/Archive/2017-Archive.md new file mode 100644 index 0000000..c4aee1e --- /dev/null +++ b/Archive/2017-Archive.md @@ -0,0 +1,11 @@ +## Семинары и доклады 2017 + +- [Архив 2017 - Чудесный мир конвенций кода - Алексей Орленко](https://youtu.be/Igbs4BrIhKY) +- [Архив 2017 - О важности последовательного стиля кодирования - Денис Отришко](https://youtu.be/eRrJbyY-ipY) +- [Архив 2017 - Про технологический стек Metarhia - Тимур Шемсединов](https://youtu.be/x5-dl1vKa-8) +- [Архив 2017 - Процесс разработки - Алексей Орленко](https://youtu.be/FMFRl1xkhjU) +- [Архив 2017 - JSTP JavaScript Transfer Protocol - Алексей Орленко](https://youtu.be/So-y0TGSjtI) +- [Архив 2017 - MetaSync - Тимур Шемсединов](https://youtu.be/xNfOv9I1MDk) +- [Архив 2017 - GlobalStorage - Тимур Шемсединов](https://youtu.be/BMtDj5dP3e0) +- [Архив 2017 - Impress Application Server - Тимур Шемсединов](https://youtu.be/ymueF-9FDCs) +- [Архив 2017 - Масштабирование Node.js для высоких нагрузок - Тимур Шемсединов - JS Conference 2017](https://youtu.be/-yJWLaJ31NI) From 3284d2a75f7fed679c761177949f0223319c13fe Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 26 Jan 2020 22:36:05 +0200 Subject: [PATCH 144/515] Add videos to archive --- Archive/2013-2016.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 Archive/2013-2016.md diff --git a/Archive/2013-2016.md b/Archive/2013-2016.md new file mode 100644 index 0000000..a3e504f --- /dev/null +++ b/Archive/2013-2016.md @@ -0,0 +1,8 @@ +## Доклады 2013-2016 + +- [2016 - Куда движется программная инженерия?](https://youtu.be/DNx9NhVdO-8) +- [2016 - О чем говорит "Черное зеркало". Кибернетика и будущее. Сергей Одарыч](https://youtu.be/wiZcaba3dMI) +- [2015 - Как исправить ошибку в NodeJS и поднять производительность в 2 раза](https://youtu.be/As4XV-dtgeg) +- [2015 - Архитектура программных систем на Node.js](https://youtu.be/Try7lmWikao) +- [2014 - Примеры быстрой разработки API на масштабируемом сервера приложений](https://youtu.be/f6McffaVq78) +- [2013 - Сервера приложений Impress для Node.js](https://youtu.be/Zr_1YrcXtkE) From 22804516b9f3bbfc0b598e283583767d318082b7 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 26 Jan 2020 22:39:39 +0200 Subject: [PATCH 145/515] Add epic invitation and intro for enrollees --- Archive/2017-Archive.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Archive/2017-Archive.md b/Archive/2017-Archive.md index c4aee1e..75708a2 100644 --- a/Archive/2017-Archive.md +++ b/Archive/2017-Archive.md @@ -1,5 +1,7 @@ ## Семинары и доклады 2017 +### Семинары весной 2017 + - [Архив 2017 - Чудесный мир конвенций кода - Алексей Орленко](https://youtu.be/Igbs4BrIhKY) - [Архив 2017 - О важности последовательного стиля кодирования - Денис Отришко](https://youtu.be/eRrJbyY-ipY) - [Архив 2017 - Про технологический стек Metarhia - Тимур Шемсединов](https://youtu.be/x5-dl1vKa-8) @@ -9,3 +11,8 @@ - [Архив 2017 - GlobalStorage - Тимур Шемсединов](https://youtu.be/BMtDj5dP3e0) - [Архив 2017 - Impress Application Server - Тимур Шемсединов](https://youtu.be/ymueF-9FDCs) - [Архив 2017 - Масштабирование Node.js для высоких нагрузок - Тимур Шемсединов - JS Conference 2017](https://youtu.be/-yJWLaJ31NI) + +### Выступление и разное + +- [Epic invitation to #OdessaJS2017](https://youtu.be/Ysnl6Ex1OZw) +- [Ваше положение таково, что понять вам его невозможно](https://youtu.be/fbhwG3KwmUY) From accd29d6e0918a3bb5141636de2ab91d1ad08902 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 26 Jan 2020 22:41:43 +0200 Subject: [PATCH 146/515] Another intro for enrollees --- Archive/2018-Archive.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 Archive/2018-Archive.md diff --git a/Archive/2018-Archive.md b/Archive/2018-Archive.md new file mode 100644 index 0000000..279d76d --- /dev/null +++ b/Archive/2018-Archive.md @@ -0,0 +1,3 @@ +## Выступления 2018 + +- [Свобода от выбора или почему нет ничего возможного](https://youtu.be/rYjf_PmCvQA) From c73f18f8bac1b700ab2247eeadc7b061ab967a9f Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 26 Jan 2020 22:43:10 +0200 Subject: [PATCH 147/515] Add KharkovJS lecture --- Archive/2017-Archive.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Archive/2017-Archive.md b/Archive/2017-Archive.md index 75708a2..2487a9c 100644 --- a/Archive/2017-Archive.md +++ b/Archive/2017-Archive.md @@ -14,5 +14,6 @@ ### Выступление и разное +- [Асинхронное программирование на JS и Node.js](https://youtu.be/VdRhAXnfrd0) - [Epic invitation to #OdessaJS2017](https://youtu.be/Ysnl6Ex1OZw) - [Ваше положение таково, что понять вам его невозможно](https://youtu.be/fbhwG3KwmUY) From 97f6853a5ca4f36c8f274c4d354a14a13eebed62 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 26 Jan 2020 22:44:13 +0200 Subject: [PATCH 148/515] Another KharkovJS lecture --- Archive/2018-Archive.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Archive/2018-Archive.md b/Archive/2018-Archive.md index 279d76d..b84d333 100644 --- a/Archive/2018-Archive.md +++ b/Archive/2018-Archive.md @@ -1,3 +1,4 @@ ## Выступления 2018 +- [Карта знаний инженера программиста](https://youtu.be/_s2WkaZJ0xQ) - [Свобода от выбора или почему нет ничего возможного](https://youtu.be/rYjf_PmCvQA) From 65fdfdca9664a9f77cac72bff58563904409dcd5 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 4 Feb 2020 02:07:31 +0200 Subject: [PATCH 149/515] Links index --- Links.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Links.md diff --git a/Links.md b/Links.md new file mode 100644 index 0000000..698ed1e --- /dev/null +++ b/Links.md @@ -0,0 +1,33 @@ +# Индекс каналов и групп сообщества Метархия + +Подпишитесь на то, что вас интересует и отпишитесь от остального. Пожалуйста, +придерживайтесь тематики в группах, выбирайте ближайшую подходящую группу, если +нет полного совпадения или группу с наиболее общей тематикой. Во всех группах +запрещена реклама и объявления, в том числе о вакансиях или об участии в +проектах, кроме проектов сообщества Метархия. + +## Общая тематика + +Любые вопросы программирования, технологии и языки, инженерия, архитектура, +обучение, новости, как для новичков, так и для профессионалов. + +- Телеграм канал [HowProgrammingWorks](https://t.me/HowProgrammingWorks) +тут публикуются объявления о лекциях, митапах и семинарах, все новые видео и +другие материалы +- Телеграм группа [MetarhiaHPW](https://t.me/MetarhiaHPW) +- Подписка на митапы [HowProgrammingWorks](https://www.meetup.com/HowProgrammingWorks/) +по общим темам программирования, по JavaScript и для начинающих, тут лежит +календарь событий, можно регистрироваться и оставлять отзывы + +## Для начинающих + +- Телеграм группа [IP9X](https://t.me/Programming_IP9X) +- Подписка на митапы [HowProgrammingWorks](https://www.meetup.com/HowProgrammingWorks/) +тут лежит календарь событий, можно регистрироваться и оставлять отзывы + +## Node.js + +- Телеграм канал [Metarhia](https://t.me/metarhia) +- Телеграм группа [NodeUA](https://t.me/nodeua) +- Подписка на митапы [NodeUA](https://www.meetup.com/NodeUA/) +- Старая группа митапов [KievNodeJS](https://www.meetup.com/KievNodeJS/) From 7210670ad67ac03ce79c13ddbd6055289455efcf Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 4 Feb 2020 03:08:58 +0200 Subject: [PATCH 150/515] Add youtube channel --- Links.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Links.md b/Links.md index 698ed1e..f60bb9a 100644 --- a/Links.md +++ b/Links.md @@ -18,6 +18,7 @@ - Подписка на митапы [HowProgrammingWorks](https://www.meetup.com/HowProgrammingWorks/) по общим темам программирования, по JavaScript и для начинающих, тут лежит календарь событий, можно регистрироваться и оставлять отзывы +- Канал на ютюбе: https://www.youtube.com/TimurShemsedinov ## Для начинающих From 2be2cc4d224df5b814a75fa5ad7e30221eb6bfdc Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 10 Feb 2020 23:50:21 +0200 Subject: [PATCH 151/515] Add OOP lectures --- Calendar.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Calendar.md b/Calendar.md index cce8eed..596b68e 100644 --- a/Calendar.md +++ b/Calendar.md @@ -4,6 +4,10 @@ ## Очередь +- Абстракция и инкапсуляция в ООП +- Сокрытие в ООП и особенности на JavaScript +- Интерфейсы и наследование в ООП +- Полиморфизм в ООП - Логирование в Node.js приложениях - Конфигурирование приложений на Node.js - Схемы для API, структур данных и баз данных From 0fd4060fe876e4e8b5b1ea0eb0325f3efde3ff1a Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 10 Feb 2020 23:58:32 +0200 Subject: [PATCH 152/515] Add patterns --- Calendar.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Calendar.md b/Calendar.md index 596b68e..8d511ab 100644 --- a/Calendar.md +++ b/Calendar.md @@ -8,6 +8,15 @@ - Сокрытие в ООП и особенности на JavaScript - Интерфейсы и наследование в ООП - Полиморфизм в ООП +- Порождающие, структурные и поведенческие шаблоны +- Шаблон: Цепочка обязанностей +- Шаблон: Прокси +- Шаблон: Абстрактная фабрика +- Шаблон: Фабричный метод +- Шаблон: Состояние +- Шаблон: Строитель +- Шаблон: Мост +- Шаблон: Посетитель - Логирование в Node.js приложениях - Конфигурирование приложений на Node.js - Схемы для API, структур данных и баз данных From 3013a42faa60ab05642d494b0a0fed7953ee9a88 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 13 Feb 2020 22:26:40 +0200 Subject: [PATCH 153/515] Remove duplicated structure --- Courses/Asynchronous.md | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/Courses/Asynchronous.md b/Courses/Asynchronous.md index 6781520..3cfccca 100644 --- a/Courses/Asynchronous.md +++ b/Courses/Asynchronous.md @@ -2,25 +2,6 @@ Объем материала: 24 лекций, 27 репозиториев с примерами кода. -## Структура курса - -- Введение в асинхронное программирование и неблокирующий ввод-вывод -- Таймеры, таймауты и EventEmitter и AsyncEmitter -- Асинхронное программирование на функциях обратного вызова (callback) -- Неблокирующее асинхронное итерирование -- Асинхронность с библиотекой async.js (надстройки и утилиты над callback) -- Асинхронность на промисах и обработка ошибок, асинхронный стектрейс -- Асинхронные функции (async / await) и обработка ошибок -- Контракт Thenable и легковесный await -- Необработанные ошибки в промисах -- Отмена асинхронных операций: callback, Promise, композиции функций -- Асинхронные адаптеры: promisify, callbackify, asyncify -- Асинхронные коллекторы данных и конкурентная асинхронная очередь -- Генераторы, итераторы и асинхронные генераторы и асинхронные итераторы -- Асинхронная композиция функций и асинхронное функциональное программирование -- Другие методы: Future, Deferred, Модель акторов (Actor Model) -- Паттерн Наблюдатель (Observer + Observable), асинхронность на RxJS и потоки событий - ## Видео-лекции - [Асинхронное программирование (обзор)](https://youtu.be/hY6Z6qNYzmc) From 1cd3a69867e4e529529fba01ce26c45c794f31de Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 13 Feb 2020 22:27:08 +0200 Subject: [PATCH 154/515] Short structure of 1-3 years --- Courses/Short.md | 135 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 Courses/Short.md diff --git a/Courses/Short.md b/Courses/Short.md new file mode 100644 index 0000000..ed3d174 --- /dev/null +++ b/Courses/Short.md @@ -0,0 +1,135 @@ +# Программная инженерия + +Программа на 1й, 2й и 3й курс. + +## Основы программирования: 1 семестр 1 курса + +- Абстракция, модель, алгоритм, программа, синтаксис +- Значение, идентификатор, переменная и константа, литерал, присвоение +- Типы данных, скалярные, ссылочные и структурные типы +- Оператор и выражение, блок кода, функция, цикл, условие +- Процедуры и функции, стек и куча +- Модули, компоненты, библиотеки +- Языки и парадигмы программирования, технологические стеки +- Отладка, обработка ошибок, линтеры, трансляторы и компиляторы +- Системы контроля версий и пакетные менеджеры, git, npm +- Функции первого класса, лямбды, контексты, замыкания +- Массивы, объекты, классы, прототипы +- Частичное применение и каррирование, функции высшего порядка, колбеки +- Работа со строками, шаблонами и юникодом, регулярные выражения и парсинг +- Антипаттерны процедурного программирования и общие для всех парадигм +- Консоль и командная строка +- Чеининг функций и объектов +- Рекурсия: косвенная и хвостовая, стек, выход +- Таймеры, EventEmitter, события +- Коллекции, множества, хештаблицы +- Сериализация и десериализация +- Code Review, рефакторинг: причины, цели, техники и процесс +- Композиция: pipe, compose +- Примеси: mixin, extend, Object.assign, class λ-mixin +- Прототипное программирование и наследование +- Функции-обертки, мемоизация +- Фабрики и пулы объектов + +## Основы программирования: 2 семестр 1 курса + +- Списки: односвязные, двусвязные, циклические, развернутые +- Стек, очередь, дэк, графые структуры +- Записи (struct) +- Проекции и отображения наборов данных +- Неизменяемые структуры данных (immutable) +- Работа с файлами +- Генераторы и асинхронные генераторы +- Итераторы и асинхронные итераторы +- Оценка сложности алгоритмов +- Измерение производительности кода и оптимизация +- Обзор парадигмы: Объектно-ориентированное программирование +- Принципы: абстрагирование, инкапсуляция, наследование, полиморфизм +- Сокрытие в ООП и особенности на JavaScript +- Интерфейсы vs наследование в ООП +- Информационный эксперт, закон деметры, создатель, контроллер, чистая выдумка +- Слабое зацепление и высокая связность +- Последник, устойчивость к изменениям +- Антипаттерны объектно-ориентированного программирования +- Дженерики и обобщенное программирование +- Обзор парадигмы: Функциональное программирование +- Функциональные объекты, функторы и монады +- Обзор парадигмы: Реактивное программирование +- Обзор парадигмы: Автоматное программирование +- Асинхронное программирование на callback-ах и async/await +- Тестирование: юниттесты, системное и интеграционное тестирование +- Мономорфный и полиморфный код, инлайн-кэш, скрытые классы +- Интроспекция и рефлексия + +## 1 семестр 2 курса + +К сожалению у нас на ВТ выпадает из программы. +Я предлагаю тут еще раз пройтись по GRASP и SOLID более углубленно, а так же +дать GoF: порождающие, структурные и поведенческие шаблоны, плюс контрактное +программирование. + +## Асинхронное программирование: 2 семестр 2 курса + +- Введение в асинхронное программирование и неблокирующий ввод-вывод +- Таймеры, таймауты и EventEmitter и AsyncEmitter +- Асинхронное программирование на функциях обратного вызова (callback) +- Неблокирующее асинхронное итерирование +- Асинхронность с библиотекой async.js (надстройки и утилиты над callback) +- Асинхронность на промисах и обработка ошибок, асинхронный стектрейс +- Асинхронные функции (async / await) и обработка ошибок +- Контракт Thenable и легковесный await +- Необработанные ошибки в промисах +- Отмена асинхронных операций: callback, Promise, композиции функций +- Асинхронные адаптеры: promisify, callbackify, asyncify +- Асинхронные коллекторы данных и конкурентная асинхронная очередь +- Генераторы, итераторы и асинхронные генераторы и асинхронные итераторы +- Асинхронная композиция функций и асинхронное функциональное программирование +- Другие методы: Future, Deferred, Модель акторов (Actor Model) +- Паттерн Наблюдатель (Observer + Observable), асинхронность на RxJS и потоки событий + +## Технологический стек Node.js: 1 семестр 3 курса + +- Node.js Введение в технологию +- Обзор встроенного Node.js API +- Работа с файлами, буферами и файловыми потоками +- Наблюдение за файловой системой +- Структура и архитектура приложений, слоеная архитектура +- Модули, структура проекта, песочницы +- Инверсия управления и внедрение зависимостей +- Межпроцессовое взаимодействие +- Логирование в Node.js приложениях +- Конфигурирование приложений на Node.js +- Разработка серверов приложений и API +- Клиент-сервер на Node.js TCP и UDP, DNS +- HTTP сервер на Node.js (routing, cluster, IP sticky) +- HTTP сессии и cookies на чистом Node.js +- HTTP запросы в браузере и Node.js: XMLHttpRequest, fetch +- Отдача статики в Node.js +- Разработка API на Node.js (клиент и сервер) +- WebSocket сервер на Node.js (электронные таблицы и чат) +- Скаффолдинг для API, UI и данных +- Высоконагруженные распределенные приложения +- Распределенные системы и CAP-теорема + +## Технологический стек Node.js: 2 семестр 3 курса + +- Работа с базами данных на Node.js +- Слой доступа к данным, курсор, транзакция +- Работа с базами данных в Node.js на примере PostgreSQL +- Паттерн Команда (Command) действие и параметры как объект +- CQS, CQRS, Event Sourcing - Разделение запросов и модификации данных +- Модель акторов (Actor Model) в Node.js +- Схемы для API, структур данных и баз данных +- Управление памятью и параллельное программирование +- Утечки памяти в Node.js и JavaScript, сборка мусора и профилирование +- Состояние гонки и взаимные блокировки в асинхронном программировании +- Состояние гонки и взаимные блокировки в параллельном программировании +- Потоки worker_threads, Атомарные операции (Atomics), SharedArrayBuffer +- Семафоры и мьютексы в JavaScript и Node.js +- Разделяемая память в многопоточном Node.js +- Безопасность, надежность, развертывание и управление инфраструктурой +- Необработанные ошибки в промисах и проблема асинхронного стектрейса +- Graceful Shutdown в Node.js +- Безопасность приложений в Node.js +- Serverless Clouds (FaaS) и изоляция контекстов запросов в Node.js +- Node.js для IoT (Internet of Things) From ea8f4a4b135d03105623e0190a141a3b6e1ec33c Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 13 Feb 2020 22:32:35 +0200 Subject: [PATCH 155/515] Add topics --- Courses/Short.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Courses/Short.md b/Courses/Short.md index ed3d174..00e70de 100644 --- a/Courses/Short.md +++ b/Courses/Short.md @@ -50,6 +50,7 @@ - Информационный эксперт, закон деметры, создатель, контроллер, чистая выдумка - Слабое зацепление и высокая связность - Последник, устойчивость к изменениям +- Ассоциация, агрегация и композиция объектов - Антипаттерны объектно-ориентированного программирования - Дженерики и обобщенное программирование - Обзор парадигмы: Функциональное программирование @@ -63,9 +64,9 @@ ## 1 семестр 2 курса -К сожалению у нас на ВТ выпадает из программы. -Я предлагаю тут еще раз пройтись по GRASP и SOLID более углубленно, а так же -дать GoF: порождающие, структурные и поведенческие шаблоны, плюс контрактное +К сожалению у нас на ВТ выпадает из программы, но это можно изменить. +Я предлагаю тут еще раз пройтись по GRASP более углубленно, а так же дать SOLID +и GoF: порождающие, структурные и поведенческие шаблоны, плюс контрактное программирование. ## Асинхронное программирование: 2 семестр 2 курса From 4e66ab95eb0eed16afa4b4077cf38fc95cfaf454 Mon Sep 17 00:00:00 2001 From: Baryshych Date: Fri, 14 Feb 2020 16:57:08 +0200 Subject: [PATCH 156/515] Update Short.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix "последник"  typo --- Courses/Short.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Short.md b/Courses/Short.md index 00e70de..71a85a5 100644 --- a/Courses/Short.md +++ b/Courses/Short.md @@ -49,7 +49,7 @@ - Интерфейсы vs наследование в ООП - Информационный эксперт, закон деметры, создатель, контроллер, чистая выдумка - Слабое зацепление и высокая связность -- Последник, устойчивость к изменениям +- Посредник, устойчивость к изменениям - Ассоциация, агрегация и композиция объектов - Антипаттерны объектно-ориентированного программирования - Дженерики и обобщенное программирование From 2d4b52ea05aba3900c6f7eda656676eb56044f54 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 20 Feb 2020 20:47:51 +0200 Subject: [PATCH 157/515] Add videos --- Courses/Databases.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Courses/Databases.md b/Courses/Databases.md index 87e72fc..7ac9617 100644 --- a/Courses/Databases.md +++ b/Courses/Databases.md @@ -1,6 +1,9 @@ # Проектирования баз данных -- SQL: SELECT (оператор выборки) +- [Базы данных в 2020 (введение, история, состояние)](https://youtu.be/8RjT2VYBWNQ) + - Слайды: https://www.slideshare.net/tshemsedinov/2020-228734914 +- [Введение в SQL: SELECT](https://youtu.be/Z679c8S0d7I) + - Слайды: https://www.slideshare.net/tshemsedinov/sql-structured-query-language-228735217 - WHERE клауза, составные условия - IN, BETWEEN выражения - GROUP BY клауза From 08f3c7b644885225cf1e2fcd763708b8ef3df159 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 23 Feb 2020 16:04:59 +0200 Subject: [PATCH 158/515] Add lectures --- Calendar.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Calendar.md b/Calendar.md index 8d511ab..68748ac 100644 --- a/Calendar.md +++ b/Calendar.md @@ -2,8 +2,20 @@ ## Запланированные +- вт 25 фев - Структуры или записи (struct, record) +- вт 25 фев - Объектно-ориентированное программирование +- чт 27 фев - Введение в SQL/DDL: CREATE, ALTER, DROP, ключи, индексы +- чт 27 фев - PostgreSQL: установка, настройка, консоль + ## Очередь +- Списки: односвязные, двусвязные, циклические, развернутые +- Стек, очередь, дэк, графые структуры +- Наборы данных в памяти +- Автоматное программирование: конечные автоматы (машины состояний) +- Работа с файлами +- Оценка сложности алгоритмов +- Неизменяемые структуры данных (immutable) - Абстракция и инкапсуляция в ООП - Сокрытие в ООП и особенности на JavaScript - Интерфейсы и наследование в ООП From 9f320806004c8312e0acb47c13722080cd39e486 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 26 Feb 2020 23:58:42 +0200 Subject: [PATCH 159/515] Add OOP intro video --- Courses/Fundamentals.md | 3 +-- Courses/OOP.md | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index f16ecfa..e44bad6 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -126,17 +126,16 @@ ## 2 семестр 1 курса (материалы готовятся) +- [Объектно-ориентированное программирование](https://youtu.be/r4ReQlVtfgQ) - [Карта специальности инженер-программист](https://youtu.be/SE5aXH-yf0I) - [Подход к изучению программирования](https://youtu.be/zMU4ir10DMg) - Списки: односвязные, двусвязные, циклические, развернутые - [Графы и запросы к графовым структурам данных](https://youtu.be/a0W0T8Yqw3s) - Примеры кода: https://github.com/HowProgrammingWorks/Graph -- Структуры (struct или записи), наборы данных в памяти - [Проекции и отображения наборов данных в 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 diff --git a/Courses/OOP.md b/Courses/OOP.md index 2b7fea6..58a48e0 100644 --- a/Courses/OOP.md +++ b/Courses/OOP.md @@ -1,5 +1,6 @@ # Объектно-ориентированное программирование +- [Объектно-ориентированное программирование](https://youtu.be/r4ReQlVtfgQ) - [Have Objects Failed? Или что не так с ООП?](https://youtu.be/4yO5OS0vPSw) - [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) - Примеры кода: https://github.com/HowProgrammingWorks/Generics From 2294019c0e2ad1ef0df9340bfe3f44d77d7f0947 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 27 Feb 2020 00:00:56 +0200 Subject: [PATCH 160/515] Add structs (records) video --- Courses/Fundamentals.md | 1 + Courses/OOP.md | 1 + 2 files changed, 2 insertions(+) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index e44bad6..d216d1b 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -127,6 +127,7 @@ ## 2 семестр 1 курса (материалы готовятся) - [Объектно-ориентированное программирование](https://youtu.be/r4ReQlVtfgQ) +- [Структуры (struct) или записи (record)](https://youtu.be/Wb7o_kK4aH4) - [Карта специальности инженер-программист](https://youtu.be/SE5aXH-yf0I) - [Подход к изучению программирования](https://youtu.be/zMU4ir10DMg) - Списки: односвязные, двусвязные, циклические, развернутые diff --git a/Courses/OOP.md b/Courses/OOP.md index 58a48e0..490d7d4 100644 --- a/Courses/OOP.md +++ b/Courses/OOP.md @@ -1,6 +1,7 @@ # Объектно-ориентированное программирование - [Объектно-ориентированное программирование](https://youtu.be/r4ReQlVtfgQ) +- [Структуры (struct) или записи (record)](https://youtu.be/Wb7o_kK4aH4) - [Have Objects Failed? Или что не так с ООП?](https://youtu.be/4yO5OS0vPSw) - [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) - Примеры кода: https://github.com/HowProgrammingWorks/Generics From abd956480e8030cae23b41899e69cbafc85514cb Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 27 Feb 2020 19:32:33 +0200 Subject: [PATCH 161/515] Add videos --- Courses/Databases.md | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/Courses/Databases.md b/Courses/Databases.md index 7ac9617..f232282 100644 --- a/Courses/Databases.md +++ b/Courses/Databases.md @@ -4,6 +4,28 @@ - Слайды: https://www.slideshare.net/tshemsedinov/2020-228734914 - [Введение в SQL: SELECT](https://youtu.be/Z679c8S0d7I) - Слайды: https://www.slideshare.net/tshemsedinov/sql-structured-query-language-228735217 +- [Введение в SQL: CREATE, ALTER, DROP, ключи, индексы](https://youtu.be/QF0v29ZneYE) +- [PostgreSQL: установка, настройка, консоль](https://youtu.be/Fm6yLb8qCh4) +- [Слой доступа к данным, курсор, транзакция](https://youtu.be/CRcSWtWVvrA) + - Примеры кода: https://github.com/HowProgrammingWorks/Transaction +- [Работа с базами данных в Node.js на примере PostgreSQL](https://youtu.be/2tDvHQCBt3w) + - Примеры кода: https://github.com/HowProgrammingWorks/Databases +- [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 +- Трехзвенные приложения баз данных +- Инъекции SQL и защита от них +- [Применение EventSourcing](https://youtu.be/kFNtKiK2SPs) + - https://github.com/HowProgrammingWorks/EventSourcing + - https://github.com/HowProgrammingWorks/CQRS + - https://github.com/HowProgrammingWorks/Command +- [Безопасность приложений Node.js](https://youtu.be/Pdfo1G-gI6s) + - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-security-199004963 + +## SQL + +- SQL: SELECT - WHERE клауза, составные условия - IN, BETWEEN выражения - GROUP BY клауза @@ -35,19 +57,3 @@ - SQL: DEFAULT значения - SQL: Первичные ключи - SQL: Уникальные и не уникальные индексы -- [Слой доступа к данным, курсор, транзакция](https://youtu.be/CRcSWtWVvrA) - - Примеры кода: https://github.com/HowProgrammingWorks/Transaction -- [Работа с базами данных в Node.js на примере PostgreSQL](https://youtu.be/2tDvHQCBt3w) - - Примеры кода: https://github.com/HowProgrammingWorks/Databases -- [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 -- Трехзвенные приложения баз данных -- Инъекции SQL и защита от них -- [Применение EventSourcing](https://youtu.be/kFNtKiK2SPs) - - https://github.com/HowProgrammingWorks/EventSourcing - - https://github.com/HowProgrammingWorks/CQRS - - https://github.com/HowProgrammingWorks/Command -- [Безопасность приложений Node.js](https://youtu.be/Pdfo1G-gI6s) - - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-security-199004963 From 24a154b9f4b36396f63b986188bd7e5747e5d6f8 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 28 Feb 2020 23:42:36 +0200 Subject: [PATCH 162/515] Add two SQL lectures --- Courses/Databases.md | 37 ++----------------------------------- 1 file changed, 2 insertions(+), 35 deletions(-) diff --git a/Courses/Databases.md b/Courses/Databases.md index f232282..9b6d8bb 100644 --- a/Courses/Databases.md +++ b/Courses/Databases.md @@ -6,6 +6,8 @@ - Слайды: https://www.slideshare.net/tshemsedinov/sql-structured-query-language-228735217 - [Введение в SQL: CREATE, ALTER, DROP, ключи, индексы](https://youtu.be/QF0v29ZneYE) - [PostgreSQL: установка, настройка, консоль](https://youtu.be/Fm6yLb8qCh4) +- SQL SELECT: math functions, aliases, limit, with, into +- SQL JOINS: CROSS, INNER, LEFT, RIGHT, FULL - [Слой доступа к данным, курсор, транзакция](https://youtu.be/CRcSWtWVvrA) - Примеры кода: https://github.com/HowProgrammingWorks/Transaction - [Работа с базами данных в Node.js на примере PostgreSQL](https://youtu.be/2tDvHQCBt3w) @@ -22,38 +24,3 @@ - https://github.com/HowProgrammingWorks/Command - [Безопасность приложений Node.js](https://youtu.be/Pdfo1G-gI6s) - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-security-199004963 - -## SQL - -- SQL: SELECT - - WHERE клауза, составные условия - - IN, BETWEEN выражения - - GROUP BY клауза - - HAVING клауза - - ORDER BY клауза - - WITH клауза - - INTO клауза -- SQL: Операторы сравнения -- SQL: Оператор LIKE -- SQL: DISTINCT, ALL, ANY -- SQL: Агрегатные функции -- SQL: Математические функции -- SQL: Алиасы полей и таблиц -- SQL: LIMIT, OFFSET -- SQL: Комментарии -- SQL JOINS: - - CROSS JOIN - - INNER JOIN - - LEFT (OUTER) JOIN - - RIGHT JOIN - - FULL JOIN - - Рекурссивный JOIN -- SQL: CREATE DATABASE, DROP DATABASE -- SQL: CREATE TABLE, DROP TABLE -- SQL: ALTER TABLE -- SQL: CHECK ограничения на поля -- SQL: NULL, NOT NULL -- SQL: UNIQUE поля -- SQL: DEFAULT значения -- SQL: Первичные ключи -- SQL: Уникальные и не уникальные индексы From 0542bb435659e9a013dd8a358bf465b2dabfb9fa Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 28 Feb 2020 23:47:16 +0200 Subject: [PATCH 163/515] Add lectures --- Courses/Databases.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Courses/Databases.md b/Courses/Databases.md index 9b6d8bb..7f4dec7 100644 --- a/Courses/Databases.md +++ b/Courses/Databases.md @@ -8,6 +8,8 @@ - [PostgreSQL: установка, настройка, консоль](https://youtu.be/Fm6yLb8qCh4) - SQL SELECT: math functions, aliases, limit, with, into - SQL JOINS: CROSS, INNER, LEFT, RIGHT, FULL +- ERD, IDEF1X: Entity-Relationship Diagram +- Нормальные формы - [Слой доступа к данным, курсор, транзакция](https://youtu.be/CRcSWtWVvrA) - Примеры кода: https://github.com/HowProgrammingWorks/Transaction - [Работа с базами данных в Node.js на примере PostgreSQL](https://youtu.be/2tDvHQCBt3w) From 630606d37d529c06573df90e7a3826f1247308d7 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 2 Mar 2020 00:23:29 +0200 Subject: [PATCH 164/515] Add OOP topics to schedule --- Calendar.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Calendar.md b/Calendar.md index 68748ac..394a66e 100644 --- a/Calendar.md +++ b/Calendar.md @@ -6,6 +6,12 @@ - вт 25 фев - Объектно-ориентированное программирование - чт 27 фев - Введение в SQL/DDL: CREATE, ALTER, DROP, ключи, индексы - чт 27 фев - PostgreSQL: установка, настройка, консоль +- вт 03 мар - ООП: абстракция, инкапсуляция, наследование, полиморфизм +- вт 10 мар - ООП: принципы GRASP +- вт 17 мар - ООП: принципы SOLID: SRP (принцип единственной ответственности) +- вт 17 мар - ООП: принципы SOLID: OCP (Open Closed Principle) +- вт 24 мар - ООП: принципы SOLID: ISP (Interface Segregation Principle) +- вт 24 мар - ООП: принципы SOLID: DIP (Dependency Inversion Principle) ## Очередь From 788a6bae5a51ff51245b56926f43d8048f15a60e Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 3 Mar 2020 23:37:04 +0200 Subject: [PATCH 165/515] Add two videos --- Courses/OOP.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Courses/OOP.md b/Courses/OOP.md index 490d7d4..c503dba 100644 --- a/Courses/OOP.md +++ b/Courses/OOP.md @@ -2,6 +2,8 @@ - [Объектно-ориентированное программирование](https://youtu.be/r4ReQlVtfgQ) - [Структуры (struct) или записи (record)](https://youtu.be/Wb7o_kK4aH4) +- [ООП: построение абстракций, инкапсуляция и сокрытие](https://youtu.be/sQwF6-bYeDM) +- [ООП: наследование и полиморфизм](https://youtu.be/8OuzIAuMfjw) - [Have Objects Failed? Или что не так с ООП?](https://youtu.be/4yO5OS0vPSw) - [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) - Примеры кода: https://github.com/HowProgrammingWorks/Generics From d802fd729de5871141097044ae029578735d91a2 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 4 Mar 2020 21:57:47 +0200 Subject: [PATCH 166/515] Add Database lectures --- Calendar.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Calendar.md b/Calendar.md index 394a66e..a67ad0b 100644 --- a/Calendar.md +++ b/Calendar.md @@ -7,9 +7,13 @@ - чт 27 фев - Введение в SQL/DDL: CREATE, ALTER, DROP, ключи, индексы - чт 27 фев - PostgreSQL: установка, настройка, консоль - вт 03 мар - ООП: абстракция, инкапсуляция, наследование, полиморфизм +- чт 05 мар - SQL: SELECT (продолжение), функции, алиасы, limit, with, into +- чт 05 мар - SQL: ERD, IDEF1x - вт 10 мар - ООП: принципы GRASP +- чт 12 мар - SQL: INSERT, DELETE - вт 17 мар - ООП: принципы SOLID: SRP (принцип единственной ответственности) - вт 17 мар - ООП: принципы SOLID: OCP (Open Closed Principle) +- чт 19 мар - SQL: JOINS - вт 24 мар - ООП: принципы SOLID: ISP (Interface Segregation Principle) - вт 24 мар - ООП: принципы SOLID: DIP (Dependency Inversion Principle) From 1a61e8321c7e0b0368b30699756d8fd63a0661bd Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 5 Mar 2020 23:30:30 +0200 Subject: [PATCH 167/515] Add videos --- Courses/Databases.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Courses/Databases.md b/Courses/Databases.md index 7f4dec7..f6e6688 100644 --- a/Courses/Databases.md +++ b/Courses/Databases.md @@ -6,9 +6,9 @@ - Слайды: https://www.slideshare.net/tshemsedinov/sql-structured-query-language-228735217 - [Введение в SQL: CREATE, ALTER, DROP, ключи, индексы](https://youtu.be/QF0v29ZneYE) - [PostgreSQL: установка, настройка, консоль](https://youtu.be/Fm6yLb8qCh4) -- SQL SELECT: math functions, aliases, limit, with, into +- [Базы данных: ER, ERD, IDEF1x, сущность-связь](https://youtu.be/ByWfj3e0HnE) +- [SQL SELECT: math functions, aliases, limit, with, into](https://youtu.be/lle4Yp58z6k) - SQL JOINS: CROSS, INNER, LEFT, RIGHT, FULL -- ERD, IDEF1X: Entity-Relationship Diagram - Нормальные формы - [Слой доступа к данным, курсор, транзакция](https://youtu.be/CRcSWtWVvrA) - Примеры кода: https://github.com/HowProgrammingWorks/Transaction From fb2ff25ea5ab00b60f8fb50e892bd17e9f3d794d Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 9 Mar 2020 13:27:37 +0200 Subject: [PATCH 168/515] Update dates --- Calendar.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Calendar.md b/Calendar.md index a67ad0b..1e705c5 100644 --- a/Calendar.md +++ b/Calendar.md @@ -9,13 +9,13 @@ - вт 03 мар - ООП: абстракция, инкапсуляция, наследование, полиморфизм - чт 05 мар - SQL: SELECT (продолжение), функции, алиасы, limit, with, into - чт 05 мар - SQL: ERD, IDEF1x -- вт 10 мар - ООП: принципы GRASP -- чт 12 мар - SQL: INSERT, DELETE -- вт 17 мар - ООП: принципы SOLID: SRP (принцип единственной ответственности) -- вт 17 мар - ООП: принципы SOLID: OCP (Open Closed Principle) -- чт 19 мар - SQL: JOINS -- вт 24 мар - ООП: принципы SOLID: ISP (Interface Segregation Principle) -- вт 24 мар - ООП: принципы SOLID: DIP (Dependency Inversion Principle) +- вт 17 мар - ООП: принципы GRASP +- чт 19 мар - SQL: INSERT, DELETE +- вт 24 мар - ООП: принципы SOLID: SRP (принцип единственной ответственности) +- вт 24 мар - ООП: принципы SOLID: OCP (Open Closed Principle) +- чт 26 мар - SQL: JOINS +- вт 31 мар - ООП: принципы SOLID: ISP (Interface Segregation Principle) +- вт 31 мар - ООП: принципы SOLID: DIP (Dependency Inversion Principle) ## Очередь From 921afa4a2a052ea5d5601235629ed1ef0428a956 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 8 Apr 2020 22:36:26 +0300 Subject: [PATCH 169/515] Fix link --- Courses/Fundamentals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index d216d1b..59caba2 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -6,7 +6,7 @@ - Канал в телеграме: https://t.me/HowProgrammingWorks - Группа (чат): https://t.me/Programming_IP9X - Задачи по курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Exercises.ru.md -- Словарь терминов: https://github.com/HowProgrammingWorks/Dictionary/blob/master/Fundamentals.ru.md +- Словарь терминов: https://github.com/HowProgrammingWorks/Dictionary ## 1 семестр 1 курса From 40e3b2c6e52c69c89ebad69d9f8720ac953f0b77 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 14 Apr 2020 22:35:09 +0300 Subject: [PATCH 170/515] Add fwdays webinars: Node.js in 2020 --- Courses/NodeJS.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index e919222..4b9ed70 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -4,6 +4,14 @@ Перед основной частью курса по Node.js нужно сначала освоить хоть частично курс по асинхронному программированию: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md +## Вебинары 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 + ## Введение и основы - [Node.js Введение в технологию](https://youtu.be/WBcHgaoHh1k) From c57dd0f2f26cd2cc2899c99a50ca5212a6417b1c Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 16 Apr 2020 22:15:25 +0300 Subject: [PATCH 171/515] Add video from JS Fwdays --- Courses/NodeJS.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index 4b9ed70..8d347dd 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -104,6 +104,8 @@ - [Разделяемая память в многопоточном Node.js](https://youtu.be/KNsm_iIQt7U) - доклад на конференции 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 ## Безопасность, надежность, развертывание и управление инфраструктурой From 3087ecd91961b69c43213a1d015b5679a20d79d9 Mon Sep 17 00:00:00 2001 From: Dmitry Moiseev Date: Sun, 19 Apr 2020 18:54:21 +0300 Subject: [PATCH 172/515] =?UTF-8?q?=D0=9E=D0=BF=D0=B5=D1=87=D0=B0=D1=82?= =?UTF-8?q?=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Courses/Asynchronous.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Asynchronous.md b/Courses/Asynchronous.md index 3cfccca..2fbb956 100644 --- a/Courses/Asynchronous.md +++ b/Courses/Asynchronous.md @@ -1,6 +1,6 @@ # Асинхронное программирование -Объем материала: 24 лекций, 27 репозиториев с примерами кода. +Объем материала: 24 лекции, 27 репозиториев с примерами кода. ## Видео-лекции From 2859a31f4f6f1f5c4ef53ae4e8b44c14dc969836 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 23 Apr 2020 23:46:13 +0300 Subject: [PATCH 173/515] Add Node.js webinar part3 --- Courses/NodeJS.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index 8d347dd..340c048 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -10,7 +10,8 @@ - Слайды: 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 +- [Часть 3: Структура и архитектура проекта, Node.js Starter Kit](https://youtu.be/ZXB5OTRld1w) + - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-in-2020-part-3 ## Введение и основы From 25f8c16cf9e8d8640188e271b3c525a8ed2e352d Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 26 May 2020 15:54:57 +0300 Subject: [PATCH 174/515] Update Short.md --- Courses/Short.md | 1 - 1 file changed, 1 deletion(-) diff --git a/Courses/Short.md b/Courses/Short.md index 71a85a5..ee09821 100644 --- a/Courses/Short.md +++ b/Courses/Short.md @@ -64,7 +64,6 @@ ## 1 семестр 2 курса -К сожалению у нас на ВТ выпадает из программы, но это можно изменить. Я предлагаю тут еще раз пройтись по GRASP более углубленно, а так же дать SOLID и GoF: порождающие, структурные и поведенческие шаблоны, плюс контрактное программирование. From b7c956c42e89769cb18e7ae5d1a1c3f8b532ac30 Mon Sep 17 00:00:00 2001 From: ALEGATOR1209 Date: Sat, 30 May 2020 14:56:16 +0300 Subject: [PATCH 175/515] Fixed typo with generators --- Courses/Asynchronous.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Courses/Asynchronous.md b/Courses/Asynchronous.md index 2fbb956..a069c59 100644 --- a/Courses/Asynchronous.md +++ b/Courses/Asynchronous.md @@ -31,8 +31,8 @@ - [Проблема асинхронного стектрейса](https://youtu.be/pfiHTx3j87Y) - Примеры кода: https://github.com/HowProgrammingWorks/StackTrace - [Генераторы и асинхронные генераторы](https://youtu.be/kvNm9D32s8s) - - Генераторы: https://github.com/HowProgrammingWorks/AsyncGenerator - - Асинхронные генераторы: https://github.com/HowProgrammingWorks/Generator + - Генераторы: https://github.com/HowProgrammingWorks/Generator + - Асинхронные генераторы: https://github.com/HowProgrammingWorks/AsyncGenerator - [Итераторы и асинхронные итераторы](https://youtu.be/rBGFlWpVpGs) - Итераторы: https://github.com/HowProgrammingWorks/AsyncIterator - Асинхронные итераторы: https://github.com/HowProgrammingWorks/Iterator From 26357efa673654a9c559c6f8e01de8b288fb385d Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 28 Jun 2020 00:53:03 +0300 Subject: [PATCH 176/515] Add patreon link --- .github/FUNDING.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..e6f64b9 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +patreon: tshemsedinov From 24292d34680eb84d69c1b6c290540d9514a39e3f Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 30 Jun 2020 23:51:28 +0300 Subject: [PATCH 177/515] Change semester-based to module-based Refs: https://github.com/HowProgrammingWorks/Index/issues/26 PR-URL: https://github.com/HowProgrammingWorks/Index/pull/25 --- Courses/Fundamentals.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index 59caba2..8797893 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -1,5 +1,7 @@ # Основы программирования +Модули [SEF1](SEF1) и [SEF2](SEF1) + ## Ссылки - Автор: https://github.com/tshemsedinov @@ -8,7 +10,7 @@ - Задачи по курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Exercises.ru.md - Словарь терминов: https://github.com/HowProgrammingWorks/Dictionary -## 1 семестр 1 курса +## Модуль SEF1 Объем материала: 36 лекций (из них 4 вводные лекции, 8 лекций по языку JS, 18 лекций по фундаментальным понятиям теории программирования, 6 лекций по @@ -102,7 +104,7 @@ - [Композиция: pipe, compose](https://youtu.be/xS9FicVrOTI) - Примеры кода: https://github.com/HowProgrammingWorks/Composition - [Примеси: mixin, extend, Object.assign, class λ-mixin](https://youtu.be/NZMrJ2adEyY) - - Тема class λ-mixin из этой лекции не обязательна для 1 семестра + - Тема class λ-mixin из этой лекции не обязательна для модуля SEF1 - Примеры кода: https://github.com/HowProgrammingWorks/Mixin - Старая версия лекции: https://youtu.be/2h9syXN5wO0 - [Прототипное программирование и прототипное наследование](https://youtu.be/SzaXTW2qcJE) @@ -120,11 +122,11 @@ - [Типизированные массивы в JavaScript](https://youtu.be/tTNcqxbxhfY) - Примеры кода: https://github.com/HowProgrammingWorks/TypedArrays - [Новое в JavaScript](https://youtu.be/fUjHLj8bq_Y) - - Не все в лекции обязательно для 1 семестра, что поймете, то и хорошо + - Не все в темы обязательны для модуля SEF1, что поймете, то и хорошо - Слайды: https://www.slideshare.net/tshemsedinov/javascript-esnext-ecmascript-2020-es11-es10-es9-es8-es7-es6-es2020-es2019 - Примеры кода: https://github.com/HowProgrammingWorks/ESNext -## 2 семестр 1 курса (материалы готовятся) +## Модуль SEF2 - [Объектно-ориентированное программирование](https://youtu.be/r4ReQlVtfgQ) - [Структуры (struct) или записи (record)](https://youtu.be/Wb7o_kK4aH4) From 72890c0c3ba52759d06ee736a1f09651d03be1a8 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 1 Jul 2020 20:59:37 +0000 Subject: [PATCH 178/515] Add notification --- IP9X.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/IP9X.md b/IP9X.md index 2b15d57..e8475b1 100644 --- a/IP9X.md +++ b/IP9X.md @@ -1,6 +1,7 @@ # Материалы курса IP9X: Основы инженерии программного обеспечения -[Обновленная версия программы курса](Courses/Fundamentals.md) +Внимание, материалы на этой странице устарили, обновленная версия программы +курса тут: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md ## Ссылки @@ -10,7 +11,7 @@ - Задачи по курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Exercises.ru.md - Словарь терминов: https://github.com/HowProgrammingWorks/Dictionary/blob/master/IP9X.ru.md -## Программа на 1й семестр +## Программа на 1й семестр 2019-2020 - вт 03 cен 16:10: [Введение в программирование](https://youtu.be/5Gt61EX6HZ4) - вт 03 cен 14:15: [Основы программирования для групп ИП-93, 94, 95](https://youtu.be/jaWu5DoMcZw) From 81082614a373c9f03060502929db3235bfd4bc14 Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 7 Jul 2020 22:29:47 +0300 Subject: [PATCH 179/515] fix typo fix typo --- Courses/NodeJS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index 340c048..7682594 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -24,7 +24,7 @@ - [Обзор встроенного Node.js API](https://youtu.be/sOkjR-N6IAs) - Ссылка на документацию: https://nodejs.org/api/documentation.html - [Настройка среды: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) - - Репозиторий с инстрементами: https://github.com/HowProgrammingWorks/Tools + - Репозиторий с инструментами: https://github.com/HowProgrammingWorks/Tools - [Работа с файлами, буферами и файловыми потоками в Node.js](https://youtu.be/eQGBS15vUac) - Работа с файлами: https://github.com/HowProgrammingWorks/Files - Файловые потоки: https://github.com/HowProgrammingWorks/Streams From 49abe2593248208243ccfe37f8de3592b59af0dd Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 9 Sep 2020 23:18:13 +0300 Subject: [PATCH 180/515] Add advanced structure --- Courses/Advanced.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Courses/Advanced.md b/Courses/Advanced.md index c12da7d..219e331 100644 --- a/Courses/Advanced.md +++ b/Courses/Advanced.md @@ -1 +1,7 @@ -# Второй год обучения +# Вторая часть курса + +Модули SEF2 и SEF3 + +## Асинхронное программирование + +## Технологический стек Node.js From 46d64aec154e8a4ee2715247b6afb64ce2c4f7ac Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 9 Sep 2020 23:19:39 +0300 Subject: [PATCH 181/515] Add videos --- Courses/Advanced.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Courses/Advanced.md b/Courses/Advanced.md index 219e331..ffcb287 100644 --- a/Courses/Advanced.md +++ b/Courses/Advanced.md @@ -4,4 +4,24 @@ ## Асинхронное программирование +- [Асинхронное программирование (обзор)](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 +- [Асинхронные функции и обработка ошибок](https://youtu.be/Jdf_tZuJbHI) + - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAwait +- [Асинхронные адаптеры: promisify, callbackify, asyncify](https://youtu.be/76k6_YkYRmU) + - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAdapter + ## Технологический стек Node.js From c92c0b336e10a5c54a50766c75e461240bd8c799 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 9 Sep 2020 23:24:43 +0300 Subject: [PATCH 182/515] Improve structure --- Courses/Advanced.md | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/Courses/Advanced.md b/Courses/Advanced.md index ffcb287..a064289 100644 --- a/Courses/Advanced.md +++ b/Courses/Advanced.md @@ -4,24 +4,29 @@ ## Асинхронное программирование -- [Асинхронное программирование (обзор)](https://youtu.be/hY6Z6qNYzmc) +### Повторение + +- [Функции высшего порядка, колбеки, события на JavaScript](https://youtu.be/1vqATwbGHnc) + - Функции высшего порядка: https://github.com/HowProgrammingWorks/HigherOrderFunction + - Функции обратного вызова: https://github.com/HowProgrammingWorks/Callbacks +- [Асинхронное программирование на callback`ах](https://youtu.be/z8Hg6zgi3yQ) + - Примеры кода: https://github.com/HowProgrammingWorks/AsynchronousProgramming + - Библиотека do: https://github.com/metarhia/do - [Таймеры, таймауты и 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 + +### Обзор асинхронного программирования + +- [Асинхронное программирование (обзор)](https://youtu.be/hY6Z6qNYzmc) + +### Лекции + - [Асинхронность с библиотекой 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 -- [Асинхронные функции и обработка ошибок](https://youtu.be/Jdf_tZuJbHI) - - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAwait -- [Асинхронные адаптеры: promisify, callbackify, asyncify](https://youtu.be/76k6_YkYRmU) - - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAdapter ## Технологический стек Node.js From 099802c07d992de457ba0550b5ad1f807f3d8143 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 22 Sep 2020 23:10:18 +0300 Subject: [PATCH 183/515] Fix links --- Courses/Fundamentals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index 8797893..69adb72 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -1,6 +1,6 @@ # Основы программирования -Модули [SEF1](SEF1) и [SEF2](SEF1) +Модули [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) ## Ссылки From ae406e8da6fceb99275fabf04d36fcfa0777bc68 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 27 Sep 2020 23:18:44 +0300 Subject: [PATCH 184/515] Add talks (#30) Add talks index --- Courses/Talks.md | 17 +++++++++++++++++ README.md | 15 +++++++++------ 2 files changed, 26 insertions(+), 6 deletions(-) create mode 100644 Courses/Talks.md diff --git a/Courses/Talks.md b/Courses/Talks.md new file mode 100644 index 0000000..e89bff3 --- /dev/null +++ b/Courses/Talks.md @@ -0,0 +1,17 @@ +# Доклады на конференциях + +- [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: Выйди и зайди нормально]() + - [Часть 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 +- [Антипаттерны 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) + - Слайды: https://www.slideshare.net/tshemsedinov/shared-memory-and-multithreading-in-nodejs-timur-shemsedinov-jsfest19 diff --git a/README.md b/README.md index 1c3e605..13c682a 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,23 @@ # Индекс и состояние курсов -## Последовательная программа на 2 года +- [Индекс каналов и групп сообщества Метархия](Links.md) +- [Индекс докладов на конференциях](Talks.md) + +## Последовательная программа - [Введение и обзор знаний](Courses/Introduction.md) (есть несколько видео-лекций) -- [Основы программирования (1 год обучения)](Courses/Fundamentals.md) +- [Основы программирования, модули (1 год обучения)](Courses/Fundamentals.md) (есть до 95% материала) - [Программирование (2 год обучения)](Courses/Advanced.md) - (есть до 50% материала) + (есть до 65% материала) ## Отдельные курсы - [Асинхронное программирование](Courses/Asynchronous.md) - (есть 95% примеров кода и видео-лекции) + (есть 97% примеров кода и видео-лекции) - [Технологический стек Node.js](Courses/NodeJS.md) - (есть 90% кода и видео-лекций) + (есть 95% кода и видео-лекций) - [Шаблоны проектирования](Courses/Patterns.md) (есть 50% примеров кода и видео-лекций) - [Парадигмы программирования](Courses/Paradigms.md) @@ -42,7 +45,7 @@ - [Параллельное программирование](Courses/Parallel.md) (есть 10% примеров и несколько видео-лекций) - [Проектирование баз данных](Courses/Databases.md) - (нужно сформировать программу) + (есть 25% примеров и видео-лекций) - [Высоконагруженные и масштабируемые системы](Courses/Highload.md) (есть несколько видео-лекций) - [Проектирование пользовательских интерфейсов](Courses/UI-UX.md) From 49f3ad7e3e89d6c193059a5b95d68feea435a638 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 29 Sep 2020 10:33:53 +0300 Subject: [PATCH 185/515] Course structure in json PR-URL: https://github.com/HowProgrammingWorks/Index/pull/31 --- Courses/index.js | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Courses/index.js diff --git a/Courses/index.js b/Courses/index.js new file mode 100644 index 0000000..1b7bf14 --- /dev/null +++ b/Courses/index.js @@ -0,0 +1,38 @@ +({ + 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 00b5d11ae0f3978f72855fa5aa15d7ec86c91414 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 29 Sep 2020 10:48:45 +0300 Subject: [PATCH 186/515] Move calendars to archive PR-URL: https://github.com/HowProgrammingWorks/Index/pull/32 --- Calendar.md => Archive/2019-2020/Calendar.md | 0 IP9X.md => Archive/2019-2020/IP9X.md | 0 NodeUA.md => Archive/2019-2020/NodeUA.md | 0 Exercises.ru.md => Exercises/Exercises.ru.md | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename Calendar.md => Archive/2019-2020/Calendar.md (100%) rename IP9X.md => Archive/2019-2020/IP9X.md (100%) rename NodeUA.md => Archive/2019-2020/NodeUA.md (100%) rename Exercises.ru.md => Exercises/Exercises.ru.md (100%) diff --git a/Calendar.md b/Archive/2019-2020/Calendar.md similarity index 100% rename from Calendar.md rename to Archive/2019-2020/Calendar.md diff --git a/IP9X.md b/Archive/2019-2020/IP9X.md similarity index 100% rename from IP9X.md rename to Archive/2019-2020/IP9X.md diff --git a/NodeUA.md b/Archive/2019-2020/NodeUA.md similarity index 100% rename from NodeUA.md rename to Archive/2019-2020/NodeUA.md diff --git a/Exercises.ru.md b/Exercises/Exercises.ru.md similarity index 100% rename from Exercises.ru.md rename to Exercises/Exercises.ru.md From ceba46fdb88132f1d40ebf23621f015b20a47308 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 29 Sep 2020 10:49:04 +0300 Subject: [PATCH 187/515] Add new calendar stub PR-URL: https://github.com/HowProgrammingWorks/Index/pull/32 --- Calendar/Calendar.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Calendar/Calendar.md diff --git a/Calendar/Calendar.md b/Calendar/Calendar.md new file mode 100644 index 0000000..0278081 --- /dev/null +++ b/Calendar/Calendar.md @@ -0,0 +1 @@ +# Расписание From 5766f7d32e06012b9f51586f88baf7bd37bb8be6 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 29 Sep 2020 17:05:26 +0300 Subject: [PATCH 188/515] Fix links to moved documents PR-URL: https://github.com/HowProgrammingWorks/Index/pull/32 --- Archive/2019-2020/IP9X.md | 4 ++-- Courses/Fundamentals.md | 2 +- Exercises/{Exercises.ru.md => SEF1.ru.md} | 0 README.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) rename Exercises/{Exercises.ru.md => SEF1.ru.md} (100%) diff --git a/Archive/2019-2020/IP9X.md b/Archive/2019-2020/IP9X.md index e8475b1..534d556 100644 --- a/Archive/2019-2020/IP9X.md +++ b/Archive/2019-2020/IP9X.md @@ -8,8 +8,8 @@ - Автор: https://github.com/tshemsedinov - Канал в телеграме: https://t.me/HowProgrammingWorks - Группа (чат): https://t.me/Programming_IP9X -- Задачи по курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Exercises.ru.md -- Словарь терминов: https://github.com/HowProgrammingWorks/Dictionary/blob/master/IP9X.ru.md +- Задачи по курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Exercises/SEF1.ru.md +- Словарь терминов: https://github.com/HowProgrammingWorks/Dictionary ## Программа на 1й семестр 2019-2020 diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index 69adb72..71cab22 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -7,7 +7,7 @@ - Автор: https://github.com/tshemsedinov - Канал в телеграме: https://t.me/HowProgrammingWorks - Группа (чат): https://t.me/Programming_IP9X -- Задачи по курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Exercises.ru.md +- Задачи по курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Exercises/SEF1.ru.md - Словарь терминов: https://github.com/HowProgrammingWorks/Dictionary ## Модуль SEF1 diff --git a/Exercises/Exercises.ru.md b/Exercises/SEF1.ru.md similarity index 100% rename from Exercises/Exercises.ru.md rename to Exercises/SEF1.ru.md diff --git a/README.md b/README.md index 13c682a..8d4b287 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Индекс и состояние курсов - [Индекс каналов и групп сообщества Метархия](Links.md) -- [Индекс докладов на конференциях](Talks.md) +- [Индекс докладов на конференциях](Courses/Talks.md) ## Последовательная программа From e97433af7f9a76de2338a7d28e7cc7e70d6dc796 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 30 Sep 2020 23:47:29 +0300 Subject: [PATCH 189/515] Add projects for SEF3 (#33) --- Exercises/SEF3.ru.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 Exercises/SEF3.ru.md diff --git a/Exercises/SEF3.ru.md b/Exercises/SEF3.ru.md new file mode 100644 index 0000000..f9b40f0 --- /dev/null +++ b/Exercises/SEF3.ru.md @@ -0,0 +1,20 @@ +# Практика и проекты + +Возможные варианты: +- Контрибьюшен в любой open-source проект или библиотеку +- Контрибьюшен в [Metarhia](https://github.com/metarhia) +- Проект студенческой группы или общественный проект в открытом коде +- Собственный open-source проект + +Разрешается (при зазумном обосновании выбора): +- Любой язык +- Технологический стек + +Если вы делаете свой репозиторий, то он обязательно должен включать: +- Юниттесты +- CI (например: TravisCI, Github Actions) +- Лицензию и список контрибьютеров +- Хорошее ведение репозитория: issues, pull requests, milestones +- Семантическое версионирование +- Настроенный линтер (для js еще и prettier) +- Дотфайлы для системы контроля версий и менеджера пакетов From d612f2069a30f1cecd4317df14165dada14cb195 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 1 Oct 2020 01:39:06 +0300 Subject: [PATCH 190/515] Add repos (#34) --- Exercises/SEF3.ru.md | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/Exercises/SEF3.ru.md b/Exercises/SEF3.ru.md index f9b40f0..1add903 100644 --- a/Exercises/SEF3.ru.md +++ b/Exercises/SEF3.ru.md @@ -1,16 +1,16 @@ # Практика и проекты -Возможные варианты: +## Возможные варианты: - Контрибьюшен в любой open-source проект или библиотеку - Контрибьюшен в [Metarhia](https://github.com/metarhia) - Проект студенческой группы или общественный проект в открытом коде - Собственный open-source проект -Разрешается (при зазумном обосновании выбора): +## Разрешается (при зазумном обосновании выбора): - Любой язык -- Технологический стек +- Любой технологический стек -Если вы делаете свой репозиторий, то он обязательно должен включать: +## Если вы делаете свой репозиторий, то он обязательно должен включать: - Юниттесты - CI (например: TravisCI, Github Actions) - Лицензию и список контрибьютеров @@ -18,3 +18,21 @@ - Семантическое версионирование - Настроенный линтер (для 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/metadoc +- Фреймворк тестирования: https://github.com/metarhia/metatests +- Общие утилиты: https://github.com/metarhia/common From 4a270aa90227c57620dad31c1362d8e65caecefa Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 1 Oct 2020 01:47:34 +0300 Subject: [PATCH 191/515] Rename Exercises to Practice --- Archive/2019-2020/IP9X.md | 2 +- Courses/Fundamentals.md | 2 +- {Exercises => Practice}/SEF1.ru.md | 0 {Exercises => Practice}/SEF3.ru.md | 0 4 files changed, 2 insertions(+), 2 deletions(-) rename {Exercises => Practice}/SEF1.ru.md (100%) rename {Exercises => Practice}/SEF3.ru.md (100%) diff --git a/Archive/2019-2020/IP9X.md b/Archive/2019-2020/IP9X.md index 534d556..fc576be 100644 --- a/Archive/2019-2020/IP9X.md +++ b/Archive/2019-2020/IP9X.md @@ -8,7 +8,7 @@ - Автор: https://github.com/tshemsedinov - Канал в телеграме: https://t.me/HowProgrammingWorks - Группа (чат): https://t.me/Programming_IP9X -- Задачи по курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Exercises/SEF1.ru.md +- Задачи по курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Practice/SEF1.ru.md - Словарь терминов: https://github.com/HowProgrammingWorks/Dictionary ## Программа на 1й семестр 2019-2020 diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index 71cab22..0c4dc8e 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -7,7 +7,7 @@ - Автор: https://github.com/tshemsedinov - Канал в телеграме: https://t.me/HowProgrammingWorks - Группа (чат): https://t.me/Programming_IP9X -- Задачи по курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Exercises/SEF1.ru.md +- Задачи по курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Practice/SEF1.ru.md - Словарь терминов: https://github.com/HowProgrammingWorks/Dictionary ## Модуль SEF1 diff --git a/Exercises/SEF1.ru.md b/Practice/SEF1.ru.md similarity index 100% rename from Exercises/SEF1.ru.md rename to Practice/SEF1.ru.md diff --git a/Exercises/SEF3.ru.md b/Practice/SEF3.ru.md similarity index 100% rename from Exercises/SEF3.ru.md rename to Practice/SEF3.ru.md From 1e241090b26589434a92af96c5c0be8399e8042b Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 1 Oct 2020 01:51:53 +0300 Subject: [PATCH 192/515] Add practice index --- Practice/Index.md | 6 ++++++ README.md | 1 + 2 files changed, 7 insertions(+) create mode 100644 Practice/Index.md diff --git a/Practice/Index.md b/Practice/Index.md new file mode 100644 index 0000000..16e6f46 --- /dev/null +++ b/Practice/Index.md @@ -0,0 +1,6 @@ +# Практика и проекты + +- Модуль [SEF1](SEF1.ru.md) (1 курс, 1 семестр) +- Модуль SEF2 (1 курс, 2 семестр) +- Модуль [SEF3](SEF3.ru.md) (2 курс, 1 семестр) +- Модуль SEF4 (2 курс, 2 семестр) diff --git a/README.md b/README.md index 8d4b287..bad299c 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ - [Индекс каналов и групп сообщества Метархия](Links.md) - [Индекс докладов на конференциях](Courses/Talks.md) +- [Индекс практических заданий](Practice/Index.md) ## Последовательная программа From 188dc3f3a8ccfa3021992a83667b2830b83e9a99 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 1 Oct 2020 18:52:00 +0300 Subject: [PATCH 193/515] Add semver --- Practice/SEF3.ru.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Practice/SEF3.ru.md b/Practice/SEF3.ru.md index 1add903..84377a7 100644 --- a/Practice/SEF3.ru.md +++ b/Practice/SEF3.ru.md @@ -11,11 +11,11 @@ - Любой технологический стек ## Если вы делаете свой репозиторий, то он обязательно должен включать: -- Юниттесты +- Юниттесты (возможно, системные и ганрузочные тесты) - CI (например: TravisCI, Github Actions) - Лицензию и список контрибьютеров - Хорошее ведение репозитория: issues, pull requests, milestones -- Семантическое версионирование +- Семантическое версионирование: https://semver.org/ - Настроенный линтер (для js еще и prettier) - Дотфайлы для системы контроля версий и менеджера пакетов From 2d03410c9ffc52897d70a5a14cec8bddc20bd226 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 1 Dec 2020 21:26:29 +0200 Subject: [PATCH 194/515] Add video about middlewares --- Courses/NodeJS.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index 7682594..d9d5202 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -4,6 +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 + ## Вебинары Node.js: Выйди и зайди нормально - [Часть 1: Обзор новых возможностей, история и изоляция](https://youtu.be/GJY2dyE6328?t=480) From bb0d25eea7e39403c1a54f81a845206882d3879c Mon Sep 17 00:00:00 2001 From: SurkinK Date: Thu, 7 Jan 2021 00:56:53 +0500 Subject: [PATCH 195/515] 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 196/515] 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 197/515] 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 198/515] 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 199/515] 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 200/515] 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 201/515] 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 202/515] 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 203/515] 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 204/515] 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 205/515] 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 206/515] 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 207/515] 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 208/515] 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 209/515] 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 210/515] 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 211/515] 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 212/515] 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 213/515] 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 214/515] 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 215/515] 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 216/515] 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 217/515] 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 218/515] 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 219/515] 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 220/515] 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 221/515] 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 222/515] 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 223/515] 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 224/515] 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 225/515] 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 226/515] 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 227/515] 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 228/515] 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 229/515] 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 230/515] 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 231/515] 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 232/515] 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 233/515] 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 234/515] 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 235/515] 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 236/515] 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 237/515] 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 238/515] 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 239/515] 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 240/515] 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 241/515] 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 242/515] 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 243/515] 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 244/515] 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 245/515] 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 246/515] 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 247/515] 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 248/515] 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 249/515] 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 250/515] 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 251/515] 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 252/515] 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 253/515] 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 254/515] 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 255/515] 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 256/515] 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 257/515] 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 258/515] 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 259/515] 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 260/515] 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 261/515] 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 262/515] 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 263/515] 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 264/515] 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 265/515] 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 266/515] 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 267/515] 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 268/515] 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 269/515] 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 270/515] 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 271/515] 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 272/515] 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 273/515] 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 274/515] 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 275/515] 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 276/515] 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 277/515] 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 278/515] 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 279/515] 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 280/515] 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 281/515] 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 282/515] 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 283/515] 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 284/515] 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 285/515] 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 286/515] 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 287/515] 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 288/515] 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 289/515] 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 290/515] 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 291/515] 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 292/515] 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 293/515] 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 294/515] 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 295/515] 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 296/515] 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 297/515] 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 298/515] 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 299/515] 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 300/515] 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 301/515] 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 302/515] =?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 303/515] =?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 304/515] 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 305/515] 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 306/515] 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 307/515] 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 308/515] =?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 309/515] 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 310/515] 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 311/515] 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 312/515] 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 313/515] 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 314/515] 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 315/515] 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 316/515] 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 317/515] 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 318/515] 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 319/515] 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 320/515] 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 321/515] 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 322/515] 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 323/515] 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 324/515] 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 325/515] 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 326/515] 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 327/515] 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 328/515] 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 329/515] 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 330/515] 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 331/515] 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 332/515] 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 333/515] 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 334/515] 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 335/515] 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 336/515] 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 337/515] 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 338/515] 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 339/515] 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 340/515] 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 341/515] 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 342/515] 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 343/515] 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 344/515] 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 345/515] 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 346/515] 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 347/515] 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 348/515] 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 349/515] 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 350/515] 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 351/515] 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 352/515] 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 353/515] 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 354/515] 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 355/515] 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 356/515] 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 357/515] 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 358/515] 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 359/515] 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 360/515] 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 361/515] 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 362/515] 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 363/515] 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 364/515] 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 365/515] 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 366/515] 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 367/515] 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 368/515] 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 369/515] 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 370/515] 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 371/515] 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 372/515] 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 373/515] 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 374/515] 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 375/515] 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 376/515] 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 377/515] 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 378/515] 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 379/515] 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 380/515] 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 381/515] 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 382/515] 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 383/515] 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 384/515] 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 385/515] 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 386/515] 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 387/515] 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 388/515] 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 389/515] 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 390/515] 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 391/515] 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 392/515] 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 393/515] 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 394/515] 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 395/515] 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 396/515] 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 397/515] 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 398/515] 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 399/515] 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 400/515] 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 401/515] 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 402/515] 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 403/515] 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 404/515] 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 405/515] 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 406/515] 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 407/515] 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 408/515] 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 409/515] 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 410/515] 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 411/515] 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 412/515] 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 413/515] 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 414/515] 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 415/515] 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 416/515] 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 417/515] 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 418/515] 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 419/515] 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 420/515] 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 421/515] 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 422/515] 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 423/515] 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 424/515] 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 425/515] 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 426/515] 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 427/515] 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 428/515] 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 429/515] 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 430/515] 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 431/515] 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 432/515] 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 433/515] 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 434/515] 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 435/515] 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 436/515] 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 437/515] 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 438/515] 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 439/515] 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 440/515] 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 441/515] 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 442/515] 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 443/515] 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 444/515] 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 445/515] 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 446/515] 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 447/515] 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 448/515] 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 449/515] 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 450/515] 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 451/515] 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 452/515] 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 453/515] 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 454/515] 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 455/515] 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 456/515] 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 457/515] 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 458/515] 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 459/515] 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 460/515] 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 461/515] 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 462/515] 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 463/515] 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 464/515] 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 465/515] 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 466/515] 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 467/515] 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 468/515] 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 469/515] 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 470/515] 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 471/515] 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 472/515] 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 473/515] 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 474/515] 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 475/515] 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 476/515] 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 477/515] 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 478/515] 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 479/515] 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 480/515] 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 481/515] 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 482/515] 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 483/515] 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 484/515] 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 485/515] 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 486/515] 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 487/515] 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 488/515] 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 489/515] 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 490/515] 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 491/515] 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 492/515] 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 493/515] 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 494/515] 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 495/515] 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 496/515] 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 497/515] 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 498/515] 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 499/515] 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 500/515] 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 501/515] 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 502/515] 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 From 82551ff3224a11230eb16fab2058b33081ea4071 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 8 Jul 2025 10:26:29 -0400 Subject: [PATCH 503/515] Update Async-2025.md --- Courses/Async-2025.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Courses/Async-2025.md b/Courses/Async-2025.md index 9e5515b..73f5e88 100644 --- a/Courses/Async-2025.md +++ b/Courses/Async-2025.md @@ -23,9 +23,9 @@ | `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` | | +| `signals` | `GoF pattern Iterator` | `BroadcastChannel` | `coroutines` | | +| `locks` | `Actor pattern` | `threads` | `Actor Model` | | +| `iterators` | `Disposable` | `processes` | `do` | | Условные обозначения: ⭐ новые лекции, ✨ открытые старые лекции, 💯 обязательные, 🧑‍🎓 продвинутые, ⚙️ системные, 🧑‍🚀 по выбору, ⚠️ устаревшее, 🧩 необязательные темы, 💻 примеры кода, 🧑‍💻 задания @@ -75,6 +75,10 @@ - 💻 Примеры кода из старого курса: https://github.com/HowProgrammingWorks/AsyncAwait - 💻 Примеры кода: (готовятся), будут тут https://github.com/HowProgrammingWorks/AsyncErrorHandling - 🧑‍💻 Задания по обработке ошибок +- 🧑‍🎓 Контракт `Disposable` + - ⭐ Явное управление ресурсами (Explicit Resource Management) + - ⭐ Подсчет ссылок и освобождение ресурсов на базе `Disposable` + - ⭐ Реализация концепции `Ownership` на базе `Disposable` - 🧑‍🎓 Асинхронная очередь `AsyncQueue` - ⭐ Асинхронная очередь (в платном курсе) - ✨ Конкурентная асинхронная очередь из старой лекции](https://youtu.be/Lg46AH8wFvg) From 56f45b612107a5e61b288186808013751d59ba9c Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 9 Jul 2025 04:25:16 -0400 Subject: [PATCH 504/515] Update Async-2025.md --- Courses/Async-2025.md | 284 ++++++++++++++++++++++++------------------ 1 file changed, 162 insertions(+), 122 deletions(-) diff --git a/Courses/Async-2025.md b/Courses/Async-2025.md index 73f5e88..aedf560 100644 --- a/Courses/Async-2025.md +++ b/Courses/Async-2025.md @@ -1,156 +1,196 @@ # Асинхронное программирование 2025 -Те способы писать асинхронный код, которые мы использовали 10-15 лет назад безвозвратно уходят в прошлое и могут быть интересны лишь для поддержки легаси упражнения в глубоком понимании асинхронного программирования. Даже способы 5-7 летней давности уже имеют мало общего с современными практиками, но интернет полон устаревшей информации, даже [открытый курс сообщества Metarhia](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md) на сегодняшний момент стал слишком громоздким и излишним. Еще нужно упомянуть о том, что в системном и прикладном коде асинхронное программирование должно выглядеть принципиально по-разному. Полностью скрыть от продуктового разработчика сложность асинхронного кода за абстракциями не удастся, потому, что он в любом случае будет работать с таймерами, событиями, стримами, fetch и другими асинхронными API, но его можно писать в десятки раз проще, чем асинхронный код в системном слое. Что касается системного слоя, то нужно вводить в обиход теорию очередей (системы массового обслуживания), модель акторов, часть абстракций из параллельного программирования (семафоры, рандеву, атомарные операции). Конечно, содержать все это в одном курсе сложновато, поэтому, мы отдадим приоритет прикладному коду и сначала полностью подготовим курс для применения асинхронного программирования в продуктовой разработке, а потом будем добавлять необязательные темы из старого курса и много других полезных абстракций, широко распространенных в других языках программирования, но слабо известных в мире JavaScript. +> Для JavaScrip и TypeScript. 9 часов основных материалов и более 45 часов дополнительных. +> Два языка лекций: русский и украинский. Семинары каждую неделю. Сообщество выпускников более 1200 разработчиков. -## Содержание +🔹 Основной материал можно освоить за 1 месяц, если тратить на это 2-3 часа в неделю. +🔹 Для освоения всего материала в таком темпе нужно примерно 1 год. +🔹 Начинать можно в любое время и двигаться со своей скоростью. +🔹 Все материалы остаются навсегда + Вы получите обновления 2 года. + +![PXL_20231227_190319918 MP](https://github.com/metatech-university/Async-2024/assets/4405297/2d0855a7-18d5-45c2-8fa9-d1e873ba1030) + +Этому курсу уже 15 лет, я обновляю его каждый год и за это время он стал самым крупным и полным сборником знаний про ассинхронное программирование. Интернет полон устаревшими материалами по JavaScript, даже то, как люди писали асинхронный код 5-7 лет назад уже имеет мало общего с современными практиками. В открытом виде есть все материалы, записаные до 2020 года: [открытый курс сообщества Metarhia по асинхронному программированию](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md). Старый курс стал слишком громоздким, но его материалы тоже включены сюда, как дополнительные и исторические, потому, что поддержку легаси никто не отменял. + +🔹 [Обзор контрактов и абстракций](https://youtu.be/tJTK9dWVkbc) +🔹 [Огляд українською асинхронного програмування](https://youtu.be/isyJISjlpE4) +🔹 [Обзор параллельного программирования](https://youtu.be/lxHudbhgfy0) -Важные аспекты нового курса: +Еще нужно упомянуть, что в системном и прикладном коде асинхронное программирование должно выглядеть принципиально по-разному. Полностью скрыть от продуктового разработчика сложность асинхронного кода за абстракциями не получится, потому, что он в любом случае будет работать с таймерами, событиями, стримами, fetch и другими асинхронными API, но его можно писать в десятки раз проще, чем асинхронный код в системном слое. Что касается системного слоя, то нужно вводить в обиход теорию очередей (системы массового обслуживания), модель акторов, часть абстракций из параллельного программирования (семафоры, рандеву, атомарные операции). -- Концентрация на практическом применении (примеры кода из реальных проектов) -- Актуальность и соответствие стандартам по состоянию на 2023-2025 -- Задачи и разбор их решений, семинары, ревью кода (курс это не только видео) -- Рекомендации к выбору стиля и абстракций асинхронности под задачу -- Внимание к корректной обработке ошибок во всех стилях асинхронности -- Упор на надежность, поддерживаемость, тестируемость, снижение зацепления -- Примеры и задачи по исправлению скрытых проблемных состояний и data races +🔹 В 2025 появились новые темы: signals, disposable, web streams, обновлены материалы по паттернам и адаптерам асинхронных контрактов, reactor, proactor, обработка ошибок и др. +🔹 В ближайшее время воявится: `AbortController`, `AbortSignal`, новые возможность Promise, `MessageChannel`, `BroadcastChannel`, обновим лекции по функциональному стилю кода. +🔹 Курс начал получать примеры кода на TypeScript, и этого будет становиться больше в новых лекциях, до конца 2025 TypeScript станет вторым языком курса. -Для того, чтобы писать прикладной код хватит первого столбика таблицы (а в оглавлении темы помечены 💯). Второй столбик полезен, как дополнительные знания, (углубленное изучение помечено как 🧑‍🎓). Для бекенда на ноде нужно освоить два первых столбика. Третий столбик содержит системные вещи (помечены ⚙️ в оглавлении), которые нужны для разработки инструментов, платформ и библиотек. Четвертый столбик (помечен 🧑‍🚀) это дополнительные абстракции, которые можно осваивать выборочно, они понадобятся не всем, но если вы работаете в проектах, где много функционального и/или реактивного программирования. Пятый столбик - вещи, которые морально устарели и могут рассматриваться как интересный антиквариат (помечены ⚠️). +## Краткое содержание -| Applied 💯 | Advanced 🧑‍🎓 | System ⚙️ | Elective 🧑‍🚀 | Legacy ⚠️ | +Для того, чтобы писать прикладной код хватит первого столбика таблицы (а в оглавлении темы помечены 💯). Второй столбик полезен, как дополнительные знания, (углубленное изучение помечено как 🧑‍🎓). Для бекенда на ноде нужно освоить два первых столбика. Третий столбик содержит системные вещи (помечены ⚙️ в оглавлении), которые нужны для разработки инструментов, платформ и библиотек. Четвертый столбик (помечен 🧑‍🚀) это дополнительные абстракции, которые можно осваивать выборочно, они понадобятся не всем, но если вы работаете в проектах, где много функционального и/или реактивного программирования. Пятый столбик - вещи, которые морально устарели и могут рассматриваться как интересный антиквариат (помечены 🕰️). + +| 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` | `GoF pattern Iterator` | `BroadcastChannel` | `coroutines` | | -| `locks` | `Actor pattern` | `threads` | `Actor Model` | | -| `iterators` | `Disposable` | `processes` | `do` | | +| `events` | `Chain of responsibility` | `Spin Lock` | `Future` | `Metasync` | +| `streams` | `Async Generator` | `MessageChannel` | `coroutines` | `middleware` | +| `signals` | `GoF pattern Iterator` | `BroadcastChannel` | `Actor Model` | `RxJS` | +| `locks` | `Actor pattern` | `threads` | `do` | | +| `iterators` | `Disposable` | `processes` | | | + +🔹 Концентрация на практическом применении (примеры кода из реальных проектов) +🔹 Актуальность и соответствие стандартам по состоянию на 2023-2025 +🔹 Задачи и разбор их решений, семинары, ревью кода (курс это не только видео) +🔹 Рекомендации к выбору стиля и абстракций асинхронности под задачу +🔹 Внимание к корректной обработке ошибок во всех стилях асинхронности +🔹 Упор на надежность, поддерживаемость, тестируемость, снижение зацепления +🔹 Примеры и задачи по исправлению скрытых проблемных состояний и data races -Условные обозначения: ⭐ новые лекции, ✨ открытые старые лекции, 💯 обязательные, 🧑‍🎓 продвинутые, ⚙️ системные, 🧑‍🚀 по выбору, ⚠️ устаревшее, 🧩 необязательные темы, 💻 примеры кода, 🧑‍💻 задания +## Содержание - 💯 Контракты асинхронности на базе 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) (решения, ревью и разбор в платном курсе) + - ⭐ Контракты `Callback` и `Callback-last-error-first` + - 💻 Примеры кода + - 🧑‍💻 Задания по колбекам и созвон с разбором заданий + - 🕰️ Функции высшего порядка, колбеки, события на JavaScript + - 🕰️ Асинхронное программирование на callback`ах в JavaScript + - 💡 V8: оптимизируем возврат из функции в JavaScript через return, resolve, callback — Деми Мурыч - 💯 Минимально необходимое понимание рантайма: 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 + - ⭐ Фазы Event-loop в V8 и Node.js + - 🗃️ Стрим с разбрром Event loop и асинхронности + - 💻 Примеры кода + - 🧑‍💻 Задания по таймерам + - ✨ Event loop, асинхронность, таймеры, колбеки, промисы, async/await + - 💡 Асинхронное программирования в JavaScript, Node.js: callback, promise, thenable, async/await +- 🧑‍🎓 Паттерны Actor, Reactor, Proactor + - ⭐ Actor + Actor Compose (композиция актора и состояния) + - ⭐ Паттерн Reactor (реактор): как устроен Event Loop в Node.js + - ⭐ Паттерн Proactor + - 💡 Семинар Паттерны Actor, Reactor, Proactor для JavaScript и TypeScript +- 💯 Контракты на базе событий + - ⭐ События: `EventTarget`, `EventEmitter` + - ⭐ GoF Pattern Observer + - 💻 Примеры кода по событиям + - 🧑‍💻 Задания по событиям + - ✨ EventEmitter из старой лекции + - 💻 Примеры кода из старой лекции по EventEmitter + - 💡 Code review: Observable, EventEmitter, EventTarget - 💯 Абстракция потоков `Stream` - - ⭐ Стримы Readable, Writable, Transform, открытый конструктор, буферизация, backpressure (ссылка в платном курсе) - - 🧑‍💻 Задания по стримам (в платном курсе) - - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Streams/tree/master/JavaScript - - ✨ [Паттерн открытый конструктор (Revealing Constructor)](https://youtu.be/leR5sXRkuJI) - - 💻 Примеры кода: https://github.com/HowProgrammingWorks/RevealingConstructor + - ⭐ Стримы Readable, Writable, Transform, открытый конструктор, буферизация, backpressure + - ⭐ Web Streams — браузерное API для потоков событий + - 💻 Примеры кода + - ✨ Паттерн открытый конструктор (Revealing Constructor + - 💻 Примеры кода + - ✨ Потоки (Streams) в Node.js + - ✨ HTTP сервер в Node.js,req, res, сокеты и потоки (streams) - ⚙️ Контракт `Thenable` - - ⭐ Контракт `Thenabe` (ссылка в платном курсе) - - ✨ [Thenable из старой лекции](https://youtu.be/Jdf_tZuJbHI) - - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Thenable - - 🧑‍💻 [Задания по `Thenabe`Thenable](https://github.com/HowProgrammingWorks/Thenable/tree/master/JavaScript/Tasks) (решения, ревью и разбор в платном курсе) + - ⭐ Контракт `Thenabe` + - ✨ Thenable из старой лекции + - ✨ Thenable и легковесный await + - 💻 Примеры кода + - 🧑‍💻 Задания по `Thenabe` и созвон с разбором заданий - 💯 Контракт `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) (решения, ревью и разбор в платном курсе) + - ⭐ Promise: then/catch/finally и методы класса all, allSettled, race, any + - ✨ Асинхронность на промисах из старой лекции + - 💻 Примеры кода + - 🧑‍💻 Задания по `Promise` и созвон с разбором заданий - 💯 Контракт асинхронных функций `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 - - 🧑‍💻 Задания по сигналам (в платном курсе) + - ⭐ Асинхронные функции + - ✨ Асинхронные функции из старой лекции + - 💻 Примеры кода + - 🧑‍💻 Задания по `async/await` +- 💯 Контракт сигналов `Signals` + - ⭐ Сигналы: signal, computed, effect + - 💻 Примеры кода + - 🧑‍💻 Задания по сигналам - 💯 Обработка ошибок, их выявление и решение проблем со стектрейсом - - ✨ [Обработка ошибок из старой лекции](https://youtu.be/Jdf_tZuJbHI) + - ⭐ Обработка ошибок, логирование и аггрегирование + - ⭐ Семинар: Errors, exceptions, operational, soft, hard, recovery, logging + - 💡 Реализация `Graceful shutdown` в Node.js, `unhandled exceptions`, `async stack trace` + - ✨ Обработка ошибок из старой лекции - 💻 Примеры кода - - 💻 Примеры кода из старого курса: https://github.com/HowProgrammingWorks/AsyncAwait - - 💻 Примеры кода: (готовятся), будут тут https://github.com/HowProgrammingWorks/AsyncErrorHandling - 🧑‍💻 Задания по обработке ошибок -- 🧑‍🎓 Контракт `Disposable` - - ⭐ Явное управление ресурсами (Explicit Resource Management) - - ⭐ Подсчет ссылок и освобождение ресурсов на базе `Disposable` - - ⭐ Реализация концепции `Ownership` на базе `Disposable` - 🧑‍🎓 Асинхронная очередь `AsyncQueue` - - ⭐ Асинхронная очередь (в платном курсе) - - ✨ Конкурентная асинхронная очередь из старой лекции](https://youtu.be/Lg46AH8wFvg) - - 💻 Примеры кода: https://github.com/HowProgrammingWorks/ConcurrentQueue - - 💻 Примеры кода: (готовятся), будут тут https://github.com/HowProgrammingWorks/AsyncQueue + - 💡 Семинар: Асинхронная очередь — AsyncQueue, ConcurrentQueue + - 💡 Node.js Queue optimized for JavaScript V8: Circular Buffer, Unrolled List, Unrolled Queue + - ✨ Конкурентная асинхронная очередь из старой лекции + - 💻 Примеры кода - 🧑‍🎓 Асинхронный пул `AsyncPool` - - ✨ [Асинхронный пул для worker thread pool в Node.js](https://youtu.be/Jj5KZRq4wYI) - - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Pool - - 💻 Примеры кода: (готовятся), будут тут https://github.com/HowProgrammingWorks/AsyncPool + - ⭐ Паттерн Factory Method + - ⭐ Паттерны: Object Pool, Factory + - ⭐ Асинхронный Pool + - 💡 Семинар: Creator, Factory, Factory Method, Object Pool + - ✨ Асинхронный пул для worker thread pool в Node.js + - ✨ Фабрики и пулы объектов в JavaScript, factorify, poolify + - 💻 Примеры кода - 🧑‍🎓 Асинхронная коллекция `Collector` - - 🧩 Асинхронные коллекции (собираем значения до готовности) - - ✨ [Асинхронные коллекторы данных](https://youtu.be/tgodt1JL6II) - - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Collector -- 🧑‍🎓 Паттерн цепочка ответственности `Chain of responsibility` - - 💻 Примеры кода: (готовятся), будут тут https://github.com/HowProgrammingWorks/ChainOfResponsibility + - ⭐ Асинхронные коллекции (собираем значения до готовности) + - ✨ Асинхронные коллекторы данных + - 💻 Примеры кода +- 🧑‍🎓 Паттерн "цепочка ответственности" + - ⭐ Pattern: Chain of responsibility + - 💻 Примеры кода - 🧑‍🎓 Конвертеры контрактов `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) + - ⭐ GoF Patterns: Adapter + - ⭐ Асинхронные адаптеры + - 💡 Семинар по адаптерам для Node.js и асинхронного программирования + - 💡 Node.js ревью кода promisify — Тимур Шемсединов и Деми Мурыч + - ✨ Асинхронные адаптеры из старой лекции + - 💻 Примеры кода +- 🧑‍🎓 Предотвращение состояния гонки по данным и управлению в асинхронном коде +- 🧑‍🎓 Отмена асинхронных операций + - ⭐ AbortController, AbortSignal + - 💻 Примеры кода +- 🧑‍🎓 `Async Generator` и `Async Iterator` + - ⭐ Generator, iterator, iterable + - ⭐ Async generator, Async iterator, Async iterable + - ✨ Генераторы и асинхронные генераторы из старой лекции + - ✨ Итераторы и асинхронные итераторы из старой лекции + - 💻 Примеры кода - ⚙️ Абстракции портированные из параллельного программирования в асинхронное - - 🧩 Асинхронные абстракции: `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 + - ✨ Семафоры и мьютексы в JavaScript и Node.js + - 💻 Асинхронные абстракции: `Semaphore`, `Mutex` + - 💻 Блокировки WebLocks API + - 💻 Блокировки `Lock`, `Spin Lock` +- ⚙️ Абстракции параллельного программирования: процессы и потоки + - ⭐ Многопоточность в Node.js + - ⭐ Web Locks API in Node.js and browser + - ⭐ Потоки и процессы в JavaScript, асинхронное и параллельное программирование на Node.js и в браузере + - ⭐ Потоки та процеси українською для Web та Node.js, Atomics/CAS, шарена пам'ять, блокування + - ✨ Межпроцессовое взаимодействие в Node.js + - ⭐ Межпроцессовое и межпотоковое взаимодействие, `MessageChannel`, `BroadcastChannel` + - ⭐ Корутины `coroutines` +- 🧑‍🚀 Асинхронная композиция `compose callbacks` & `async compose` + - ⭐ Асинхронная композиция: compose, pipe — функциональное программирование + - ✨ Асинхронная композиция функций + - 💻 Примеры кода - 🧑‍🚀 Асинхронность на потоках событий `RxJS` - - ✨ Потоки событий, паттерн `Observer/Observable` - - ✨ [Асинхронность на RxJS из старой лекции](https://youtu.be/0kcpMAl-wfE) - - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Rx + - ✨ Асинхронность на RxJS из старой лекции + - 💻 Примеры кода - 🧑‍🚀 Модель акторов `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) + - ⭐ FP Async Pattern — Future + - ✨ Асинхронность на фьючерах без состояния + - 💻 Примеры кода +- 🕰️ Асинхронность на синхронных генераторах `function*/yield` +- 🕰️ Мидлвары `middleware` как антипаттерн + - ✨ Node.js Middleware – никогда больше! + - 💻 Примеры кода +- 🕰️ Контракты семейства `Deferred` + - ✨ Deferred: Асинхронность на диферах с состоянием + - 💻 Примеры кода +- 🕰️ Async.js + - ✨ Легаси код на библиотеке `Async.js` + - 💻 Примеры кода +- 🕰️ Коллекция асинхронных абстракций `Metasync` - ⚙️ Трекинг асинхронных контекстов - - ⭐ 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) + - ⭐ AsyncLocalStorage, AsyncResource + - 💻 Примеры использования AsyncLocalStorage и AsyncResource +- ⭐ Принципы и паттерны с адаптацией для JavaScript, TypeScript, Node.js и асинхронного программирования + - 💡 Принципы SOLID + - 💡 Паттерны GRASP + - ✨ Контрактное программирование ## Обратите внимание From aa4a9a34dc6cb2c78441bde1d3eef1a99cbdb066 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 9 Jul 2025 05:50:40 -0400 Subject: [PATCH 505/515] Update Async-2025.md --- Courses/Async-2025.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/Courses/Async-2025.md b/Courses/Async-2025.md index aedf560..8ab393b 100644 --- a/Courses/Async-2025.md +++ b/Courses/Async-2025.md @@ -3,24 +3,25 @@ > Для JavaScrip и TypeScript. 9 часов основных материалов и более 45 часов дополнительных. > Два языка лекций: русский и украинский. Семинары каждую неделю. Сообщество выпускников более 1200 разработчиков. -🔹 Основной материал можно освоить за 1 месяц, если тратить на это 2-3 часа в неделю. -🔹 Для освоения всего материала в таком темпе нужно примерно 1 год. -🔹 Начинать можно в любое время и двигаться со своей скоростью. -🔹 Все материалы остаются навсегда + Вы получите обновления 2 года. +🕑 Основной материал можно освоить за 1 месяц, если тратить на это 2-3 часа в неделю. +🗓️ Для освоения всего материала в таком темпе нужно примерно 1 год. +🏃‍♂️‍➡️ Начинать можно в любое время и двигаться со своей скоростью. +👍 Все материалы остаются навсегда + Вы получите обновления 2 года. ![PXL_20231227_190319918 MP](https://github.com/metatech-university/Async-2024/assets/4405297/2d0855a7-18d5-45c2-8fa9-d1e873ba1030) Этому курсу уже 15 лет, я обновляю его каждый год и за это время он стал самым крупным и полным сборником знаний про ассинхронное программирование. Интернет полон устаревшими материалами по JavaScript, даже то, как люди писали асинхронный код 5-7 лет назад уже имеет мало общего с современными практиками. В открытом виде есть все материалы, записаные до 2020 года: [открытый курс сообщества Metarhia по асинхронному программированию](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md). Старый курс стал слишком громоздким, но его материалы тоже включены сюда, как дополнительные и исторические, потому, что поддержку легаси никто не отменял. -🔹 [Обзор контрактов и абстракций](https://youtu.be/tJTK9dWVkbc) -🔹 [Огляд українською асинхронного програмування](https://youtu.be/isyJISjlpE4) -🔹 [Обзор параллельного программирования](https://youtu.be/lxHudbhgfy0) +👉 [Обзор контрактов и абстракций](https://youtu.be/tJTK9dWVkbc) +👉 [Огляд українською асинхронного програмування](https://youtu.be/isyJISjlpE4) +👉 [Обзор параллельного программирования](https://youtu.be/lxHudbhgfy0) Еще нужно упомянуть, что в системном и прикладном коде асинхронное программирование должно выглядеть принципиально по-разному. Полностью скрыть от продуктового разработчика сложность асинхронного кода за абстракциями не получится, потому, что он в любом случае будет работать с таймерами, событиями, стримами, fetch и другими асинхронными API, но его можно писать в десятки раз проще, чем асинхронный код в системном слое. Что касается системного слоя, то нужно вводить в обиход теорию очередей (системы массового обслуживания), модель акторов, часть абстракций из параллельного программирования (семафоры, рандеву, атомарные операции). 🔹 В 2025 появились новые темы: signals, disposable, web streams, обновлены материалы по паттернам и адаптерам асинхронных контрактов, reactor, proactor, обработка ошибок и др. 🔹 В ближайшее время воявится: `AbortController`, `AbortSignal`, новые возможность Promise, `MessageChannel`, `BroadcastChannel`, обновим лекции по функциональному стилю кода. 🔹 Курс начал получать примеры кода на TypeScript, и этого будет становиться больше в новых лекциях, до конца 2025 TypeScript станет вторым языком курса. +🔹 Каждый год курс обновляется, чем больше людей будет на курсе, тем больше будет появляться материалов, практических примеров, заданий, стримов и докладов, больше R&D. ## Краткое содержание @@ -204,7 +205,8 @@ ## Как попасть на курс -🎫 Регистрация: следите за публикациями чтобы не пропустить начало регистрации. +🎫 До 12 июля (включительно) 2024 можно купить курс за $200: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC +🎫 C 12 июля стоимость будет $250: https://www.paypal.com/ncp/payment/CCEPK9DWYPWM8 👉 Новости курса будут в канале: https://t.me/asyncify 👉 Открытая группа курса: https://t.me/asynctalks From 3fbd10439833dbda87c633bd4350766f3017d027 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 9 Jul 2025 05:56:31 -0400 Subject: [PATCH 506/515] Update Async-2025.md --- Courses/Async-2025.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Courses/Async-2025.md b/Courses/Async-2025.md index 8ab393b..fdcae91 100644 --- a/Courses/Async-2025.md +++ b/Courses/Async-2025.md @@ -7,6 +7,7 @@ 🗓️ Для освоения всего материала в таком темпе нужно примерно 1 год. 🏃‍♂️‍➡️ Начинать можно в любое время и двигаться со своей скоростью. 👍 Все материалы остаются навсегда + Вы получите обновления 2 года. +🎫 До 12 июля (включительно) 2024 можно купить курс за $200: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC ![PXL_20231227_190319918 MP](https://github.com/metatech-university/Async-2024/assets/4405297/2d0855a7-18d5-45c2-8fa9-d1e873ba1030) @@ -23,6 +24,8 @@ 🔹 Курс начал получать примеры кода на TypeScript, и этого будет становиться больше в новых лекциях, до конца 2025 TypeScript станет вторым языком курса. 🔹 Каждый год курс обновляется, чем больше людей будет на курсе, тем больше будет появляться материалов, практических примеров, заданий, стримов и докладов, больше R&D. +🎫 До 12 июля (включительно) 2024 можно купить курс за $200: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC + ## Краткое содержание Для того, чтобы писать прикладной код хватит первого столбика таблицы (а в оглавлении темы помечены 💯). Второй столбик полезен, как дополнительные знания, (углубленное изучение помечено как 🧑‍🎓). Для бекенда на ноде нужно освоить два первых столбика. Третий столбик содержит системные вещи (помечены ⚙️ в оглавлении), которые нужны для разработки инструментов, платформ и библиотек. Четвертый столбик (помечен 🧑‍🚀) это дополнительные абстракции, которые можно осваивать выборочно, они понадобятся не всем, но если вы работаете в проектах, где много функционального и/или реактивного программирования. Пятый столбик - вещи, которые морально устарели и могут рассматриваться как интересный антиквариат (помечены 🕰️). @@ -46,6 +49,8 @@ 🔹 Упор на надежность, поддерживаемость, тестируемость, снижение зацепления 🔹 Примеры и задачи по исправлению скрытых проблемных состояний и data races +🎫 До 12 июля (включительно) 2024 можно купить курс за $200: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC + ## Содержание - 💯 Контракты асинхронности на базе callback From d583adbd3be473b39f54ac1d699c253d6636545c Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 9 Jul 2025 06:14:32 -0400 Subject: [PATCH 507/515] Fix year --- Courses/Async-2025.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Courses/Async-2025.md b/Courses/Async-2025.md index fdcae91..df65caf 100644 --- a/Courses/Async-2025.md +++ b/Courses/Async-2025.md @@ -7,7 +7,7 @@ 🗓️ Для освоения всего материала в таком темпе нужно примерно 1 год. 🏃‍♂️‍➡️ Начинать можно в любое время и двигаться со своей скоростью. 👍 Все материалы остаются навсегда + Вы получите обновления 2 года. -🎫 До 12 июля (включительно) 2024 можно купить курс за $200: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC +🎫 До 12 июля (включительно) 2025 можно купить курс за $200: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC ![PXL_20231227_190319918 MP](https://github.com/metatech-university/Async-2024/assets/4405297/2d0855a7-18d5-45c2-8fa9-d1e873ba1030) @@ -24,7 +24,7 @@ 🔹 Курс начал получать примеры кода на TypeScript, и этого будет становиться больше в новых лекциях, до конца 2025 TypeScript станет вторым языком курса. 🔹 Каждый год курс обновляется, чем больше людей будет на курсе, тем больше будет появляться материалов, практических примеров, заданий, стримов и докладов, больше R&D. -🎫 До 12 июля (включительно) 2024 можно купить курс за $200: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC +🎫 До 12 июля (включительно) 2025 можно купить курс за $200: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC ## Краткое содержание @@ -49,7 +49,7 @@ 🔹 Упор на надежность, поддерживаемость, тестируемость, снижение зацепления 🔹 Примеры и задачи по исправлению скрытых проблемных состояний и data races -🎫 До 12 июля (включительно) 2024 можно купить курс за $200: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC +🎫 До 12 июля (включительно) 2025 можно купить курс за $200: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC ## Содержание @@ -210,8 +210,8 @@ ## Как попасть на курс -🎫 До 12 июля (включительно) 2024 можно купить курс за $200: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC -🎫 C 12 июля стоимость будет $250: https://www.paypal.com/ncp/payment/CCEPK9DWYPWM8 +🎫 До 12 июля (включительно) 2025 можно купить курс за $200: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC +🎫 C 12 июля 2025 стоимость будет $250: https://www.paypal.com/ncp/payment/CCEPK9DWYPWM8 👉 Новости курса будут в канале: https://t.me/asyncify 👉 Открытая группа курса: https://t.me/asynctalks From 20acac05229c74da66933a46c0f0c25ea19d73da Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 9 Jul 2025 12:36:22 -0400 Subject: [PATCH 508/515] Update Async-2025.md --- Courses/Async-2025.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Courses/Async-2025.md b/Courses/Async-2025.md index df65caf..ea16fe7 100644 --- a/Courses/Async-2025.md +++ b/Courses/Async-2025.md @@ -8,6 +8,7 @@ 🏃‍♂️‍➡️ Начинать можно в любое время и двигаться со своей скоростью. 👍 Все материалы остаются навсегда + Вы получите обновления 2 года. 🎫 До 12 июля (включительно) 2025 можно купить курс за $200: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC +🎫 Или купить на Paypal тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 ![PXL_20231227_190319918 MP](https://github.com/metatech-university/Async-2024/assets/4405297/2d0855a7-18d5-45c2-8fa9-d1e873ba1030) @@ -25,6 +26,7 @@ 🔹 Каждый год курс обновляется, чем больше людей будет на курсе, тем больше будет появляться материалов, практических примеров, заданий, стримов и докладов, больше R&D. 🎫 До 12 июля (включительно) 2025 можно купить курс за $200: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC +🎫 Или купить на Paypal тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 ## Краткое содержание @@ -50,6 +52,7 @@ 🔹 Примеры и задачи по исправлению скрытых проблемных состояний и data races 🎫 До 12 июля (включительно) 2025 можно купить курс за $200: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC +🎫 Или купить на Paypal тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 ## Содержание @@ -211,6 +214,7 @@ ## Как попасть на курс 🎫 До 12 июля (включительно) 2025 можно купить курс за $200: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC +🎫 Или купить на Paypal тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 🎫 C 12 июля 2025 стоимость будет $250: https://www.paypal.com/ncp/payment/CCEPK9DWYPWM8 👉 Новости курса будут в канале: https://t.me/asyncify From 18225ec02c29e52f89e806b295bbe69e7782f2a9 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 9 Jul 2025 12:37:23 -0400 Subject: [PATCH 509/515] Update Async-2025.md --- Courses/Async-2025.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Courses/Async-2025.md b/Courses/Async-2025.md index ea16fe7..4434c9b 100644 --- a/Courses/Async-2025.md +++ b/Courses/Async-2025.md @@ -7,8 +7,8 @@ 🗓️ Для освоения всего материала в таком темпе нужно примерно 1 год. 🏃‍♂️‍➡️ Начинать можно в любое время и двигаться со своей скоростью. 👍 Все материалы остаются навсегда + Вы получите обновления 2 года. -🎫 До 12 июля (включительно) 2025 можно купить курс за $200: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC -🎫 Или купить на Paypal тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 +🎫 До 12 июля (включительно) 2025 можно купить курс за $200 через Paypal: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC +🎫 Или купить на Payoneer тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 ![PXL_20231227_190319918 MP](https://github.com/metatech-university/Async-2024/assets/4405297/2d0855a7-18d5-45c2-8fa9-d1e873ba1030) @@ -25,8 +25,8 @@ 🔹 Курс начал получать примеры кода на TypeScript, и этого будет становиться больше в новых лекциях, до конца 2025 TypeScript станет вторым языком курса. 🔹 Каждый год курс обновляется, чем больше людей будет на курсе, тем больше будет появляться материалов, практических примеров, заданий, стримов и докладов, больше R&D. -🎫 До 12 июля (включительно) 2025 можно купить курс за $200: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC -🎫 Или купить на Paypal тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 +🎫 До 12 июля (включительно) 2025 можно купить курс за $200 через Paypal: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC +🎫 Или купить на Payoneer тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 ## Краткое содержание @@ -51,8 +51,8 @@ 🔹 Упор на надежность, поддерживаемость, тестируемость, снижение зацепления 🔹 Примеры и задачи по исправлению скрытых проблемных состояний и data races -🎫 До 12 июля (включительно) 2025 можно купить курс за $200: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC -🎫 Или купить на Paypal тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 +🎫 До 12 июля (включительно) 2025 можно купить курс за $200 через Paypal: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC +🎫 Или купить на Payoneer тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 ## Содержание @@ -213,8 +213,8 @@ ## Как попасть на курс -🎫 До 12 июля (включительно) 2025 можно купить курс за $200: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC -🎫 Или купить на Paypal тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 +🎫 До 12 июля (включительно) 2025 можно купить курс за $200 через Paypal: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC +🎫 Или купить на Payoneer тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 🎫 C 12 июля 2025 стоимость будет $250: https://www.paypal.com/ncp/payment/CCEPK9DWYPWM8 👉 Новости курса будут в канале: https://t.me/asyncify From 50db8015ac0c387d8a67d4309313d8bb258e55fd Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 9 Jul 2025 12:38:19 -0400 Subject: [PATCH 510/515] Update Async-2025.md --- Courses/Async-2025.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Courses/Async-2025.md b/Courses/Async-2025.md index 4434c9b..acf2a88 100644 --- a/Courses/Async-2025.md +++ b/Courses/Async-2025.md @@ -7,7 +7,7 @@ 🗓️ Для освоения всего материала в таком темпе нужно примерно 1 год. 🏃‍♂️‍➡️ Начинать можно в любое время и двигаться со своей скоростью. 👍 Все материалы остаются навсегда + Вы получите обновления 2 года. -🎫 До 12 июля (включительно) 2025 можно купить курс за $200 через Paypal: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC +🎫 До 12 июля (включительно) можно купить за $200 через Paypal: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC 🎫 Или купить на Payoneer тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 ![PXL_20231227_190319918 MP](https://github.com/metatech-university/Async-2024/assets/4405297/2d0855a7-18d5-45c2-8fa9-d1e873ba1030) @@ -25,7 +25,7 @@ 🔹 Курс начал получать примеры кода на TypeScript, и этого будет становиться больше в новых лекциях, до конца 2025 TypeScript станет вторым языком курса. 🔹 Каждый год курс обновляется, чем больше людей будет на курсе, тем больше будет появляться материалов, практических примеров, заданий, стримов и докладов, больше R&D. -🎫 До 12 июля (включительно) 2025 можно купить курс за $200 через Paypal: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC +🎫 До 12 июля (включительно) можно купить за $200 через Paypal: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC 🎫 Или купить на Payoneer тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 ## Краткое содержание @@ -51,7 +51,7 @@ 🔹 Упор на надежность, поддерживаемость, тестируемость, снижение зацепления 🔹 Примеры и задачи по исправлению скрытых проблемных состояний и data races -🎫 До 12 июля (включительно) 2025 можно купить курс за $200 через Paypal: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC +🎫 До 12 июля (включительно) можно купить за $200 через Paypal: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC 🎫 Или купить на Payoneer тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 ## Содержание @@ -213,7 +213,7 @@ ## Как попасть на курс -🎫 До 12 июля (включительно) 2025 можно купить курс за $200 через Paypal: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC +🎫 До 12 июля (включительно) можно купить за $200 через Paypal: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC 🎫 Или купить на Payoneer тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 🎫 C 12 июля 2025 стоимость будет $250: https://www.paypal.com/ncp/payment/CCEPK9DWYPWM8 From d92b95397a29641e8f567ed3c36799d4985c2bc9 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 9 Jul 2025 13:50:41 -0400 Subject: [PATCH 511/515] Update Async-2025.md --- Courses/Async-2025.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Courses/Async-2025.md b/Courses/Async-2025.md index acf2a88..aa629e7 100644 --- a/Courses/Async-2025.md +++ b/Courses/Async-2025.md @@ -8,13 +8,13 @@ 🏃‍♂️‍➡️ Начинать можно в любое время и двигаться со своей скоростью. 👍 Все материалы остаются навсегда + Вы получите обновления 2 года. 🎫 До 12 июля (включительно) можно купить за $200 через Paypal: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC -🎫 Или купить на Payoneer тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 +🎫 Или купить на Patreon тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 ![PXL_20231227_190319918 MP](https://github.com/metatech-university/Async-2024/assets/4405297/2d0855a7-18d5-45c2-8fa9-d1e873ba1030) Этому курсу уже 15 лет, я обновляю его каждый год и за это время он стал самым крупным и полным сборником знаний про ассинхронное программирование. Интернет полон устаревшими материалами по JavaScript, даже то, как люди писали асинхронный код 5-7 лет назад уже имеет мало общего с современными практиками. В открытом виде есть все материалы, записаные до 2020 года: [открытый курс сообщества Metarhia по асинхронному программированию](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md). Старый курс стал слишком громоздким, но его материалы тоже включены сюда, как дополнительные и исторические, потому, что поддержку легаси никто не отменял. -👉 [Обзор контрактов и абстракций](https://youtu.be/tJTK9dWVkbc) +👉 [Обзор контрактов и абстракций](https://youtube.com/live/dUTXJX37AEE) 👉 [Огляд українською асинхронного програмування](https://youtu.be/isyJISjlpE4) 👉 [Обзор параллельного программирования](https://youtu.be/lxHudbhgfy0) @@ -26,7 +26,7 @@ 🔹 Каждый год курс обновляется, чем больше людей будет на курсе, тем больше будет появляться материалов, практических примеров, заданий, стримов и докладов, больше R&D. 🎫 До 12 июля (включительно) можно купить за $200 через Paypal: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC -🎫 Или купить на Payoneer тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 +🎫 Или купить на Patreon тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 ## Краткое содержание @@ -52,7 +52,7 @@ 🔹 Примеры и задачи по исправлению скрытых проблемных состояний и data races 🎫 До 12 июля (включительно) можно купить за $200 через Paypal: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC -🎫 Или купить на Payoneer тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 +🎫 Или купить на Patreon тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 ## Содержание @@ -214,7 +214,7 @@ ## Как попасть на курс 🎫 До 12 июля (включительно) можно купить за $200 через Paypal: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC -🎫 Или купить на Payoneer тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 +🎫 Или купить на Patreon тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 🎫 C 12 июля 2025 стоимость будет $250: https://www.paypal.com/ncp/payment/CCEPK9DWYPWM8 👉 Новости курса будут в канале: https://t.me/asyncify From 9bfbc64f28fba86fbfb0969e3d4a3c755eef7bea Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 10 Jul 2025 04:03:24 -0400 Subject: [PATCH 512/515] Update Async-2025.md --- Courses/Async-2025.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Courses/Async-2025.md b/Courses/Async-2025.md index aa629e7..49e77b9 100644 --- a/Courses/Async-2025.md +++ b/Courses/Async-2025.md @@ -7,8 +7,8 @@ 🗓️ Для освоения всего материала в таком темпе нужно примерно 1 год. 🏃‍♂️‍➡️ Начинать можно в любое время и двигаться со своей скоростью. 👍 Все материалы остаются навсегда + Вы получите обновления 2 года. -🎫 До 12 июля (включительно) можно купить за $200 через Paypal: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC -🎫 Или купить на Patreon тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 +🎫 До 12 июля (включительно) можно купить за $200 на Patreon: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 +🎫 Или купить через Paypal тоже $200 до 12 июля: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC ![PXL_20231227_190319918 MP](https://github.com/metatech-university/Async-2024/assets/4405297/2d0855a7-18d5-45c2-8fa9-d1e873ba1030) @@ -25,8 +25,8 @@ 🔹 Курс начал получать примеры кода на TypeScript, и этого будет становиться больше в новых лекциях, до конца 2025 TypeScript станет вторым языком курса. 🔹 Каждый год курс обновляется, чем больше людей будет на курсе, тем больше будет появляться материалов, практических примеров, заданий, стримов и докладов, больше R&D. -🎫 До 12 июля (включительно) можно купить за $200 через Paypal: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC -🎫 Или купить на Patreon тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 +🎫 До 12 июля (включительно) можно купить за $200 на Patreon: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 +🎫 Или купить через Paypal тоже $200 до 12 июля: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC ## Краткое содержание @@ -51,8 +51,8 @@ 🔹 Упор на надежность, поддерживаемость, тестируемость, снижение зацепления 🔹 Примеры и задачи по исправлению скрытых проблемных состояний и data races -🎫 До 12 июля (включительно) можно купить за $200 через Paypal: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC -🎫 Или купить на Patreon тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 +🎫 До 12 июля (включительно) можно купить за $200 на Patreon: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 +🎫 Или купить через Paypal тоже $200 до 12 июля: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC ## Содержание @@ -213,9 +213,9 @@ ## Как попасть на курс -🎫 До 12 июля (включительно) можно купить за $200 через Paypal: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC -🎫 Или купить на Patreon тоже $200 до 12 июля: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 -🎫 C 12 июля 2025 стоимость будет $250: https://www.paypal.com/ncp/payment/CCEPK9DWYPWM8 +🎫 До 12 июля (включительно) можно купить за $200 на Patreon: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 +🎫 Или купить через Paypal тоже $200 до 12 июля: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC +🎫 C 12 июля 2025 стоимость будет $250 👉 Новости курса будут в канале: https://t.me/asyncify 👉 Открытая группа курса: https://t.me/asynctalks From 2c021ede512d4e727246dd3c959adf33268f5abf Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 12 Jul 2025 10:19:22 -0400 Subject: [PATCH 513/515] Update Async-2025.md --- Courses/Async-2025.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Courses/Async-2025.md b/Courses/Async-2025.md index 49e77b9..89a8520 100644 --- a/Courses/Async-2025.md +++ b/Courses/Async-2025.md @@ -8,7 +8,8 @@ 🏃‍♂️‍➡️ Начинать можно в любое время и двигаться со своей скоростью. 👍 Все материалы остаются навсегда + Вы получите обновления 2 года. 🎫 До 12 июля (включительно) можно купить за $200 на Patreon: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 -🎫 Или купить через Paypal тоже $200 до 12 июля: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC +🎫 Можно купить через Paypal или Payoneer $200 до 12 июля (включительно): `timur.shemsedinov@gmail.com` + ![PXL_20231227_190319918 MP](https://github.com/metatech-university/Async-2024/assets/4405297/2d0855a7-18d5-45c2-8fa9-d1e873ba1030) @@ -26,7 +27,7 @@ 🔹 Каждый год курс обновляется, чем больше людей будет на курсе, тем больше будет появляться материалов, практических примеров, заданий, стримов и докладов, больше R&D. 🎫 До 12 июля (включительно) можно купить за $200 на Patreon: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 -🎫 Или купить через Paypal тоже $200 до 12 июля: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC +🎫 Можно купить через Paypal или Payoneer $200 до 12 июля (включительно): `timur.shemsedinov@gmail.com` ## Краткое содержание @@ -52,7 +53,7 @@ 🔹 Примеры и задачи по исправлению скрытых проблемных состояний и data races 🎫 До 12 июля (включительно) можно купить за $200 на Patreon: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 -🎫 Или купить через Paypal тоже $200 до 12 июля: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC +🎫 Можно купить через Paypal или Payoneer $200 до 12 июля (включительно): `timur.shemsedinov@gmail.com` ## Содержание @@ -214,7 +215,7 @@ ## Как попасть на курс 🎫 До 12 июля (включительно) можно купить за $200 на Patreon: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 -🎫 Или купить через Paypal тоже $200 до 12 июля: https://www.paypal.com/ncp/payment/Z95CV4VKRHAHC +🎫 Можно купить через Paypal или Payoneer $200 до 12 июля (включительно): `timur.shemsedinov@gmail.com` 🎫 C 12 июля 2025 стоимость будет $250 👉 Новости курса будут в канале: https://t.me/asyncify From ba5ed557a0ebc4962026f82a2547c4d156d7f066 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 13 Jul 2025 09:02:55 -0400 Subject: [PATCH 514/515] Update Async-2025.md --- Courses/Async-2025.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/Courses/Async-2025.md b/Courses/Async-2025.md index 89a8520..82efd20 100644 --- a/Courses/Async-2025.md +++ b/Courses/Async-2025.md @@ -7,9 +7,8 @@ 🗓️ Для освоения всего материала в таком темпе нужно примерно 1 год. 🏃‍♂️‍➡️ Начинать можно в любое время и двигаться со своей скоростью. 👍 Все материалы остаются навсегда + Вы получите обновления 2 года. -🎫 До 12 июля (включительно) можно купить за $200 на Patreon: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 -🎫 Можно купить через Paypal или Payoneer $200 до 12 июля (включительно): `timur.shemsedinov@gmail.com` - +🎫 До 25 июля (включительно) можно купить за $250 на Patreon: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 +🎫 Можно купить через Paypal или Payoneer $250 до 25 июля (включительно): `timur.shemsedinov@gmail.com` ![PXL_20231227_190319918 MP](https://github.com/metatech-university/Async-2024/assets/4405297/2d0855a7-18d5-45c2-8fa9-d1e873ba1030) @@ -26,8 +25,8 @@ 🔹 Курс начал получать примеры кода на TypeScript, и этого будет становиться больше в новых лекциях, до конца 2025 TypeScript станет вторым языком курса. 🔹 Каждый год курс обновляется, чем больше людей будет на курсе, тем больше будет появляться материалов, практических примеров, заданий, стримов и докладов, больше R&D. -🎫 До 12 июля (включительно) можно купить за $200 на Patreon: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 -🎫 Можно купить через Paypal или Payoneer $200 до 12 июля (включительно): `timur.shemsedinov@gmail.com` +🎫 До 25 июля (включительно) можно купить за $250 на Patreon: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 +🎫 Можно купить через Paypal или Payoneer $250 до 25 июля (включительно): `timur.shemsedinov@gmail.com` ## Краткое содержание @@ -52,8 +51,8 @@ 🔹 Упор на надежность, поддерживаемость, тестируемость, снижение зацепления 🔹 Примеры и задачи по исправлению скрытых проблемных состояний и data races -🎫 До 12 июля (включительно) можно купить за $200 на Patreon: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 -🎫 Можно купить через Paypal или Payoneer $200 до 12 июля (включительно): `timur.shemsedinov@gmail.com` +🎫 До 25 июля (включительно) можно купить за $250 на Patreon: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 +🎫 Можно купить через Paypal или Payoneer $250 до 25 июля (включительно): `timur.shemsedinov@gmail.com` ## Содержание @@ -214,9 +213,8 @@ ## Как попасть на курс -🎫 До 12 июля (включительно) можно купить за $200 на Patreon: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 -🎫 Можно купить через Paypal или Payoneer $200 до 12 июля (включительно): `timur.shemsedinov@gmail.com` -🎫 C 12 июля 2025 стоимость будет $250 +🎫 До 25 июля (включительно) можно купить за $250 на Patreon: https://www.patreon.com/tshemsedinov/shop/async-2025-675252 +🎫 Можно купить через Paypal или Payoneer $250 до 25 июля (включительно): `timur.shemsedinov@gmail.com` 👉 Новости курса будут в канале: https://t.me/asyncify 👉 Открытая группа курса: https://t.me/asynctalks From 2841c67fe024af38ca417335f4fe4973c68dbe88 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 18 Jul 2025 16:46:24 -0400 Subject: [PATCH 515/515] Add video links --- Courses/Talks.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 7f11254..1a4851c 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -12,6 +12,9 @@ - [🧩 Паттерны 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) +- [🧩 Паттерны асинхронного и параллельного программирования для JavaScript и TypeScript — Patterns 2025](https://youtube.com/live/dUTXJX37AEE) +- [🧩 IndexedDB — сравнение: три варианта доступа — нативное API, модель + репозиторий + сервис, DSL](https://youtu.be/gYdTQshjOGQ) +- [💡 JavaScript: вдохновленные Rust концепции владения (ownership) и трейтов (trait) в ECMAScript](https://youtu.be/lnUfBHQAxw4) ## 2024 pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy