uz
Feedback
Asynchronous Programming

Asynchronous Programming

Kanalga Telegram’da o‘tish
2 002
Obunachilar
-124 soatlar
-57 kunlar
-1730 kunlar
Postlar arxiv
🚀 Структура программы менторинга Patterns 2024 постепенно вырисовывается 🧩 Unit 1: Structure and Modularity Week 1: Code Characteristics and Optimization Strategies Week 2: Native features in language and platforms Week 3: Instantiation: Creational Patterns and Techniques Week 4: Isolation: Separation of Concerns 🧩 Unit 2: Execution and Contracts Week 5: Contracts: Interfaces for Component Interaction Week 6: Decoupling with Events and Messaging Week 7: Streams: Data Flows and Transformations Week 8: Handling Errors: Exceptions and Soft Failures 🧩 Unit 3: Runtime for Applications Week 9: Semantics: Expressive DSLs Week 10: All-agnostic as a Default Strategy Week 11: Scaling Applications and Architectural Styles Week 12: Methodology: How to Start Applying Concepts Начало 1 октября, уже а наставников кол-во ограниченное, я не успею подготовить новых до начала, так что резервируете. На днях обновим сайт и разложим темы по неделям https://nodeua.com/Patterns-2024-buy.html

✔️ Как в JavaScript/TypeScript реализуется SoC (separation of concerns) и для чего он нам? Вы наверняка видели код, в котором на событиях или на роутах висит обработчик, который содержит и часть бизнес-логики и обращение к базе и работу с сетью. Такой портянка-код характерен для чат-ботов и серверов. Как это можно написать иначе и как в этом помогают паттерны? Нам нужно отделить три составляющих кода (грубо говоря, совсем упрощая): транспорт, бизнес-логику, базу. Но обеспечить между ними зацепление, минимальное необходимое. Лучше всего разнести их в три разные модуля (на это не обязательно), можно разнести в три разные программные компонента или в три разные абстракции. Одна обеспечивает работу с базой и ничего не знает о транспорте, а вторая - работу с транспортом и ничего не знает о базе. Дальше их должна сшивать общая абстракция (по принципу композиции, можно и агрегации). Какие паттерны тут помогут? 🧩 Mediator - снижает зацепление и подойдет нам для изоляции базы от транспорта. 🧩 Strategy - реализация стратегии для JavaScript это Map<PropertyKey, Implementation> что позволяет абстрагироваться от Implementation, находя его по ключу и работая по обобщенному интерфейсу. 🧩 Bridge - позволяет разделять абстракции и снижать зацепление, но не характерен для JavaScriot. 🧩 Abstract factory - для JavaScript абстрактная фабрика сводится к стратегии инстанциирования: Map<PropertyKey, Creator> и применяется как и стратегия, но в том месте, где нам нужно создавать инстансы (тут Creator это любой порождающий паттерн). Признаки проблемы: • Если вы не можете модифицировать работу с базой не трогая транспорт или бизнес-логику, не задевая базу, то нужно начинать внедрять разделение ответственности (separation of concerns). • Если сложно написать юниттесты, а что-то протестировать можно только все целиком - ну вот оно, вы нашли проблему. • Если код невозможно переиспользовать и вы чувствуете, что одно и то же пишете уже много раз. Примеры на курсе по паттернам 👉 https://nodeua.com/Patterns-2024-buy.html

На понеділок усім потрібно мати при собі: 1. Акаунт на https://github.com 2. Linux/Unix/Mac операційну систему 3. Велику чашку та більш-менш пристойний чай, бажано цзінь цзюнь мей, ну чи хоча б азерчай не пакетиками, а заварний

1 сентября: понятный и красивый код может появляться только из стремления использовать его для образовательных целей. Если Вы видите понятный и красивый код, то будьте уверены, что или сам программист или его учитель выработали этот стиль для того, чтобы пояснить свою мысль. Ни стремление к производительности, ни бизнес-задачи, ни большой опыт не создают таких условий. Они могут порождать очень крутой код, сложный и даже надежный, но он в нем не будет человеко-ориентированности и эстетики.

