Какие паттерны Вы используете в Node.js и JavaScript?
Anonymous Poll
49%
Adapter
55%
Observer
43%
Strategy
11%
Bridge
57%
Factory
33%
Iterator
9%
Mediator
37%
Proxy
39%
Facade
35%
Builder
🫣 Вас часто спрашивают "Когда будет готов проект?" или "Когда мы завершим разработку?" Я вас полюбил и я вас научу, просто предложите задуматься "Когда ожидается финальная версия браузера Хром?" или "Когда, в конце концов, будет готов Ютюб?". Такие вопросы задают, когда хотят закрыть проект, так что признавайтесь, когда вы это, наконец, сделаете? Неужто наш проект будет разрабатываться вечно? Уже через каких-то 5 лет, ради несчастной формочки на сайте сантехники нам придется поддерживать браузер, ноду, операционку и все зависимости, которые мы скачали с npm. Стоит ли этим заниматься? Что мы вообще делаем?
💯25👍7🤯7
❓ What knowledge is more relevant to improve everyday development practices? (multiple answers)
Anonymous Poll
33%
Contract programming
47%
Async programming
52%
SOLID & GRASP
24%
New node.js API
49%
Design patterns
53%
Clean architecture and DDD
36%
System design
6%
Leetcode
16%
Algorithms
23%
TDD
❤3👍2🤯1
Написал вам тут статью «Самые важные знания для программиста» https://x.com/tshemsedinov/status/1809633457754034433
X (formerly Twitter)
Timur Shemsedinov (@tshemsedinov) on X
Самые важные знания для программиста
👍27🔥4🎉2
🏋️ Задачи по паттерну Adapter для JavaScript, асинхронного программирования и Node.js тут, осторожно, последняя очень сложная, решения пока не публикую, чтобы вы помучались: https://github.com/HowProgrammingWorks/Adapter/tree/master/JavaScript/Tasks
GitHub
Adapter/JavaScript/Tasks at master · HowProgrammingWorks/Adapter
Pattern Adapter Implementations. Contribute to HowProgrammingWorks/Adapter development by creating an account on GitHub.
👍6🤣2🔥1💩1
⚠️ We're encouraging all users to temporarily downgrade to Node.js v22.4.1 due to a bug in v22.5.0
https://github.com/nodejs/node/pull/53934
https://github.com/nodejs/node/pull/53934
GitHub
Fix the bug caused by fast api changes in v22.5.0 and have a post-mortem by anonrig · Pull Request #53934 · nodejs/node
For those who are unfamiliar, a recent change of adding V8 Fast API to fs.closeSync broke almost all applications in v22.5.0. The goal of that PR was to significantly improve the performance of thi...
🤯5⚡3👍1
💥 Шок! Названа возможная дата КОНЦА Node.js, JavaScript и С++, эксперты раскрыли тайну TypeScript ☠️ https://youtu.be/bRlUtzQPOhA
Скандал в твиттере, все, что вы знали про программирование — скоро не будет стоить ничего!!! Когда наш CTO узнал это, то он три раза сбросился с унитаза и съел свою копию "Книжки с кабанчиком". Но я вас полюбил и я вас научу — тут статья «Самые важные знания для программиста» https://x.com/tshemsedinov/status/1809633457754034433
Скандал в твиттере, все, что вы знали про программирование — скоро не будет стоить ничего!!! Когда наш CTO узнал это, то он три раза сбросился с унитаза и съел свою копию "Книжки с кабанчиком". Но я вас полюбил и я вас научу — тут статья «Самые важные знания для программиста» https://x.com/tshemsedinov/status/1809633457754034433
YouTube
💥 Шок! Названа возможная дата КОНЦА Node.js, JavaScript и С++, эксперты раскрыли тайну TypeScript ☠️
Скандал в твиттере, все, что вы знали про программирование — скоро не будет стоить ничего!!! Когда наш CTO узнал это, то он три раза сбросился с унитаза и съел свою копию "Книжки с кабанчиком". Но я вас полюбил и я вас научу — тут статья «Самые важные знания…
😁10👍4❤2💯2👎1🔥1
💡 Начиная с Node.js 22 у нас есть
Для чего оно нужно? Представьте, что у нас есть какое-то callback-returning API или EventEmitter/EventTarget или другие абстракции, поведения которых нужно подождать. И вот нужно сделать адаптер, обертку с внешним Promise-returning интерфейсом.
Пример:
Раньше это могло выглядеть так:
Или так:
Но теперь withResolvers позволяют это написать проще
‣ Значит ли это, что иначе писать уже плохо?
Это достаточно редкая и специфическая штука, ее нужно использовать в библиотеках и коде платформ с надеждой на то, что движки будут это как-то дополнительно оптимизировать, а в продуктовом коде нет на вас вины, если пишете по старинке.
‣ Значит ли это, что оно всем нужно?
Нет, но если знаете, это плюс.
Promise.withResolvers();
Для чего оно нужно? Представьте, что у нас есть какое-то callback-returning API или EventEmitter/EventTarget или другие абстракции, поведения которых нужно подождать. И вот нужно сделать адаптер, обертку с внешним Promise-returning интерфейсом.
Пример:
const sumAsync = (a, b, callback) => {
if (typeof a !== 'number') return;
if (typeof b !== 'number') return;
setImmediate(() => {
callback(a + b);
});
};
Раньше это могло выглядеть так:
let resolve, reject;
const promise = new Promise((resolved, rejected) => {
resolve = resolved;
reject = rejected;
});
setTimeout(reject, 1000, new Error('Timed out'));
sumAsync(2, 3, resolve);
const result = await promise;
console.log({ result });
Или так:
const promise = new Promise((resolve, reject) => {
sumAsync(4, 5, resolve);
setTimeout(reject, 1000, new Error('Timed out'));
});
const result = await promise;
console.log({ result });
Но теперь withResolvers позволяют это написать проще
const { promise, resolve, reject } = Promise.withResolvers();
setTimeout(reject, 1000, new Error('Timed out'));
sumAsync(6, 7, resolve);
const result = await promise;
console.log({ result });
‣ Значит ли это, что иначе писать уже плохо?
Это достаточно редкая и специфическая штука, ее нужно использовать в библиотеках и коде платформ с надеждой на то, что движки будут это как-то дополнительно оптимизировать, а в продуктовом коде нет на вас вины, если пишете по старинке.
‣ Значит ли это, что оно всем нужно?
Нет, но если знаете, это плюс.
👍24🤯3❤1🔥1🫡1