HowProgrammingWorks - JavaScript and Node.js Programming
6.24K subscribers
256 photos
5 videos
1 file
659 links
Программная инженерия и JavaScript сообщества Метархия.

Ссылки на митапы, группы и каналы сообщества https://github.com/HowProgrammingWorks/Index/blob/master/Links.md
Download Telegram
Табличку по асинхронности перевел в электронный вид и скоро опубликую новое оглавление курса по асинхронности. Готовлю в открытом виде большой тест для самостоятельного оценивания знаний по ноде, асинхронности, парадигмам, архитектуре, и т.д. там уже более 500 микроскилов учтено.
Всех с праздниками! По месячной подписке на Патреоне теперь будут публиковаться отдельные лекции из курсов по node.js, асинхронному программированию или по обоим вместе, без практики, т.е. без созвонов, без заданий, без ревью кода, без ответов на вопросы, но со ссылками на исходники, т.е. на самостоятельное освоение. https://www.patreon.com/tshemsedinov
Готовлю большой тест для самостоятельной проверки знаний с автоматическим анализом результатов. Опубликую тут скоро. Какие роли разработчиков интересны?
Anonymous Poll
56%
API and Domain logic
27%
Real-Time, gamedev, messaging
13%
IoT and Embedded systems
66%
Web and Frontend
31%
Enterprise applications
29%
Fintech, banking, crypto
25%
E-commerce, shopping, retail
25%
Platform/system development
24%
Data processing and analysis
16%
Chat-bots
💫 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/SelfAssessment
🔁 Примеры кода для курса по асинхронному программированию уже обновлены, слайды нарезаны. Сам радуюсь, как удается упростить и сделать их понятными и короткими. Записываю материал https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md
🐢🚀 Когда-то я предложил идеальную систему типов для JavaScript: NaN (not a number), NaF (not a function), NaO (not an object), NaS (not a string), NaA (not an array)... А они вместо этого убрали поддержку моего любимого сообщения об ошибке «Function is not a function». Вот такой код class Bug extends null {}; new Bug(); выдавал «Function is not a function» в ноде до 7.x, но это, конечно, проблема не ноды, а V8, современная V8 дает: «Super constructor null of Bug is not a constructor»
Join to start Diia core review: https://t.me/+f6d5MCe-euthOTFi


    static isHttpCode(code: number | undefined): boolean {
        if (typeof code !== 'number') {
            return false
        }

        if (code >= 100 && code < 600) {
            return true
        }

        return false
    }
🔁 Добавлены еще несколько тем в задачник по асинхронному программированию курса 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
🔁 Второй блок материалов курса 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
Почему читаемость и простота кода стратегически важна для программных систем?

💡 Казалось бы, оптимизация не критична, работает же, и ладно. По потреблению ресурсов это так, ну ест в 10 раз больше памяти и процессора, это часто не критично. Сложно читаемый код связывает ресурсы разработчиков и проект очень быстро увязает в долгих изменениях. Переписать сложно, а добавлять новые возможности выходит все медленнее. В какой-то момент все это схлопывается и код отправляется на свалку.

Семантическая оптимизация, направленная на понятность, упрощение, читаемость, скорость изменений, гибкость кода, оказываются на порядок важнее потребления ресурсов.

👉 Но какие техники программирования к этому ведут? Подробнее будет скоро видео на моем ютюбе: https://youtube.com/@TimurShemsedinov
🔵 Metarhia / Sphere — концепция и техничесткое задание на цифровую платформу в открытом коде https://youtu.be/iAJ7dbdNrXk

⭐️ Кто смотрел мои лекции или проходил курс по ноде, джаваскрипту или асинхронному программированию, и хотел бы набрать практического опыта разработки, проекты в открытом коде - это лучший вариант, можно контрибьютить в Ноду, Метархию, но это системный код. А практику и прикладного и системного кода можно набрать в нашем новом проекте Sphere. Что это, я описал на английском вот тут оригинал концепции, и тут же я пишу ТЗ каждый день понемногу: https://github.com/metarhia/Sphere

👉 Заходите в канал https://t.me/MetarhiaChiefs и группу https://t.me/metaserverless где мы будем организовывать разработку этой платформы
🚀 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
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