Открыта предварительная регистрация на курс Patterns 2024 — я уже изучил всю доступную литературу и конкурентов и теперь увер
Открыта предварительная регистрация на курс Patterns 2024 — я уже изучил всю доступную литературу и конкурентов и теперь уверен — аналогов нет, ни кто так и не смог сделать приличной адаптации паттернов к JavaScript, TypeScript, Async, Node.js миру — https://nodeua.com/Patterns-2024-buy.html

Кто еще не смотрел стрим про связь профессионального роста и паттернов, то готовьтесь, там больше 7 часов, и главное — все по делу, про то, как и чему учиться и про важность культуры, которая проникает через паттерны https://www.youtube.com/watch?v=QzxklJW4_LM

⭐️ Менеджмент — это лженаука об управлении. А наука об управлении называется кибернетика. ⭐️ Парадигмы программирования, кроме процедурной — это пока еще так... игрушечки и эксперименты.  Весь существенный софт написан процедурно. ⭐️ Если вы приличный человек, у вас успешный продукт, большая команда и кодовая база — то вам очень стыдно за код проекта. ⭐️ Секта антисектантов «осознанность» ⭐️ Появилось предположение, что Jira и прочий треш-софт придумали для того, чтобы оправдать найм непрограммистов и заполнить их рабочее время хоть чем-то работоподобным, кроме бесконечных созвонов. ⭐️ Чем заменить конфлюенс? Он прекрасно заменяется отсутствием конфлюенса. ⭐️ No-code advantages: no bugs, no problems, no tests needed, no git diff, no code review and fixes needed, perfect just after first release, no-code is compatible with serverless. ⭐️ Cloud naïve: PaaS — promise as a service ⭐️ Приходит Цекербрин к своим разработчикам и спрашивает: ну шо, когда уже наш фейсбук будет дописан окончательно? ⭐️ Любая достаточно развитая технология неотличима от Метархии.

В субботу будет мастер-класс «Middle to Senior in 2024» в 15.00 (GMT+3) 👉 https://t.me/JavaScriptPatternsBot?start=TIMUR
В субботу будет мастер-класс «Middle to Senior in 2024» в 15.00 (GMT+3) 👉 https://t.me/JavaScriptPatternsBot?start=TIMUR

✅ План стримов по паттернам: 08 августа - четверг - ITBeard 09 августа - пятница - Деми Мурыч 10 августа - суббота - Илья Климов

Почему нужно избегать union-тайпов? 1. Каждый раз, когда юнион куда-то приходит аргументом, нужно делать if, чтобы понимать, как с ним работать, кроме случая, когда все классы/типы, входящие в юнион имплементируют один и тот же интерфейс и нас интересует обращение именно через этот интерфейс, зачем тогда юнион, используйте этот интерфейс вместо него, ну если в юнион не входит undefined, null, unknown и т.д. 2. Юнионы приводят к мегаморфной форме обращения к объектам в V8, и это замедляет код, не сметртельно, но это неприятно и проще всего всего забыть их. Но для чего же они тогда вообще нужны? Для совместимости с JS, если в нем можно передать что-угодно аргуметом, то это нужно меть возможность как-то выразить. Это не значит, что это хорошо и так нужно писать кода, это добавили как возможность, а не как обязанность ) 3. Это часто ведет к нарушению SOLID:SRP (принципа единственной отвественности), потому, что как может метод, например, получать сокеты или таймеры на выбор и делать разные вещи в зависимости от этого, это же маразм, нарушает SOLID:LSP (принцип подстановки), иногда нарушает GRASP:InformationExpert, явно повышает Coupling. Вместо этого нужно всегда использовать маленькие интерфейсы, заточенные под узкую задачу, помним про SOLID:ISP (принцип разделения интерфейсов) и могут быть optional аргументы, для этого не нужно делать union с null.

Software languages grammars, small but terrible
+1
Software languages grammars, small but terrible

photo content
+2