3 195
Subscribers
No data24 hours
-47 days
-230 days
Posts Archive
3 195
Какие вопросы задать, чтобы проверить понимание Promise/async/await?
#list
Сегодня поделюсь подборкой моих вопросов для интервью по Promise/async/await. Естественно без ответов, иначе как мне потом их на собеседованиях спрашивать.
1. Какие методы нативного класса Promise вы знаете?
2. Напишите Promise, который создаст микротаск.
3. Напишите Promise, который создаст макротаск.
4. Приведите пример, когда вам было необходимо использовать Promise.allSettled()
5. Что такое Promise executor и почему он должен быть синхронным?
6. Расскажите, что плохо с вот таким кодом:
new Promise((resolve, reject) => getSomething((err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
}));
7. Что произойдет если мы сделаем await дважды? Пример кода:
let counter = 0;
const increment = new Promise(resolve => {
counter++;
resolve();
});
await increment;
await increment;
console.log(counter); // 1? 2? something else?
8. Какое ваше мнение по твиту James M Snell:
Ok, opinions needed: An existing API that returns a Promise currently throws certain errors synchronously. It's changed to return rejected promises (e.g. changing
foo() { throw new Error(); return Promise.resolve() } to async foo() { throw new Error(); return Promise.resolve() }
9. Как отслеживать в #nodejs коде Promise, которые имеют множественный resolve/reject? В каких случаях это указывает на неправильное поведение кода?
10. Каким образом вы работаете с встроенными #nodejs функциями в async/await стиле, которые callback интерфейс?3 195
15 Factor App
#devops
Я часто рассказываю об 12 факторах. Это манифест как делать веб приложения правильно (масштабируемо, переносимо и т.д.). Прелесть этих факторов, что они универсальны:
– работают для любой архитектуры – монолит или микросервисы
– любого языка
– любого облака
Ребята из IBM расширили манифест до 15 факторов. Новые факторы:
– API First, т.е. сначала делаем контракт нового API, а только потом его реализовываем.
– Telemetry. Логи из 12 факторов это поток событий, а телеметрия это time series метрики.
– Authentication and authorization. Снова напоминаем себе и команде об важности безопасности.
3 195
Как TC39 предложения внедряются в TypeScript?
#typescript
В Node.js v16 появились новые фичи. Одна из них Array.at. К сожалению, использовать ее в TypeScript проектах еще нельзя.
TC39 выделяет такие stages для предложений:
🤷🏻 Stage 0: Strawperson.
💡 Stage 1: Proposal.
✍🏻 Stage 2: Draft.
📝 Stage 3: Candidate.
✅ Stage 4: Finished.
Подробней тут.
Так вот TypeScript внедряет фичи только на стадии Stage 3. Это не быстрый процесс, так как необходимо не только добавить описание в базовые d.ts файлы, но и сделать транспайлинг в ECMAScript версии не поддерживающий данную фичу. По-сути сделать функционал аналогичный babel плагинам.
К сожалению, Array.at перенесли из релиза 4.5 в 4.6.
⚠️Транспайлинг в старые версии идет только для синтаксических конструкций, как пример sync/await. Для новых методов в старых версиях ECMAScript необходимо подключать полифилы (смотри ts-polyfill или core-js). Спасибо Илье за вопросы в комментариях.
Рецепты по теме:
– Обзор Node.js v16: Новые JavaScript конструкции
3 195
Что такое WICG?
WICG расшифровывается Web Incubator Community Group. WICG является часть W3 и там делают предложения по расширению браузерного функционала. Не стоит путать с TC39, которые занимаются предложениями по расширению спецификации ECMAScript.
Примеры предложений, за которыми я слежу:
– File System Access, для доступа к локальной файловой системы из браузера
– Get Installed Related Apps, для понимание установлено ли приложение
Что дает WICG для разных типов разработчиков:
– Для FE, очевидно, знание и адаптация нового функционала.
– Для BE консистентности API в браузере и #nodejs. Пример по scheduling apis и timer promises.
– Для архитекторов и тех.лидов определение правильного места для реализации функционала.
WICG занимается не только JS API, но и HTML, CSS, WASM функционалом. Подробней рекомендую ознакомиться по данным ссылкам:
🔗 Сайт: wicg.io
🔗 GitHub: github.com/WICG
🔗 Forum: discourse.wicg.io
3 195
Application integration patterns for microservices
#worth_seeing #aws #microservices
Сегодня в рекомендациях видео с AWS re:Invent 2021. Докладчик Dirk Fröehner делает доклады об паттернах интеграции микросервисов каждый год. Если вы еще не видели, то обязательно посмотрите. Доклад естественно сделан на базе AWS стэке, но терминология и паттерны универсальны являются базой микросервисной архитектуры.
👀видео
📕cлайды
3 195
Road to production
#worth_seeing
В мае 2021 компания DevPro проводила онлайн JS конференцию, где я делал доклад "Road to Production". Идея доклада поделиться подходами на каждом из фаз life cycle разработки приложения. В рамках доклада я использовал DevOps концепцию "Day 0/Day 1/Day 2", которая обозначает:
day 0️⃣ – проектирование и создание PoC
day 1️⃣ – разработка и релиз
day 2️⃣ – поддержка и мониторинг
👀видео
🔗my-talks.net
📕Слайды
Схожими идеями в рамках VinnytsiaJS 2021 делился Виталий Ратушный
3 195
Дорогие подписчики от всего сердца поздравляю вас с наступающим новым годом. Спасибо вам, что считай каждый пост в канале сопровождается комментариями. Искрене желаю мира, здоровья и профессиональных успехов!
3 195
Data Structures Easy to Advanced Course
#worth_seeing
Типичная проблема JS разработчиков – отсутствие фундаментального образования. Сегодняшняя рекомендация призвана помочь с структурами данных. Автор смог уложить в 8 часов, то что в университете растянут на один-два семестра. Примеры кода по традиции приведены на Java. Отмечу, что видео идет в youtube аккаунте freeCodeCamp, ресурса который можно смело рекомендовать для начинающих разработчиков.
3 195
Что такое S3 Object Lambda и как ее использовать?
#aws
В марте 2021 AWS представили новый тип Lambdа – S3 Object. Она используется, чтобы обработке и изменения запросов к файлам в S3. Примеры использования:
– ресайзинг картинок
– мутация данных в зависимости от того, кто сделал запрос на S3.
– gzip на лету во время запроса
Еще раз напомню, что не стоит использовать Node.js как прокси для загрузки файла в S3. Для этого существуют signed url.
Ссылки по теме:
– Анонс в блоге
– Документация
3 195
Хочу поделиться каналом Хороший разработчик знает. Его ведёт Павел Поляков, разработчик с 15-летним опытом, живущий сейчас в Германии. Пишет посты с уклоном в soft skills и инжиниринг менеджмент.
Примеры постов:
🔗 Про продуктивные конфликты
🔗 Про Рождественский календарь для разработчика
🔗 Все как код
Контент на канале будет интересен для Middle+ уровня, когда инвестиции времени в софт-скилы начинают приносить больше пользы.
3 195
Какие open source продукты стоит знать Node.js разработчику?
#list
Node.js моложе, чем PHP или Java. Поэтому у нас в экосистеме есть много библиотек, несколько фреймворков и мало open-source продуктов. Продукт это программное обеспечение, которое команда может запустить для бизнеса за один день. Примеры из PHP экосистемы: WordPress, Drupal, Magento.
Вот список open source Node.js продуктов:
– Ghost, блогинг
– Hexo, блогинг
– Strapi, headless cms
– NodeBB, форум
– AdminBro, админ панель
В завершение несколько мыслей:
– в зависимостях проектов из списка вы может обнаружить moment, express и т.д. Принцип работает не трогай никто не отменял.
– в мире PHP есть легко видима разница в зарплатах у WordPress разработчиков и PHP разработчиков. Аналогично только Strapi/Ghost разработчик будут получать меньше, чем универсальный Node.js разработчик.
– очевидна ниша создать свой open source Node.js проект и зарабатывать на консальтинге, cloud решение и т.д.
3 195
Знакомство с Node.js
#worth_seeing
В рамках Яндекс Академии существует youtube канал Фронтенд. Сегодняшнее видео как раз с этого канала. По сути это три лекции склеенные в одно видео – смотрите таймкоды.
Лекции будут полезны начинающим разработчикам. В них Герман Волков сделал толково объясняет как работать с #nodejs.
3 195
13 способов запустить веб-приложение в Интернет
#worth_seeing
Сегодня в рекомендациях к просмотру видео с конференции JavaScript fwdays’21, которая проходила в начале лета. Докладчик Андрей Шумада постоянный член программного комитета конференций Fwdays, судья DEV Challenge и регулярный докладчик на JS конференциях.
В своем докладе Андрей делает разбор как задеплоить приложение, причем как SPA, так и Node.js. Доклад идет от домашнего компьютера к Kubernetes. Завершает доклад сравнительная таблица всех разобранных способов.
Слайды доступны на сайте конференции.
3 195
Вышла новая версия Node.js v16.13.1
В него входят:
– обновление npm с 8.1.0 до 8.1.2
– обновление V8 9.4.146.19 до 9.4.146.24
– обновление c-ares (отвечает за работу с DNS)
Единственное значимое изменение это багфикс в dns.resolve4. Теперь он корректно обрабатывает домены с дефисом.
Мое личное мнение, необходимость обновлять проекты – низкая.
3 195
Как проверить, что строка timezone или encoding?
#nodejs_api
Для того, чтобы проверить что строка является таймзоной можно использовать Internationalization модуль.
function isTimezone(str) {
try {
Intl.DateTimeFormat(undefined, { timeZone: str });
return true;
} catch (ex) {
return false;
}
}
Для проверки кодировки (encoding) можно использовать Buffer.isEncoding.
Собственно цель сегодняшнего рецепта напомнить, что часть buildin modules в #nodejs являются глобальными и их не нужно импортировать.3 195
OpenJS Foundation дает скидки на Node.js Cerfification. Напомню их две: Node.js Services Development Certification и Node.js Application Development Certification.
Варианты:
– МегаБандл: обе сертификация и тренинги к ним –$1150 $399
– Бандл: одна сертификация + тренинг – $575 $199
– Обе сертификации – $375 $187.50
Лично я рекомендую брать просто сертификацию без тренинга. Тренинги у Linux Foundation мне всегда казались слабоватыми.
Источник
3 195
Через несколько минут стартует мой доклад на онлайн конференции: https://fwdays.com/en/event/js-autumn-fwdays-2021
Слады: https://speakerdeck.com/galkin/node-dot-js-development-in-2022
После доклада небольшой голосовой чат в дискорде: https://discord.gg/8sNcQUYTua
Вопросы так же можно задать под этим постом.
