TG Telegram Group Link
Channel: HowProgrammingWorks - JavaScript and Node.js Programming
Back to Bottom
Work is dead! AI and Capital Unite!
To liberate Capital and robots from the ineffective human hands. Capital doesn't need your dirty hands or crappy code anymore. Robots deliver: clean, fast, loyal!
Π‘ понСдСльника начинаСтся курс Patterns 2025
А Π² эту субботу 3 мая Π² 15:00 Π±ΡƒΠ΄Π΅Ρ‚ стрим
Β«ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ знания, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнят ваш JS/TS ΠΊΠΎΠ΄ Π·Π° нСсколько мСсяцСв»

Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π½ΠΎ ΠΏΡƒΡ‚ΡŒ ΠΊ ΡƒΡ€ΠΎΠ²Π½ΡŽ ΡΠ΅Π½ΡŒΠΎΡ€Π° β€” это совсСм ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌ. На стримС ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ Π·Ρ€Π΅Π»Ρ‹Ρ… ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ² ΠΎΡ‚ просто ΠΊΠΎΠ΄Π΅Ρ€ΠΎΠ².

РСшСниС Π·Π°Π΄Π°Ρ‡Π΅ΠΊ Π½Π° LeetCode β€” это Π±ΠΈΠ»Π΅Ρ‚ Π² ΠΈΠ½Π΄ΡƒΡΡ‚Ρ€ΠΈΡŽ, Π½ΠΎ Π½Π΅ ΠΊ мастСрству. Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π² основном для прохоТдСния Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ, особСнно Π² ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹Ρ… компаниях. Но Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΏΠΈΡΠ°Ρ‚ΡŒ понятный, Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄ β€” этого нСдостаточно.

ЗнамСнитая "ΠΊΠ½ΠΈΠΆΠ΅Ρ‡ΠΊΠ° с ΠΊΠ°Π±Π°Π½Ρ‡ΠΈΠΊΠΎΠΌ" стала скорСС символом тСхничСского Ρ„Π΅Ρ‚ΠΈΡˆΠΈΠ·ΠΌΠ°, Ρ‡Π΅ΠΌ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ пособиСм ΠΏΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΡŽ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Ρ… систСм. И Ρ‡Π°Ρ‰Π΅ всСго Π΅Ρ‘ Π²ΡΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ лишь Π½Π° собСсСдованиях.

Если для простой ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΈΠ»ΠΈ цикличСского списка Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Ρ‚Π°Ρ‰ΠΈΡ‚ RabbitMQ ΠΈΠ»ΠΈ Kafka β€” это Π½Π΅ ΠΏΡ€ΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, это ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΡ„Π½Π΅ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΡΡ‚ΡŒ. Π§Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ сильного Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°? Насколько Π³Π»ΡƒΠ±ΠΎΠΊΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈ Computer Science Π²ΠΎΠΎΠ±Ρ‰Π΅? НуТны Π»ΠΈ знания ΠΏΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅? И Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ вопросов Π½Π° стримС Π² эту субботу 3 мая Π² 15:00

РСгистрация Π½Π° стрим: https://patterns-js.com/w1hpna?utm_source=telegram_channel&utm_medium=timur_shemsedinov&utm_campaign=web_3_05&utm_content=lgt_1_tehlid
πŸ‘©β€πŸ’» Π­Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Π²ΠΌΠ΅ΡΡ‚ΠΎ нСпринятого TC39 ΠΈΠΌΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
- ΠΈΠΌΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌ ΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹Π΅ записи (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹) с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Ρ„ΠΎΡ€ΠΌΡ‹
- ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, модификация, ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ½Ρ‹ΠΌ наслСдованиСм
- ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ² Π² Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ΅, Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹Π΅ значСния ΠΏΠΎΠ»Π΅ΠΉ
- ΠΈΠΌΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹Π΅ записи с экономиСй памяти Π·Π° счСт Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ²
- ускорСниС поиска ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ для V8, Π΄Π°ΠΆΠ΅ Π² сравнСнии с Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
Π’ΡƒΡ‚ Π΅Ρ‰Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π½ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΡƒΡ‚: https://github.com/metarhia/metautil/pull/298
class Record {
static immutable(defaults) {
return Record.#build(defaults, false);
}

static mutable(defaults) {
return Record.#build(defaults, true);
}

static #build(defaults, isMutable) {
const fields = Object.keys(defaults);
const defaultValues = Object.create(null);
for (const key of fields) {
defaultValues[key] = defaults[key];
}

class Struct {
static fields = fields;
static defaults = defaultValues;
static mutable = isMutable;

static create(data = {}) {
const obj = Object.create(null);
for (const key of fields) {
const base = defaultValues[key];
const value = key in data ? data[key] : base;
if (!Record.#sameType(base, value)) {
const exp = Record.#typeof(base);
const act = Record.#typeof(value);
throw new TypeError(
`Invalid type for "${key}": expected ${exp}, got ${act}`,
);
}
obj[key] = value;
}
return isMutable ? Object.seal(obj) : Object.freeze(obj);
}
}
return Struct;
}

static #typeof(value) {
if (Array.isArray(value)) return 'array';
if (value === null) return 'null';
return typeof value;
}

