Как стать автором
Обновить
236
0
Timur Shemsedinov @MarcusAurelius

Chief Technology Architect at Metarhia

Отправить сообщение
Во вчерашнем 2м вебинаре (ссылку в статью добавил) я рассказываю, как могут передаваться ссылки между модулями: через глобал, через require (dependency locator), DI, через ивенты могут приходить, через аггрегацию и ассоцияию классов (передача ссылок в конструкторы и примешивание), через vm.createContext и другие способы. Нельзя сказать что какой-то из них плох, а какой-то хорош просто сам по себе, есть разные случаи применения. И важно понимать, не просто, что global = плохо, а почему именно. Потому, что можно те же проблемы и через require и через события даже сделать. Более того, можно через глобал передавать и не сделать проблем… внезапно. Начинать понимать это нужно с GRASP, закона Деметры, и принципа инверсии зависимостей из SOLID. Посмотрите, там интересно.
Это вообще лекция не про промисы, у меня есть отдельно лекции и про ивентлуп и про промисы и про async/await, где я все это рассказываю, о чем вы говорите. Но именно эта лекция о применении контракта Async Iterable и цикле for..await, при чем, про Async Iterable у меня есть еще отдельная лекция: youtu.be/rBGFlWpVpGs я не понимаю, к чему тут setImmediate, а промисы являются только частью контракта Async Iterable. И все эти лекции часть большого курса: habr.com/ru/post/452974 в котором есть и теория и много вот таких конкретных применений.
Почитаю, интересно. Но нода до версии 10.13.0 уже не поддерживается, там за это время сотни дыр найдено и залатано. Я уже не говорю, что там по безопасности с пакетами, которые прибиты гвоздями к 4.x или 6.x. Тут 2 месяца подождать и современные пакеты на npm audit выдают пару экранов проблем. Ну в принципе, я знаю людей, у которых не LTSные версии 5, 7, 9 в продакшене и даже до сих пор 0.12 живет.
Ну вот 21 апреля я покажу стартер кит для ноды размером 15-20кб, и почти без зависимостей (опционально eslint, pg, ws) и умеющий больше, чем стартер киты на 500-800мб зависимостей, которые так распространены в сообществе. Его уже можно посмотреть тут: github.com/HowProgrammingWorks/NodejsStarterKit
Да, почти всегда имеет смысл брать Okject.keys, а лучше Object.getOwnPropertyNames и потом for..of
Я не удивляюсь, а скорее хочу это изменить, вот уже 186 видео лекций тут лежит www.youtube.com/TimurShemsedinov
Ну фанатизм никогда не помогал, но вот понимание разницы между coupling и cohesion, а так же следование принципу information expert и закону Деметры, только улучшает код. Ухудшение скорее происходит после того, что люди GoF выучили и лепят бездумно паттерны, оверинженерят как только могут.
Когда стектрейс работал только для синхронного кода, т.е. в основном мог использоваться в юниттестах, да и то не во всех, а нода же это сплошной I/O, и понять, что происходит по логам со стектрейсами из реальной системы было очень тяжко. А так, люди не все даже понимают, что такое стек трейс и читать их не умеют, все больше озабочены вопросами типа, что лучше экспрес или коа.
Я писал про цикл for await, люди начинают итерироваться по большому массиву, думая, что это же асинхронный цикл и он их спасет, отдавая управление между итерациями, но этого не происходит, нужно массив обернуть, потому, что интерфейс AsyncIterable позволяет отдавать управление, но его реализация на массивах, сетах и мапах не поддерживает этого. Тут отдельная лекция: youtu.be/wYA2cIRYLoA
Но я уверен, что есть компании, у которых грамотно на ноде написано, например, NearForm и Paypal, но даже у Amazon и Google в доках по использованию ноды для FaaS сплошной говнокод.
Они не различают, за фреймворками платформу слабо видно. Ведь разработчики слабо знают платформу, но готовы бесконечно спорить, чей фреймворк лучше, и в общем, нодовское сообщество производит не лучшее впечатление на представителей других технологий.
А про платформу для малограмотных, Вы поговорите с программистами на Java, C#, C++, они все Вам расскажут, что они думают про node.js, да, обидно, но они же и факты приводят. Например, что мидлвары это кривая и косая реализация паттерна Chain of responsibility и если о нем почитать, то оказывается, что куча проблем с порядком исполнения мидлваров можно было бы избежать, если бы разработчики фреймворков читали книги по ООП и архитектуре.
Вы послушали 1 часть? Я же там все объясняю. Люди используют фреймворки и не догадываются о том, что они концептуально остались в самом начале развития ноды. Меня часто зовут сделать аудит и ревью продуктов, так вот я вам скажу, что серьезные продукты не используют и почти ничего из появившегося после 6.x и не задумываются про множество давно известных и решенных проблем. Люди даже не слышали про асинхронные стектрейсы, про worker_threads, про модули vm и v8 в которые проблошено много API из v8, про класс fs.Dir, про await events.once, про то, что for await блокирует ивентлуп и я еще могу на 2 страницы тут перечислять, это просто примеры.
Да, конечно, я отредактирую статью и добавлю в нее не только ссылки на видео, но и слайды, ссылки на примеры кода в starter kit, манифест методологии Metaserverless.
Прекрасное начинание!
Хотелось бы увидеть и прокомментировать подробную программу курса.
Если она еще составляется, то посмотрите мою программу открытых лекций по ноде: habr.com/ru/post/485294
Спасибо! Стараемся, тут задумано много курсов: github.com/HowProgrammingWorks/Index
Да, у меня более 150 лекций, ну и посещение очное их тоже свободное в КПИ
Я кое-куда закинул, кто хочет, возьмет и закинет дальше, я так думаю.

Информация

В рейтинге
Не участвует
Откуда
Киев, Киевская обл., Украина
Дата рождения
Зарегистрирован
Активность