Forwarded from Timur Shemsedinov
Усі інфоормаційні системи, що зберігають наші дані, повинні бути в руках кожної людини окремо, з повним контролем над своїми даними, а не в руках держави чи в рукаж компаній, і вже з нашими розподіленими системами вони будуть писати свої інтеграційні сервіси, і ми будемо вирішувати, коли і до чого давати доступ і мати журнал цього дроступу.
🔁 Добавлены еще несколько тем в задачник по асинхронному программированию курса Async 2024. По теоретическому материалу готово 50% лекций, новые материалы мы будем проходить уже летом. А до этого будет много практики. 7 тем из
👉 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
🔁 Второй блок материалов курса 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
А вот перевод фрагмента:
Разработка любой корпоративной или государственной информационной системы начинается с создания ее общей архитектуры, выбора технологий, планирования подсистем модулей. Этот сложный и дорогостоящий процесс обычно требует 1–3 месяцев (в зависимости от масштаба проекта) первоначальных усилий команды для подготовки: логирования, драйверов баз данных, системы генерации отчетов, планировщика отложенных задач, очередей и доставки почты, уведомлений клиентских приложений, автоматизации резервного копирования, развертывания, тестирования, инфраструктуры мониторинга, инструментов валидации данных, кэширования, балансировки, безопасности и т. д. Необходимо множество подсистем и модулей, ни один из которых не имеет прямого отношения к предметной области. Этот задел, предполагающий подбор зависимостей (библиотек) и технологий, апробацию, адаптацию и интеграцию компонентов, часто становится балластом для проекта. Разработчики обычно создают свои собственные решения системного уровня (не связанные с предметной областью) для решения этих задач, увеличивая стоимость владения информационной системой. Все собственные библиотеки общего назначения требуют обслуживания и обновлений до конца срока службы информационной системы, что неоправданно увеличивает затраты на разработку. И наоборот, использование внешних зависимостей несет в себе риски (их создатели часто не гарантируют поддержку или не имеют долгосрочных планов развития). Более того, интеграция этих зависимостей в единое решение требует значительных усилий.
👉 Заходите в канал https://t.me/MetarhiaChiefs и группу https://t.me/metaserverless где мы будем организовывать разработке этой платформы
Please open Telegram to view this post
VIEW IN TELEGRAM
❓ Почему читаемость и простота кода стратегически важна для программных систем?
💡 Казалось бы, оптимизация не критична, работает же, и ладно. По потреблению ресурсов это так, ну ест в 10 раз больше памяти и процессора, это часто не критично. Сложно читаемый код связывает ресурсы разработчиков и проект очень быстро увязает в долгих изменениях. Переписать сложно, а добавлять новые возможности выходит все медленнее. В какой-то момент все это схлопывается и код отправляется на свалку.
✅ Семантическая оптимизация, направленная на понятность, упрощение, читаемость, скорость изменений, гибкость кода, оказываются на порядок важнее потребления ресурсов.
👉 Но какие техники программирования к этому ведут? Подробнее будет скоро видео тут: https://youtube.com/@TimurShemsedinov
💡 Казалось бы, оптимизация не критична, работает же, и ладно. По потреблению ресурсов это так, ну ест в 10 раз больше памяти и процессора, это часто не критично. Сложно читаемый код связывает ресурсы разработчиков и проект очень быстро увязает в долгих изменениях. Переписать сложно, а добавлять новые возможности выходит все медленнее. В какой-то момент все это схлопывается и код отправляется на свалку.
✅ Семантическая оптимизация, направленная на понятность, упрощение, читаемость, скорость изменений, гибкость кода, оказываются на порядок важнее потребления ресурсов.
👉 Но какие техники программирования к этому ведут? Подробнее будет скоро видео тут: https://youtube.com/@TimurShemsedinov
🚀 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
🔁 Автоматическое преобразование исключений в события — посмотрите код в примере. Да, это работае в #NodeJS еще с версии v12.16.0 и такого очень много в асинхронном программировании и в ноде. При чем все события 'error' придут после завершения цикла for..of, а вот события 'item' будут приходить по ходу цикла. Почему так и как сделать, чтобы они приходили в пордке цикла? Это задания из курса 👉 Async 2024: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md
Forwarded from Asynchronous Programming
❓ Знаете ли вы, чем отличается new EventEmitter.on от events.on? Что они возвращают? Отметьте правильные варианты
Anonymous Poll
9%
new EventEmitter.on: undefined
23%
new EventEmitter.on: EventEmitter
15%
new EventEmitter.on: Event
9%
new EventEmitter.on: EventTarget
14%
events.on: undefined
15%
events.on: Promise
11%
events.on: AsyncIterable
9%
events.on: AsyncIterator
38%
Смотрел доку, отвечать теперь не честно
Что такое семантика кода?
В новом 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
Запись на курс NodeJS 2024 закрывается 30 апреля, потом формат будет другой, и таких длинных годичных обучений я наверно делать не буду больше: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2024.md
GitHub
Index/Courses/NodeJS-2024.md at master · HowProgrammingWorks/Index
Metarhia educational program index 📖. Contribute to HowProgrammingWorks/Index development by creating an account on GitHub.
Понимаете зазницу между
То, что они одинаково называются, сбивает многих с толку, тут задача, направленная на выявление разницы: https://github.com/HowProgrammingWorks/Events/blob/main/JavaScript/Tasks/5-once.js
events.once
и EventEmitter.prototype.once
?То, что они одинаково называются, сбивает многих с толку, тут задача, направленная на выявление разницы: https://github.com/HowProgrammingWorks/Events/blob/main/JavaScript/Tasks/5-once.js
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
If you don't use Worker class in Node.js, you're not a real capitalist: https://youtu.be/x3cxNaGeFLY
YouTube
Node.js Worker class - Rich Trott
Original talk: https://youtu.be/wT4lg9oiMvI
В связи с днём воркеров - сегодня еще можно взять курсы
👉 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