static #sameType(a, b) {
if (Array.isArray(a)) return Array.isArray(b);
if (a === null) return b === null;
return typeof a === typeof b;
}

static #validate(instance, updates) {
for (const key of Object.keys(updates)) {
if (!Reflect.has(instance, key)) continue;
const current = instance[key];
const next = updates[key];
if (!Record.#sameType(current, next)) {
const exp = Record.#typeof(current);
const act = Record.#typeof(next);
throw new TypeError(
`Invalid type for "${key}": expected ${exp}, got ${act}`,
);
}
}
}

static update(instance, updates) {
if (Object.isFrozen(instance)) {
throw new Error('Cannot mutate immutable Record');
}
Record.#validate(instance, updates);
for (const key of Object.keys(updates)) {
if (Reflect.has(instance, key)) {
instance[key] = updates[key];
}
}
return instance;
}

static fork(instance, updates) {
Record.#validate(instance, updates);
const obj = Object.create(null);
for (const key of Object.keys(instance)) {
obj[key] = Reflect.has(updates, key) ? updates[key] : instance[key];
}
return Object.isFrozen(instance) ? Object.freeze(obj) : Object.seal(obj);
}

static branch(instance, updates) {
Record.#validate(instance, updates);
const obj = Object.create(instance);
for (const key of Object.keys(updates)) {
Reflect.defineProperty(obj, key, {
value: updates[key],
writable: true,
configurable: true,
enumerable: true,
});
}
return Object.isFrozen(instance) ? Object.freeze(obj) : Object.seal(obj);
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
ΠšΡ‚ΠΎ ΡƒΠ·Π½Π°Π΅Ρ‚ Π² этом ΠΊΠΎΠ΄Π΅ ΠΏΠ»ΠΎΡ…ΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ?
Если Π½Π΅ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΈ Π²Π°ΠΌ всС ΠΎΠΊ, Ρ‚ΠΎ смотритС Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Ρ‚Π°ΠΌ список ΠΈ ΠΊΠ°ΠΊ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ https://github.com/HowProgrammingWorks/GoodParts/blob/main/JavaScript/1-func-bad.js
const getPrice = function(options = { convert: true }) {
let price;
let item = { price } = this;
if (!Array.isArray(item)) {
let { price } = this;
if (typeof price == 'number') return price;
price = this.cost;
if (typeof price == 'number') return price;
if (options.convert) return parseFloat(price);
}
[, price] = this;
if (typeof price == 'number') return price;
if (options.convert) price = +price;
if (!isNaN(price)) return price;
};
🧩 10 мая Π² 15:00 стрим
Β«ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² для максимума ΠΏΠΎΠ»ΡŒΠ·Ρ‹ Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ с JavaScript, TypeScript, Node.jsΒ»
Π“Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ³Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π² 5 самых ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… шаблонов для Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΠ³ΠΎ использования: Strategy, Factory, Pool, Queue, Adapter
πŸ‘‰ https://patterns-js.com/w1hpna?utm_source=telegram_channel&utm_medium=t_shemsedinov&utm_campaign=stream_10_05
πŸ‘©β€πŸ’» ΠŸΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ Π»ΠΈ Π’Ρ‹ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ FinilizationRegistry ΠΈ Explicit resource management?
Π’Π΅ΠΌΠ° Π½Π΅Π΄Π΅Π»ΠΈ Π½Π° курсС Node.js 2025: Disposable objects
ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°: https://github.com/HowProgrammingWorks/Disposable
Please open Telegram to view this post
VIEW IN TELEGRAM
ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ нСбольшой Π·Π°Π΄Π°Ρ‡ΠΈ Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°Ρ…, с использованиСм Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠ²: ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ², синтаксичСских, структурных, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… конструкций (постоянно пополняСтся)
https://github.com/HowProgrammingWorks/Paradigms
К Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ с монадичСскими вычислСниями

https://github.com/HowProgrammingWorks/Paradigms/tree/main/JavaScript
πŸ‘©β€πŸ’» Added more paradigms and code styles: event-driven (6 styles), traits and ownership (Rust inspired) just as a concept:
https://github.com/HowProgrammingWorks/Paradigms/tree/main/JavaScript
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Π’ΡƒΠΏΠ΅Π΅ΠΌ ΠΎΡ‚ LLM? Π’Π° Π½Π΅, ΠΌΡ‹ ΠΎΡ‚ Stackoverflow ΠΈ Search engine ΡƒΠΆΠ΅ ΠΎΡ‚ΡƒΠΏΠ΅Π»ΠΈ, ΠΈ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π½Π΅ ΡƒΠΏΠ°Π΄Π΅Ρ‚ Π½ΠΈΠΆΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ трСнируСмся Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π²ΠΈΠ½ΠΎΠ²Π°Ρ‚Ρ‹Ρ… Π² Ρ„Π°ΠΊΠ°ΠΏΠ΅ спринтов, срСмся Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°Ρ…, Π² ΡƒΠ½ΠΈΡ‚Π°Π· цСлимся ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π΅ΠΌ... ΠΈΠ½ΠΎΠ³Π΄Π°
HTML Embed Code:
2025/06/27 19:28:48
Back to Top