Telegram Web Link
🧩 Пока я готовлю курс по паттернам GoF, SOLID, GRASP с адаптацией для Node.js и JavaScript, собрал тут ссылки на все старые материалы, видео, примеры кода, задачи, если по ссылке github репозиторий, то часто там и примеры и видео: https://github.com/tshemsedinov/Patterns-JavaScript
👍20🔥32
🔁 Почему я выкладываю задачи, а рядом решения?
Так мы развиваем силу воли и другие софтскилы на курсах Async 2024 и Node.js 2024.

По многим темам я часть задач выкладываю и в свободный доступ без решений, чтобы не только лишь софтскилы развивались: https://github.com/HowProgrammingWorks/Adapter/tree/master/JavaScript/Tasks
👍9🤣7🔥1
Відповідь підписнику LinkedIn: У інших мовах та платформах культура та традиції якось тримають людей, і хоч скрізь є багато проблем, але ми бачимо позитивний тренд навіть у PHP, а от у JavaScript та Node.js світі все кудись так швидко летить, і такий потік нових людей, що якось погано розповсюджуються і не затримуються знання, погано впроваджуються практики професійної розробки, а це найперспективніший напрямок, і у ньому ще все ускладнене тим, що JS не може старі і погані можливості відключати, складність збільшується, нові фічі все швидше приходять, а старі не зникають, тому цей стек став унікальним, у ньому один з найнижчих порогів входу, але найвищій поріг компетенції. Щоб бути експертом в умовному golang, чи python потрібно не так багато, а у JS світі стільки усього, що навіть одній людині це важко одночасно тримати у полі своєї уваги. Це трохи нагадує C++, який теж занадто ускладнився і не може скинути старе..., але JavaScript світ має навіть більше сегментів та застосувань, різних ніш та субкультур, фреймворків та підходів, у яких людина просто тоне, якщо не вміє обмежити та дозувати потік інфи у своєму професійному становленні, обирати пріоритети та орієнтується на певних лідерів думок, не намагатися знати все, а окреслити, що достатньо для роботи, самостійно складати з цих пазлів несуперечливе світосприйняття, і адаптувати його безперервно.
👍392👎2🔥1💯1
Программирование, как и любая человеческая деятельность насквозь мифологично, более того, мы решительно ни о чем не можем поговорить, чтобы не опереться на тот или иной миф, то у нас Node.js однопоточный (хоть никогда не был), то мы говорим о нетипизированном языке программирования (хоть таких не бывает), то переменные иммутабельные (хоть это оксюморон), то микросервисы ускоряют ответ (хоть могут только замедлять), и даже, если мы понимаем неточность терминов, и пытаемся говорить точнее, то рассказ растягивается на бесконечность, потому, что все нужно уточнять, а уточнения тоже уточнять, и к каждому факту в уточнениях можно придраться и оспорить. Так что, быстро общаться можно, но только понимая друг друга между строк. Выйти за рамки мифа можно, но только создавая новый миф. Ошибки исправить можно, но только делая новые и новые ошибки. Да и учиться сразу правильно не выйдет, мы осваиваем частично ложные знания еще и плохо осваиваем, сталкиваемся с опытом и благодаря ошибкам, можем делать следующий шаг.
👍22💯41😁1
🖼️ Node.js --experimental-strip-types
👉 See issue for details: https://github.com/nodejs/node/pull/53725
👉 Technical Steering Committee meeting recording: https://www.youtube.com/live/BN7OrlNtQvo
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14🤯3🍾1
🖼️ SQLite Added in: v22.5.0 https://nodejs.org/api/sqlite.html
Stability: 1.1 - Active development
const { DatabaseSync } = require('node:sqlite');
const database = new DatabaseSync(':memory:');
database.exec(`
CREATE TABLE data(
key INTEGER PRIMARY KEY,
value TEXT
) STRICT
`);
const insert = database.prepare('INSERT INTO data (key, value) VALUES (?, ?)');
insert.run(1, 'hello');
insert.run(2, 'world');
const query = database.prepare('SELECT * FROM data ORDER BY key');
console.log(query.all());
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉38👍16🔥83
This media is not supported in your browser
VIEW IN TELEGRAM
Из курса «Patterns GRASP, SOLID, GoF for JavaScript, TypeScript, Node.js and async programming»
👉 Вышла вторая часть лекции - смотрите у меня на Ютюбе, там же есть и первая часть, которая вышла месяц назад. https://www.youtube.com/@TimurShemsedinov
👍8🫡2🤯1
«Always bet on JavaScript» // Brendan Eich
😁663👍3👎21🤣1
Почему нужно избегать union-тайпов?

1. Каждый раз, когда юнион куда-то приходит аргументом, нужно делать if, чтобы понимать, как с ним работать, кроме случая, когда все классы/типы, входящие в юнион имплементируют один и тот же интерфейс и нас интересует обращение именно через этот интерфейс, зачем тогда юнион, используйте этот интерфейс вместо него, ну если в юнион не входит undefined, null, unknown и т.д.

2. Юнионы приводят к мегаморфной форме обращения к объектам в V8, и это замедляет код, не сметртельно, но это неприятно и проще всего всего забыть их. Но для чего же они тогда вообще нужны? Для совместимости с JS, если в нем можно передать что-угодно аргуметом, то это нужно меть возможность как-то выразить. Это не значит, что это хорошо и так нужно писать кода, это добавили как возможность, а не как обязанность )

3. Это часто ведет к нарушению SOLID:SRP (принципа единственной отвественности), потому, что как может метод, например, получать сокеты или таймеры на выбор и делать разные вещи в зависимости от этого, это же маразм, нарушает SOLID:LSP (принцип подстановки), иногда нарушает GRASP:InformationExpert, явно повышает Coupling.

Вместо этого нужно всегда использовать маленькие интерфейсы, заточенные под узкую задачу, помним про SOLID:ISP (принцип разделения интерфейсов) и могут быть optional аргументы, для этого не нужно делать union с null.
👍14🔥7🤯1😢1💯1
🙊 The Law of Demeter (LoD): Don’t talk to strangers

If you see something like this:
👉 connection.parent.service.storage.db.saveRecord
👉 this.action.scenario.bot.telegram.sendMessage
👉 service.find('logger').kind('error').stream.write

You have technical debt! It's time to plan refactoring.
Each entity (unit/instance) should have only limited knowledge about others (only "closely" related to the current one).
Each entity should only talk to its friends (immediate friends): don’t talk to strangers!

Вut don't do it in a panic and do not mix refactoring with other issues (like new features implementation).
Just note that and plan resource allocation.
👍114💯4
План стримов по паттернам:
08 августа - четверг - ITBeard
09 августа - пятница - Деми Мурыч
10 августа - суббота - Илья Климов
🔥51🍾3🤯2👍1👎1🫡1
Кто ещё не смотрел, серия стримов по паттернам GoF, SOLID, GRASP:
👉 С Лешей ITBeard
👉 С Деми Мурычем
👉 С Ильей Климовым
👍16🔥4🫡2
🧩 Master class Middle to Senior in 2024
Rethinking GRASP, SOLID, and GoF patterns for Frontend & Backend

Начало: August 17th at 15:00
👉 Сюда: https://www.tg-me.com/JavaScriptPatternsBot?start=TIMUR
👍6🫡2💯1
В субботу будет мастер-класс «Middle to Senior in 2024» в 15.00 (GMT+3) 👉 https://www.tg-me.com/JavaScriptPatternsBot?start=TIMUR
👍8🔥3🫡32
2025/10/02 21:10:32
Back to Top
HTML Embed Code: