Asynchronous Programming
2.14K subscribers
35 photos
1 file
99 links
Download Telegram
🔁 Автоматическое преобразование исключений в события — посмотрите код в примере. Да, это работае в #NodeJS еще с версии v12.16.0 и такого очень много в асинхронном программировании и в ноде. При чем все события 'error' придут после завершения цикла for..of, а вот события 'item' будут приходить по ходу цикла. Почему так и как сделать, чтобы они приходили в пордке цикла? Это задания из курса 👉 Async 2024: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md
👍103🔥2
🤯6🤣4👍1🔥1
Что такое семантика кода?

В новом API промисифицированном setInterval возвращает асинхронный итератор, а цикл for await на каждой итерации дает один и тот же объект items. Мы конечно можем использовать shift для того, чтобы модифицировать массив на каждой итерации, но это еще больше запутывает семантику. Идея итерирования сломана.

Другие подобные примеры в курсе Node.js 2024: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2024.md
🔥8👍51
⚠️ Запись на курсы Async 2024 и NodeJS 2024 закрывается 30 апреля. Я хочу реорганизовать формат обучения, и таких длинных годичных курсов я наверно делать не буду больше, максимум 3 месяца для материала. А в формате года - будет интернатура, работа на проекте. Все, кто уже на учатся по плану до конца года. Кто начал позже - не беда, материалы все в записи есть, а практику делать и задавать вопросы - есть созвоны (3 раза в неделю это по двум курсам если должно хватить всем).

👉 Async 2024: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md

👉 NodeJS 2024: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2024.md
🔥14👍6🤣3😭3
Опрос по курсу Async 2024: можно заполнять на любом языке, на котором вам удобнее https://forms.gle/pQrRsQiPV4QBWSgJ9
👍4🤯1
Все время уходил от вопроса, про литературу, которую стоит читать программистам, это потому, что мой список выглядит странно и сложно объяснить, почему не Дядя Боб и не Мартин Фаулер... Они тоже, конечно, полезны, но все же мой список такой:

- Рене Декарт
- Людвиг Витгенштейн
- Ноам Хомский
- Кристофер Александер
- Алан Тьюринг
- Джон фон Нейман
- Норберт Винер
- Виктор Глушков
- Клод Шеннон
- Людвиг фон Берталанфи
- Стаффорд Бир
- Уильям Эшби
- Эдсгер Дейкстра
- Дональд Кнут

Это не так много, и точно более полезно, чем нетфликс и амазон
🔥267👍5🤯4🤣1
👍38🔥196
В курсе по асинхронности начинаются более сложные задания. Например: нужно декомпозировать код согласно принципам SOLID, а имеено Single-Responsibility Principle (SRP) чтобы код не потерял работоспособности, но стал более понятным, каждая функция имела только одну ответственность, и его читаемость и возможность исправления существенно улучшилась:

'use strict';

const API_EXCHANGE = {
host: 'openexchangerates.org',
path: 'api/latest.json?app_id=',
key: '1f43ea96b1e343fe94333dd2b97a109d',
};

const DEFAULT_RETRY = 3;

const getRate = async (currency, retry = DEFAULT_RETRY) => {
console.log({ currency, retry });
const { host, path, key } = API_EXCHANGE;
const url = `https://${host}/${path}${key}`;
const res = await fetch(url).catch(() => ({ ok: false }));
if (!res.ok) {
const attemptsLeft = retry - 1;
if (attemptsLeft > 0) return getRate(currency, retry - 1);
throw new Error('Can not get data');
}
const data = await res.json();
const rate = data.rates[currency];
return rate;
};

const main = async () => {
try {
const rate = await getRate('UAH');
console.log({ rate });
} catch (err) {
console.error({ err });
}
};

main();
🔥17👍103
Patterns for Async & Node.js
Rethinking GRASP, SOLID, and GoF patterns for Frontend & Backend

Опрос для формирования нового курса по переосмыслению принципов GRASP и SOLID, а так же паттернов проектирования (классических GoF и дополнительных), чистой архитектуры и проектирования архитектуры на базе DDD (Domain-driven design) для фронтенд и бекенд инженеров.

10 самых интересных ответов получат мои рекомендации по поднятым темам и ссылки на решения этих проблем из моих открытых и закрытых лекций, семинаров, тренингов, а если нет таких материалов, то я постараюсь ответить лично и привести примеры кода. 👉 https://forms.gle/zE78uTAqKR3GWAoq5
👍196🔥2🤯1
— Вы там все с ума посходили с этим своим EventEmutter, натуральный goto, это же мерзость, как и все в этом вашем Node.js
— Это ты где так от EventEmutter пострадал? Опять CTO заставлял собесы принимать?
— Та не, вчера с Васей пиво пили и он мне насвистел... А правда, что у вас даже стримы на гоуту работают?
🤣15🤯2🎉1💩1
💡 На кого можно подписаться в Github:
1. Маттео Калина https://github.com/mcollina
2. Джеймс Снелл https://github.com/jasnell
3. Ден Абрамов https://github.com/gaearon
4. Анна Хеннингсен https://github.com/addaleax
5. Рик Тротт https://github.com/Trott
6. Илья Климов https://github.com/xanf
7. Андрей Ситник https://github.com/ai
8. Федор Индутный https://github.com/indutny
9. Линус Торвальдс https://github.com/torvalds
10. Дуглас Крокфорд https://github.com/douglascrockford
11. Брендон Эйх https://github.com/BrendanEich
12. Андерс Хейлсберг https://github.com/ahejlsberg

🖼 А тут еще профили контрибьторов, менторов и выпускников Метархии:
1. Алексей Орленко https://github.com/aqrln
2. Дмитрий Нечай https://github.com/nechaido
3. Денис Отришко https://github.com/lundibundi
4. Николай Белочуб https://github.com/belochub
5. Георг Ольденбургер https://github.com/georgolden
6. Владислав Духин https://github.com/primeare
7. Иван Тимошенко https://github.com/ivan-tymoshenko
8. Лидия Иванова https://github.com/lidaamber
9. Алексей Голиков https://github.com/agil
10. Артем Черненький https://github.com/GYFK
11. Андрей Высоцкий https://github.com/Gagnant
12. Сергей Нановский https://github.com/snanovskyi
13. Влад Дзюба https://github.com/DzyubSpirit
14. Роман Огиевич https://github.com/rohiievych
15. Диана Болотенюк https://github.com/mille-nium
16. Дмитрий Михайлов https://github.com/Tariod
17. Илья Федорович https://github.com/Kowalski0805
18. Алина Листунова https://github.com/alinkedd
19. Даниил Гуськов https://github.com/imnetcat
20. Алексей Румянцев https://github.com/o-rumiantsev
21. Виталий Кухар https://github.com/vkukh

И если кто еще не подписан на меня, то вот мой профиль:
👉 Тимур Шемсединов https://github.com/tshemsedinov
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥65