ru
Feedback

Не попадитесь на канал ботавода! Telemetrio находит и помечает такие каналы 👉 Хотите видеть метку — оформите подписку

HowProgrammingWorks - JavaScript and Node.js Programming

HowProgrammingWorks - JavaScript and Node.js Programming

Открыть в Telegram

Программная инжененрия для JavaScript, TypeScrip, Node.js 👉 Group: https://t.me/How_Programming_Works 👉 Node.js channel: https://t.me/metarhia 👉 Node.js group: https://t.me/nodeua

Больше
6 572
Подписчики
-224 часа
-57 дней
+6030 дней
Архив постов
Табличку по асинхронности перевел в электронный вид и скоро опубликую новое оглавление курса по асинхронности. Готовлю в откр
Табличку по асинхронности перевел в электронный вид и скоро опубликую новое оглавление курса по асинхронности. Готовлю в открытом виде большой тест для самостоятельного оценивания знаний по ноде, асинхронности, парадигмам, архитектуре, и т.д. там уже более 500 микроскилов учтено.

Табличку по асинхронности перевел в электронный вид и скоро опубликую новое оглавление курса по асинхронности. Готовлю в откр
Табличку по асинхронности перевел в электронный вид и скоро опубликую новое оглавление курса по асинхронности. Готовлю в открытом виде большой тест для самостоятельного оценивания знаний по ноде, асинхронности, парадигмам, архитектуре, и т.д. там уже более 500 микросеилов учтено.

Обновленный роадмап
Обновленный роадмап

💫 JavaScript 2024 українською для початківців 🧑‍💻 Майже 8 годин 💫 https://youtu.be/FlXsGI7rzWE

Для того, чтобы писать прикладной код хватит первого столбика, второй полезен, как дополнительные знания, а для бекенда на но
Для того, чтобы писать прикладной код хватит первого столбика, второй полезен, как дополнительные знания, а для бекенда на ноде он обязателен, третий столбик содержит системные вещи, которые нужны для разработки инструментов, платформ и библиотек, четвертый столбик - дополнительные абстракции, которые вы можете добавить по выбору к своим знаниям, особенно, если работаете в специфических проектах, где много функционального и реактивного программирования, пятый столбик - вещи, которые морально устарели и могут рассматриваться как интересный антиквариат

Дополненная карта абстракций асинхронного программирования https://t.me/asyncify
Дополненная карта абстракций асинхронного программирования https://t.me/asyncify

🎫 Напоминаю, что завтра (28 декабря) последний день записи на курсы Node.js 2024 и Async 2024 по текущим ценам. А сегодня уже первый созвон по курсу Async 2024, это пока знакомство и ответы на вопросы, ещё не семинар, но лекционные материалы и задачи будут уже в новом году. https://www.patreon.com/tshemsedinov

Чем я доволен в себе - ставим галочку, чем недоволен - пропускаем. Если непонятно - читаем пост - https://t.me/metarhia/1550
Anonymous voting

🌕 Опыт: нарабатывается самостоятельно и передается благодаря встроенному в процесс работы обобщению практики в виде докладов, статей, семинаров, митопов, проводимых регулярно в коллективе инженеров. 🌖 Экспертиза: достигается благодаря постоянному самостоятельному обучению, освоению новых технологий и знаний, исследовательской сущности инженерных практик, чтению исходных кодов коллег и тех библиотек и платформы, на которой пишете. 🌗 Доверие: между инженерами и между техническими специалистами и бизнесом, всей командой проекта, достигается благодаря глубокому пониманию сфер экспертизы друг друга, нужно вникать в специфику коллег даже при разделении труда. 🌘 Учёт всех интересов: заказчика, пользователя, клиента в целом и доверие к заказчику достигается благодаря заинтересованному наблюдению за их работой и искреннему желанию помочь им при помощи автоматизации процессов и высвобождению их времени, которое они смогут потратить лучше на свою профессиональную деятельность, чем на рутину, благодаря вашей работе. 🌑 Недопустимость безразличия: к мелочам, к деталям, и тонкое чувствование нюансов, достигается благодаря пониманию того, что мелочи могут быть определяющими, и любой самый лучший софт может быть не принят из-за самой малой детали. 🌒 Доброжелательное отношение к слабым местам других нарабатывается благодаря наставничеству. Когда помогаешь младшим коллегам становиться инженерами, то относишься к ним лучше, ты ведь передаешь им часть себя и ответственен в известной мере за то, какими они будут, а потом это распространяется и на остальных коллег. 🌓 Критическое отношение к своим слабым местам достигается благодаря практике взгляда на себя со стороны, отсоединения от результатов труда. Сначала можно брать свои старые проекты, к ним проще относиться критически, а потом вы сможете делать это и с кодом, написанным вчера. 🌔 Нет разделения между теорией и практикой, между работой и жизнью, между обучением и продакшен-реди проектами, между гуманитариям и инженерами, между новичком и экспертом, оставьте любой бреин-сплит и будьте целостными, без черного и белого, все имеет постепенные переходы и может причудливо сочетаться, реальность тотальна.

⭐️ Кроме всего я тут рассказываю, как рисую такие классные схемы. 🧠 Воображение для ИТ специалистов: откуда брать идеи и как развивать не предвзятый подход, выходить за рамки шаблонного мышления, находить новые решения и объяснять их коллегам https://youtu.be/pWMNBYsvBkI

Карта абстракций асинхронного программирования в JavaScript и Node.js https://github.com/HowProgrammingWorks/Index/blob/maste
Карта абстракций асинхронного программирования в JavaScript и Node.js https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md

⚡️ Новая серия с асинхронной коллекций Collector: - Теперь поддерживаетя отмена асинхронных операций через AbortController - Вместо setTimeout теперь AbortSignal.timeout - И AbortSignal.any для объединения двух сигналов Основная идея: спрятать сложность асинхронного программирования в абстракцию, имеющую простой контракт, чтобы эта сложность не смешивалась со сложностью прикладного кода. Можно сравнить код с коллектором и без него:
const dc = collect(['key1', 'key2', 'key3', 'key4'], { timeout: 1000 });
const opt = { signal: dc.signal };

dc.take('key1', fs.readFile, 'README.md', opt);
dc.wait('key2', fs.promises.readFile, 'README.md', opt);
const url = 'http://worldtimeapi.org/api/timezone/Europe';
dc.wait('key3', (await fetch(url, opt)).json());
setTimeout(() => dc.set('key4', 'value4'), 50);

try {
  const result = await dc;
  console.log(result);
} catch (err) {
  console.log(err);
}
И теперь без него:
const controller = new AbortController();
const opt = { signal: controller.signal };

const timeout = new Promise((resolve, reject) => {
  setTimeout(() => {
    controller.abort();
    reject(new Error('Timed out'));
  }, 1000);
});

const promise1 = new Promise((resolve, reject) => {
  fs.readFile('README.md', opt, (err, data) => {
    if (err) return void reject(err);
    resolve(data);
  });
});

const promise2 = fs.promises.readFile('README.md', opt);
const url = 'http://worldtimeapi.org/api/timezone/Europe';

const promise3 = (await fetch(url)).json();

const promise4 = new Promise((resolve) => {
  const timer = setTimeout(() => {
    resolve('value4');
  }, 50);
  controller.signal.addEventListener('abort', () => {
    clearTimeout(timer);
  });
});

const data = Promise.allSettled([promise1, promise2, promise3, promise4]);
try {
  const keys = await Promise.race([data, timeout]);
  const [key1, key2, key3, key4] = keys.map(({ value }) => value);
  const result = { key1, key2, key3, key4 };
  console.log(result);
} catch (err) {
  console.log(err);
}
Исходники тут: https://github.com/metarhia/metautil

🎫 Внимание! 28 декабря последний день записи на курсы Node.js 2024 и на Async 2024 по текущим ценам. Сейчас Async: $100, Node.js: $200 + локальные налоги. А вместе $250 + налоги. С 29 декабря будет Async: $125, Node.js: $250 + локальные налоги. А вместе $350 + налоги. https://www.patreon.com/tshemsedinov

Вот новый пример. Тут таймаут через Promise.race, а сбор данных через Promise.allSettled. Это страшно запутывает код, если ка
Вот новый пример. Тут таймаут через Promise.race, а сбор данных через Promise.allSettled. Это страшно запутывает код, если качественно делать, то вообще и таймеры нужно снимать. А асинхронная коллекция похожа на Map, но с контрактом Thenable, позволяющим использовать ее с await. Collector скрывает сложность асинхронного программирования за абстракцией высокого уровня и приводит к ясному и надежному коду предметной области. https://github.com/metarhia/metautil