Для того, чтобы писать прикладной код хватит первого столбика, второй полезен, как дополнительные знания, а для бекенда на ноде он обязателен, третий столбик содержит системные вещи, которые нужны для разработки инструментов, платформ и библиотек, четвертый столбик - дополнительные абстракции, которые вы можете добавить по выбору к своим знаниям, особенно, если работаете в специфических проектах, где много функционального и реактивного программирования, пятый столбик - вещи, которые морально устарели и могут рассматриваться как интересный антиквариат
Кто чувствует, что js нужно подтянуть - сделал очень простой открытый курс https://youtu.be/HetL0ETbN6Y
YouTube
💫 JavaScript 2024 для начинающих 🧑💻
00:00:00 Введение
00:13:19 Идентификаторы: переменные и константы
00:37:05 Запись значений и типы данных
00:45:28 Функции и блоки, область видимости, контексты
01:05:48 Условия и ветвление
01:17:46 Циклы: for, for..of и for..in
01:33:40 Циклы: while и do..while…
00:13:19 Идентификаторы: переменные и константы
00:37:05 Запись значений и типы данных
00:45:28 Функции и блоки, область видимости, контексты
01:05:48 Условия и ветвление
01:17:46 Циклы: for, for..of и for..in
01:33:40 Циклы: while и do..while…
💫 JavaScript 2024 українською для початківців 🧑💻 Майже 8 годин 💫 https://youtu.be/FlXsGI7rzWE
YouTube
💫 JavaScript 2024 українською для початківців 🧑💻
00:00:00 Ідентифікатори, змінні та константи
01:01:29 Літарали, значення та типи даних
01:21:03 Функції, блоки та область видимості змінних
01:54:12 Умови та розгалудження, оператор if
02:11:43 Цикли for, for..of, for..in
02:31:23 Цикли while, do..while
02:47:03…
01:01:29 Літарали, значення та типи даних
01:21:03 Функції, блоки та область видимості змінних
01:54:12 Умови та розгалудження, оператор if
02:11:43 Цикли for, for..of, for..in
02:31:23 Цикли while, do..while
02:47:03…
Forwarded from HowProgrammingWorks - JavaScript and Node.js Programming
💫
Self Assessment v 1.0
может использоваться, как автоматизированный инструмент для учета, треккинга и анализа микроскилов инженера, для личного удобства и для добавления в cv или профиль в github, linkedin и т.д. После заполнения система генерирует кнопку в html и md со ссылкой на вашу копию репозитория. Инструмент ускоряет проведение собеседований и сертификации как для претендента, так и для интервьюера: можно проверять только часть ключевых знаний, а не весь их объем, а после этого подписать коммит с результатами личным GPG ключем. Если периодически проходить оценивание, или делать это до начала обучения и после него, и хранить ветки или теги с результатами инвенторизации микроскилов по состоянию на определенный момент времени, то очень удобно сравнивать прогресс, который вы сделали за период обучения, чтения книги, работы на проекте и т.д. Сейчас оценивание имеет более 700 микроскилов и будет постоянно расширяться по всем направлениям, языкам и технологиям (например Proxy, Promise, Future, SRP, DI, Boxing, Cohesion, Tail call recursion...) с автоматическим сревнением их с ролями (например Node.js API developer, Node.js gamedev, Frontend react...) робот генерирует отчет через Github Actions CI с рекомендациями, что нужно подтянуть. Скоро появятся новые роли и области знаний, после чего Вы сможете обновить свой репозиторий из исходного для получения нового отчета. https://github.com/HowProgrammingWorks/SelfAssessmentGitHub
GitHub - HowProgrammingWorks/SelfAssessment: Software engineering self assessment
Software engineering self assessment. Contribute to HowProgrammingWorks/SelfAssessment development by creating an account on GitHub.
Обновлена программа курса по асинхронному программированию https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md
Forwarded from Metarhia/NodeUA - Node.js Ukraine Community
🔁 Первые 3 задания из курса по асинхронному программированию
1. Task: rewrite function to return result into sync callback:
👉 Программа курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md
1. Task: rewrite function to return result into sync callback:
// Change signature to: (items, callback(result))2. Task: return an error for items with negative price. Hint: use callback-last-error-first contract:
const total = (items) => {
let result = 0;
for (const item of items) {
result += item.price;
}
return result;
};
const electronics = [
{ name: 'Laptop', price: 1500 },
{ name: 'Keyboard', price: 100 },
{ name: 'HDMI cable', price: 10 },
];
// Use new signature total(electronics, (money) => ...)
const money = total(electronics);
console.log({ money });
const total = (items, callback) => {3. Task: rewrite total function to be async with JavaScript timers. Use setInterval and clearInterval to check next item each 1 second. Calculations will be executed asynchronously because of timers. Run total twice (as in example below) but in parallel. Print debug output for each calculation step (each second).
let result = 0;
for (const item of items) {
result += item.price;
}
callback(result);
};
const electronics = [
{ name: 'Laptop', price: -1500 },
{ name: 'Keyboard', price: 100 },
{ name: 'HDMI cable', price: 10 },
];
total(electronics, (money) => {
console.log({ money });
});
// Hint: example output:
// { item: { name: 'Laptop', price: 1500 } }
// { item: { name: 'Laptop', price: 1500 } }
// { item: { name: 'Keyboard', price: 100 } }
// { item: { name: 'Keyboard', price: 100 } }
// { item: { name: 'HDMI cable', price: 10 } }
// { item: { name: 'HDMI cable', price: 10 } }
// { money: 1610 }
// { money: 1610 }
const total = (items, callback) => {
let result = 0;
for (const item of items) {
console.log({ item });
if (item.price < 0) {
callback(new Error('Negative price is not allowed'));
return;
}
result += item.price;
}
callback(null, result);
};
const electronics = [
{ name: 'Laptop', price: 1500 },
{ name: 'Keyboard', price: 100 },
{ name: 'HDMI cable', price: 10 },
];
total(electronics, (error, money) => {
if (error) console.error({ error });
else console.log({ money });
});
total(electronics, (error, money) => {
if (error) console.error({ error });
else console.log({ money });
});
👉 Программа курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md
🔁 Задачи по асинхронному программированию:
👉 1. Callbacks
👉 2. Thenable
👉 3. Promises
👉 4. Async/await
👉 5. Events
👉 1. Callbacks
👉 2. Thenable
👉 3. Promises
👉 4. Async/await
👉 5. Events
🔁 Второй блок материалов курса Async 2024 будет включать абстракции:
⭐️ AsyncQueue - асинхронная очередь, которая может заменить для микроуровня механизмы внешних MQ систем, значительно повышая общую производительность и упрощая архитектуру.
⭐️ AsyncPool - асинхронный пул (обстракция для переиспользования объектов, сетевых соединений и конекшенов к базам данных, других разделаемых или ограниченных ресурсов)
⭐️ AsyncCollector - асинхронная коллекция для сбора данных из разных мест и общим местом сборки с поддержкой разных контрактов: callback, thenable, event, async/await
⭐️ Async Generator, Async Iterator - часть стандарта JavaScript для итерирования заранее неизвестных коллекций, потоков данных, курсоров баз данных, криптографии, других потоковых преобразований
⭐️ Locks API, Semaphore, Mutex - абстракции блокировок для избежания конфликтов доступа к данным и разделяемым ресурсам
⭐️ Chain of responsibility - паттерн цепочка ответственности как замена антипаттерна middleware - позволяет создавать надежный роутинг запросов на эндпоинты и многое другое
👉 Полное огравление курса тут: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md
⭐️ AsyncQueue - асинхронная очередь, которая может заменить для микроуровня механизмы внешних MQ систем, значительно повышая общую производительность и упрощая архитектуру.
⭐️ AsyncPool - асинхронный пул (обстракция для переиспользования объектов, сетевых соединений и конекшенов к базам данных, других разделаемых или ограниченных ресурсов)
⭐️ AsyncCollector - асинхронная коллекция для сбора данных из разных мест и общим местом сборки с поддержкой разных контрактов: callback, thenable, event, async/await
⭐️ Async Generator, Async Iterator - часть стандарта JavaScript для итерирования заранее неизвестных коллекций, потоков данных, курсоров баз данных, криптографии, других потоковых преобразований
⭐️ Locks API, Semaphore, Mutex - абстракции блокировок для избежания конфликтов доступа к данным и разделяемым ресурсам
⭐️ Chain of responsibility - паттерн цепочка ответственности как замена антипаттерна middleware - позволяет создавать надежный роутинг запросов на эндпоинты и многое другое
👉 Полное огравление курса тут: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md
🔁 Задачник по асинхронному программированию курса Async 2024 уже содержит все основные контракты. По теоретическому материалу готово 50% лекций, новые материалы мы будем проходить уже летом. А до этого будет много практики.
👉 1. Callbacks
👉 2. Thenable
👉 3. Promises
👉 4. Async/await
👉 5. Events
👉 6. Signals
👉 7. Timers
🚀 На очереди задачи по темам: обработка ошибок, стримы, антипаттерны и рефакторинг асинхронщины, тестирование асинхронного кода.
👉 Полное огравление курса тут: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md
👉 1. Callbacks
👉 2. Thenable
👉 3. Promises
👉 4. Async/await
👉 5. Events
👉 6. Signals
👉 7. Timers
🚀 На очереди задачи по темам: обработка ошибок, стримы, антипаттерны и рефакторинг асинхронщины, тестирование асинхронного кода.
👉 Полное огравление курса тут: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md
🚀 Architecture 2024
This is a small part of a new course I'm working on🖼 Metarhia Architectural Principles:
* Isolation with IoC (Inversion of Control) and DI (Dependency Injection)
* Metaprogramming (dynamic metamodel interpretation)
* Platform-agnostic domain codebase
* Layered architecture (no system code in applications)
* Multiparadigm programming and semantic code
* Wide use of DSL (Domain-Specific Languages)
* Contract programming (defined with schemas)
* Modularity with auto-binding (no dependency locators in domain code)
👉 News will be here: https://t.me/MetarhiaChiefs
This is a small part of a new course I'm working on
* Isolation with IoC (Inversion of Control) and DI (Dependency Injection)
* Metaprogramming (dynamic metamodel interpretation)
* Platform-agnostic domain codebase
* Layered architecture (no system code in applications)
* Multiparadigm programming and semantic code
* Wide use of DSL (Domain-Specific Languages)
* Contract programming (defined with schemas)
* Modularity with auto-binding (no dependency locators in domain code)
👉 News will be here: https://t.me/MetarhiaChiefs
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Metarhia/NodeUA - Node.js Ukraine Community
🔁 Автоматическое преобразование исключений в события — посмотрите код в примере. Да, это работае в #NodeJS еще с версии v12.16.0 и такого очень много в асинхронном программировании и в ноде. При чем все события 'error' придут после завершения цикла for..of, а вот события 'item' будут приходить по ходу цикла. Почему так и как сделать, чтобы они приходили в пордке цикла? Это задания из курса 👉 Async 2024: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md
❓ Знаете ли вы, чем отличается new EventEmitter.on от events.on? Что они возвращают? Отметьте правильные варианты
Anonymous Poll
9%
new EventEmitter.on: undefined
23%
new EventEmitter.on: EventEmitter
14%
new EventEmitter.on: Event
9%
new EventEmitter.on: EventTarget
15%
events.on: undefined
14%
events.on: Promise
10%
events.on: AsyncIterable
10%
events.on: AsyncIterator
38%
Смотрел доку, отвечать теперь не честно
Forwarded from Metarhia/NodeUA - Node.js Ukraine Community
Что такое семантика кода?
В новом API промисифицированном setInterval возвращает асинхронный итератор, а цикл for await на каждой итерации дает один и тот же объект items. Мы конечно можем использовать shift для того, чтобы модифицировать массив на каждой итерации, но это еще больше запутывает семантику. Идея итерирования сломана.
Другие подобные примеры в курсе Node.js 2024: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2024.md
В новом API промисифицированном setInterval возвращает асинхронный итератор, а цикл for await на каждой итерации дает один и тот же объект items. Мы конечно можем использовать shift для того, чтобы модифицировать массив на каждой итерации, но это еще больше запутывает семантику. Идея итерирования сломана.
Другие подобные примеры в курсе Node.js 2024: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2024.md
Forwarded from HowProgrammingWorks - JavaScript and Node.js Programming
⚠️ Запись на курсы Async 2024 и NodeJS 2024 закрывается 30 апреля. Я хочу реорганизовать формат обучения, и таких длинных годичных курсов я наверно делать не буду больше, максимум 3 месяца для материала. А в формате года - будет интернатура, работа на проекте. Все, кто уже на учатся по плану до конца года. Кто начал позже - не беда, материалы все в записи есть, а практику делать и задавать вопросы - есть созвоны (3 раза в неделю это по двум курсам если должно хватить всем).
👉 Async 2024: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md
👉 NodeJS 2024: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2024.md
👉 Async 2024: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md
👉 NodeJS 2024: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2024.md
Опрос по курсу Async 2024: можно заполнять на любом языке, на котором вам удобнее https://forms.gle/pQrRsQiPV4QBWSgJ9
Google Docs
Async 2024
Training plan: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md
Forwarded from HowProgrammingWorks - JavaScript and Node.js Programming
Все время уходил от вопроса, про литературу, которую стоит читать программистам, это потому, что мой список выглядит странно и сложно объяснить, почему не Дядя Боб и не Мартин Фаулер... Они тоже, конечно, полезны, но все же мой список такой:
- Рене Декарт
- Людвиг Витгенштейн
- Ноам Хомский
- Кристофер Александер
- Алан Тьюринг
- Джон фон Нейман
- Норберт Винер
- Виктор Глушков
- Клод Шеннон
- Людвиг фон Берталанфи
- Стаффорд Бир
- Уильям Эшби
- Эдсгер Дейкстра
- Дональд Кнут
Это не так много, и точно более полезно, чем нетфликс и амазон
- Рене Декарт
- Людвиг Витгенштейн
- Ноам Хомский
- Кристофер Александер
- Алан Тьюринг
- Джон фон Нейман
- Норберт Винер
- Виктор Глушков
- Клод Шеннон
- Людвиг фон Берталанфи
- Стаффорд Бир
- Уильям Эшби
- Эдсгер Дейкстра
- Дональд Кнут
Это не так много, и точно более полезно, чем нетфликс и амазон