HowProgrammingWorks - JavaScript and Node.js Programming
6.34K subscribers
306 photos
7 videos
1 file
745 links
Программная инжененрия для JavaScript, TypeScrip, Node.js 👉 Group: https://t.me/MetarhiaHPW 👉 Node.js channel: https://t.me/metarhia 👉 Node.js group: https://t.me/nodeua
Download Telegram
В чем преимущество этого фреймворка?
- нет ничего лишнего
- все очень просто
- мы решили все проблемы
- добавлены удобные фишки
- исправлены почти все баги
- заехала новая архитектура папочек
- поддержка TS через удаление типов
- чтобы писать ни нужно знать ничего, ведь это будущее...
Когда внук начал программировать на TypeScript, дедушка переписал на суслика свою квартиру
Скоро в метархии будет новый Emitter оптимизированый для V8, на него переедут протокод metacom, сервер приложений impress, и т.д. но вообще его полезно даже просто почитать: https://github.com/metarhia/metautil/blob/ee/lib/events.js

const ee = new Emitter();
ee.on('eventA', (data) => {
console.log({ data });
// Prints: { data: 'value' }
});
ee.emit('eventA', 'value');


const ee = new Emitter();
setTimeout(() => {
ee.emit('eventA', 'value');
}, 100);
const result = await ee.toPromise('eventA');


const ee = new Emitter();
passReferenceSomewhere(ee);
const iterable = ee.toAsyncIterable('eventB');
for await (const eventData of iterable) {
console.log({ eventData });
}
🧩 Практический мастер-класс Паттерны в JavaScript и TypeScript
Начало: в эту субботу 2025-03-22 в 15:00 (Киевское время)

👳 Тимур Шемсединов
🥷 Илья Климов
🧔‍♂️ Дмитрий Нечай

Изучение Патернов помогает:
Писать более понятный код, который просто читать
Эффективно оптимизировать JavaScript и TypeScript
Быстрее и качественнее решать задачи
Проектировать системы, которые просто изменять

🤖 Регистрация через Телеграмм-бот: https://patterns-js.com/0jiuic?traffic_mark=krzdaj
HowProgrammingWorks - JavaScript and Node.js Programming
🧩 Практический мастер-класс Паттерны в JavaScript и TypeScript Начало: в эту субботу 2025-03-22 в 15:00 (Киевское время) 👳 Тимур Шемсединов 🥷 Илья Климов 🧔‍♂️ Дмитрий Нечай Изучение Патернов помогает: Писать более понятный код, который просто читать…
У кого не выходит выбрать язык на лендинге курса, можете сделать это в консоли, при помощи паттернов, самое базовое решение тут, но вы не останавливайтесь:

class Maybe {
  constructor(value) {
    this.value = value;
  }

  static of(value) {
    return new Maybe(value);
  }

  map(fn) {
    return this.value ? Maybe.of(fn(this.value)) : this;
  }

  getValue(defaultValue) {
    return this.value || defaultValue;
  }
}

class SelectCommand {
  constructor(selector, value) {
    this.selector = selector;
    this.value = value;
  }

  execute() {
    return Maybe.of(document.querySelector(this.selector))
      .map(el => (el.value = this.value, el))
      .map(el => el.dispatchEvent(new Event('change', { bubbles: true })))
      .getValue(null);
  }
}

const lang = 'RU'; // or UKR

new SelectCommand('.form-select-arrow', lang).execute();
В четверг 20 марта в 19:00 будет созвон сообщества Метархия, с выпускниками предыдущих наборов по паттернам, ноде и асинхронному программированию. Мы будем стримить его. Можно задать вопросы заранее и мы на них ответим. https://forms.gle/dDZTfR4P6AJFyHfB7
Please open Telegram to view this post
VIEW IN TELEGRAM
Мастер-класс "Паттерны в JavaScript и TypeScript"

Начало: сегодня, 22 марта в 15:00 (Киевское время)

👳 Тимур Шемсединов
🥷 Илья Климов
🧔‍♂️ Дмитрий Нечай

Регистрация через Телеграмм-бот: https://patterns-js.com/tpk6nh?traffic_mark=7k8x47&utm_source=organic&utm_medium=telegram2metarhia&utm_campaign=web
💡 Обновлен индекс открытого каталога паттернов
- теперь там есть описание 1-2 строки, которые напомнит вам суть паттерна
- добавлены паттерны не из GoF, но распространены в JavaScript и TypeScript
- появилось больше ссылок на примеры
https://github.com/tshemsedinov/Patterns-JavaScript/tree/ru
🧩 This and much more will be covered in Patterns 2025 course

const getTomorrowDate = () => {
const timeout = 86400000;
return new Promise((resolve) => {
setTimeout(() => resolve(new Date()), timeout)
});
};


// ⚡️ Electricity over IP, as defined in RFC 3251: https://datatracker.ietf.org/doc/html/rfc3251
const socket = new WebSocket('wss://lamp.local:3251');

socket.onopen = () => {
socket.send(JSON.stringify({ voltage: 230, frequency: 50 }));
};

socket.onmessage = (e) => {
const { voltage, frequency } = JSON.parse(e.data);
console.log(`⚡️ Transferred: ${voltage}V @ ${frequency}Hz`);
};


const Coin = (v) => ({ map: (f) => Coin(f(v)) });
const flip = () => crypto.getRandomValues(new Uint8Array(1))[0];
Coin(flip()).map((r) => (r & 1 ? '🪙' : '💩')).map(console.log);


const findMeaningOfLife = () => {
const offset = 0;
const delay = Infinity;
return new Promise((resolve) => {
setTimeout(() => resolve(42 + offset), delay);
});
};


['🥚', '🥚',  '🐓', '🥚', '🥚', '🥚'].toSorted()


class Coming {
constructor() {
return new Promise((resolve) =>
setTimeout(() => {
resolve(this);
}, DAY_OF_JUDGMENT - Date.now())
);
}
}

const secondComing = await new Coming();


((<F extends () => void>(Function: F = {} as F) => Function())());


class Future {
constructor() {
const { name: key } = this.constructor;
const value = void [].length;
throw new Error(`${key} is ${value}`);
}
}

new Future();
🧩 Завтра, 5 апреля, 15:00 — 18:00 будет стрим, на котором мы разберем патерны:
Actor — Инкапсулирует состояние и поведение, взаимодействуя асинхронно через передачу и последовательную обработку сообщений в очереди. Обеспечивает потокобезопасность и асинхронную безопасность при параллельном выполнении путём изоляции состояния актора.
Reactor (event-loop) — Обрабатывает параллельные события синхронно, помещая их в очередь и направляя зарегистрированным обработчикам. Реализует событийно-ориентированную асинхронную обработку поверх синхронного цикла событий. Часто применяется в системах с интенсивным I/O, упрощая управление конкурентными событиями.
Proactor — Цикл событий, в котором операции начинаются пользовательским кодом, но завершаются внешним агентом (например, I/O подсистемой), который запускает обработчик завершения по завершении операции (возвращая данные в callback).
И будет презентация курса Patterns 2025
👉 Сохраните себе ссылку на каталог паттернов с примерами кода: https://github.com/tshemsedinov/Patterns-JavaScript/tree/ru
👉 Подпишитесь на канал, чтобы не пропустить этот и следующие стримы: https://www.youtube.com/@TimurShemsedinov
∙ Готовлю также стрим по доступу к данным с обсуждением паттернов: Active Record, DAO, DTO, DAL, Repository, ORM, Query Builder, Transaction Script, Template Method