Как и зачем обновить aws-sdk с v2 на v3?
#package #aws
Два месяца назад я рассказывал как Как уменьшить потребление памяти во время TypeScript компиляции? Там я привел в качестве примера изменения импортов из
Вторая версия по-прежнему поддерживается, но переходить на третью уже пора. Вот причины:
➡️ модульная архитектура, т.е. один пакет для работы с одним сервисом. Можно не следить за правильностью import-ов как в примере.
➡️ TypeScript-first поддержка
➡️ короче Stack Trace для ошибок
➡️ оплата технической инфляции раньше ее превращения в тех.долг
Перед обновлением можно рекомендую глянуть workshop v2->v3 для самостоятельного прохождения от AWS.
#package #aws
Два месяца назад я рассказывал как Как уменьшить потребление памяти во время TypeScript компиляции? Там я привел в качестве примера изменения импортов из
aws-sdk. Этот пакет является второй версией AWS JS SDK. Я упустил выход третей версии в декабре прошлого года. Третья версия состоит из scoped packages с префиксом @aws-sdk, например @aws-sdk/client-s3.Вторая версия по-прежнему поддерживается, но переходить на третью уже пора. Вот причины:
➡️ модульная архитектура, т.е. один пакет для работы с одним сервисом. Можно не следить за правильностью import-ов как в примере.
➡️ TypeScript-first поддержка
➡️ короче Stack Trace для ошибок
➡️ оплата технической инфляции раньше ее превращения в тех.долг
Перед обновлением можно рекомендую глянуть workshop v2->v3 для самостоятельного прохождения от AWS.
Что такое AssemblyScript?
#typescript
Универсальный способ оптимизации производительности для JavaScript разработчика это перенос вычислений в WebAssembly. Упрощенно говоря это значит написать требуемый код на C++ или его аналогах.
AssemblyScript решает проблему "
Для большинства проектов это решение будет over-engineering, но там где есть CPU intensive задачи я рекомендую это решение.
#typescript
Универсальный способ оптимизации производительности для JavaScript разработчика это перенос вычислений в WebAssembly. Упрощенно говоря это значит написать требуемый код на C++ или его аналогах.
AssemblyScript решает проблему "
мне нужен WASM, но нет ресурсов чтобы изучить новый язык". По сути AssemblyScript это тот же TypeScript с WASM типами и уже настроенным компилятором. Это решение хорошо тем, что подойдет и для Node.js, и для браузера.Для большинства проектов это решение будет over-engineering, но там где есть CPU intensive задачи я рекомендую это решение.
Какие вещи должны быть в техническом стэке для поддержки проекта?
#tech_stack #list
На этапе day 2 происходит поддержка проекта. Вот список из пяти инструментов, которые помогут в этом.
➡️ Система менеджмента инцидентов и оповещения о них. Пример: PagerDuty.
➡️ Система мониторинга. Пример: DataDog
➡️ Система сборки логов. Пример: ELK
➡️ Система сборки ошибок. Пример: Sentry
➡️ Мониторинг производительности – Application Performance Monitoring. Пример: Elastic APM
#tech_stack #list
На этапе day 2 происходит поддержка проекта. Вот список из пяти инструментов, которые помогут в этом.
➡️ Система менеджмента инцидентов и оповещения о них. Пример: PagerDuty.
➡️ Система мониторинга. Пример: DataDog
➡️ Система сборки логов. Пример: ELK
➡️ Система сборки ошибок. Пример: Sentry
➡️ Мониторинг производительности – Application Performance Monitoring. Пример: Elastic APM
Audio
#voice_chat
Гость: Андрей Кучеренко, Chief Software Engineer I в EPAM Systems. Работает в EPAM последние десять лет. Ведет JS комьюнити @mathrandomcommunity
Вопросы
❓ Этапы развития разработчика, система тайтлов и что идет после Senior?
❓ Как выбирать тех.стэк для проекта?
❓ Как качать навык систем дизайна?
Ссылки:
- https://www.npmjs.com/package/jscpd
- https://github.com/kucherenko/awesome-project-questions
- https://www.startupemulator.com/
- https://www.educative.io/courses/grokking-the-system-design-interview
- https://www.facebook.com/InternationalSoftwareArchitectClub
Гость: Андрей Кучеренко, Chief Software Engineer I в EPAM Systems. Работает в EPAM последние десять лет. Ведет JS комьюнити @mathrandomcommunity
Вопросы
❓ Этапы развития разработчика, система тайтлов и что идет после Senior?
❓ Как выбирать тех.стэк для проекта?
❓ Как качать навык систем дизайна?
Ссылки:
- https://www.npmjs.com/package/jscpd
- https://github.com/kucherenko/awesome-project-questions
- https://www.startupemulator.com/
- https://www.educative.io/courses/grokking-the-system-design-interview
- https://www.facebook.com/InternationalSoftwareArchitectClub
No Way, JOSE
#worth_seeing #security
Сегодня в рекомендациях доклад, который описывает базовые понятия на которых строиться JWT. Докладчик – Sam Bellen, Developer Advocate Engineer в Auth0. Slides
#worth_seeing #security
Сегодня в рекомендациях доклад, который описывает базовые понятия на которых строиться JWT. Докладчик – Sam Bellen, Developer Advocate Engineer в Auth0. Slides
YouTube
No Way, JOSE - Sam Bellen | JSConf Hawaii 2020
Is your first thought when thinking about cryptography, “nope, that’s not for me!”? There’s no need to. When explained with simple examples, you can see the basics are not that complicated. The Javascript Object Signing and Encryption, or JOSE for short is…
Как я провожу собеседования?
#principles
Мое обычное собеседование длиться 1 час. В текущих условиях рынка у бизнеса нет возможности просить у кандидата больше времени. За этот час я проверяю, что кандидат умеет писать код и у него есть понимание тех.стэка.
Написание кода !== составление алгоритма
Написание кода это технический навык, который не должен требовать когнитивных усилий. Для его проверки я использую live-coding c однострочными задачками. Если кандидат гуглит как вернуть Promise из функции, то он скорее всего не писал на современном JS.
Составление алгоритма это сознательная работа, требующая когнитивных усилий. Способность составлять алгоритмы проверяют задачками с Leetcode. В ходе интервью и в повседневной жизни люди по-разному выполняют алгоритмизацию, поэтому я не даю задач на алгоритмы.
Понимание !== знание
В ходе интервью задача проверить, что кандидат способен выполнять задачи на проекте. Для этого ему необходимо не знание документации, а понимание и опыт работы с тех.стэка проекта. В этом помогают вопросы "В чем различие ...?", "Зачем/Почему...?", а не "Что такое ...?" или "Дайте определение ...". Обычно, глубина понимания прямо коррелирует с систем дизайном и алгоритмизацией.
Soft-skills работают всегда
За час кандидат показывает не только свои технические навыки, но и то как он общается. Сосредоточившись на тех. составляющий собеседования кандидат показывает свои повседневные навыки активного слушания, ведения тех. дискуссии, умение признать свою ошибку или незнание.
Матрица скилов
По итогам любой работы должен оставаться артефакт. Артефактом собеседования является матрица скилов кандидата. На ее основание бизнес принимает решение о дальнейшем сотрудничестве с кандидатом. У меня это это 4-7 пунктов с пятибальной шкалой и комментариями.
#principles
Мое обычное собеседование длиться 1 час. В текущих условиях рынка у бизнеса нет возможности просить у кандидата больше времени. За этот час я проверяю, что кандидат умеет писать код и у него есть понимание тех.стэка.
Написание кода !== составление алгоритма
Написание кода это технический навык, который не должен требовать когнитивных усилий. Для его проверки я использую live-coding c однострочными задачками. Если кандидат гуглит как вернуть Promise из функции, то он скорее всего не писал на современном JS.
Составление алгоритма это сознательная работа, требующая когнитивных усилий. Способность составлять алгоритмы проверяют задачками с Leetcode. В ходе интервью и в повседневной жизни люди по-разному выполняют алгоритмизацию, поэтому я не даю задач на алгоритмы.
Понимание !== знание
В ходе интервью задача проверить, что кандидат способен выполнять задачи на проекте. Для этого ему необходимо не знание документации, а понимание и опыт работы с тех.стэка проекта. В этом помогают вопросы "В чем различие ...?", "Зачем/Почему...?", а не "Что такое ...?" или "Дайте определение ...". Обычно, глубина понимания прямо коррелирует с систем дизайном и алгоритмизацией.
Soft-skills работают всегда
За час кандидат показывает не только свои технические навыки, но и то как он общается. Сосредоточившись на тех. составляющий собеседования кандидат показывает свои повседневные навыки активного слушания, ведения тех. дискуссии, умение признать свою ошибку или незнание.
Матрица скилов
По итогам любой работы должен оставаться артефакт. Артефактом собеседования является матрица скилов кандидата. На ее основание бизнес принимает решение о дальнейшем сотрудничестве с кандидатом. У меня это это 4-7 пунктов с пятибальной шкалой и комментариями.
Помогите лучше понимать аудиторию канала.
Через какую юрисдикцию вы получаете оплату?
PS Прошлый опрос по Seniority уровню.
Ukraine - 309
👍👍👍👍👍👍👍👍 65%
Belarus - 25
👍👍 5%
Russia - 91
👍👍👍 19%
Other - 48
👍👍 10%
👥 473 человека уже проголосовало.
Через какую юрисдикцию вы получаете оплату?
PS Прошлый опрос по Seniority уровню.
Ukraine - 309
👍👍👍👍👍👍👍👍 65%
Belarus - 25
👍👍 5%
Russia - 91
👍👍👍 19%
Other - 48
👍👍 10%
👥 473 человека уже проголосовало.
Telegram
Node.js Recipes
Помогите лучше понимать аудиторию канала.
Junior Software Engineer - 98
👍👍👍👍 20%
Software Engineer - 214
👍👍👍👍👍👍👍👍 44%
Senior Software Engineer - 110
👍👍👍👍👍 22%
Team/Technical Lead - 55
👍👍👍 11%
System Architect - 14
👍 3%
👥 491 человек уже проголосовал.
Junior Software Engineer - 98
👍👍👍👍 20%
Software Engineer - 214
👍👍👍👍👍👍👍👍 44%
Senior Software Engineer - 110
👍👍👍👍👍 22%
Team/Technical Lead - 55
👍👍👍 11%
System Architect - 14
👍 3%
👥 491 человек уже проголосовал.
#announcement #voice_chat
22 июля в 21:00 поговорим об обучение.
Гость: Сергей Немчинский, руководитель и владелец учебной компании foxmindEd. Автор youtube канала с 175к подписчиками и фразы "Здравствуйте, мои дорогие".
Вопросы:
❓ В чем особенность IT-обучения?
❓ Кто такие свитчеры? Как менять основной язык?
❓ Как обучаться на джуна? Как расти до синьора
❓ Как составлять план обучения?
Ссылка для подключения: https://xn--r1a.website/node_recipes?voicechat
До встречи в эфире!
22 июля в 21:00 поговорим об обучение.
Гость: Сергей Немчинский, руководитель и владелец учебной компании foxmindEd. Автор youtube канала с 175к подписчиками и фразы "Здравствуйте, мои дорогие".
Вопросы:
❓ В чем особенность IT-обучения?
❓ Кто такие свитчеры? Как менять основной язык?
❓ Как обучаться на джуна? Как расти до синьора
❓ Как составлять план обучения?
Ссылка для подключения: https://xn--r1a.website/node_recipes?voicechat
До встречи в эфире!
Почему вам нужны знания Promise-ов в async/await коде?
#code_pattern
Async/await является основным стилем для написания асинхронного кода в современной #nodejs. Стоит помнить, что это синтаксический сахар поверх Promise chain. Поэтому для любого уровня разработчика важно понимать когда и для чего использовать такие конструкции:
➡️ Promise.all – необходимо использовать для получения значений, которые независимы. Будет прерван при первой ошибке.
➡️ Promise.race – необходимо использовать для получения первого значения или ошибки. Классический пример, это выброс ошибки по таймауту.
➡️ Promise.allSettled – необходимо использовать для получения всех значений. Ошибки не вызовут остановку, а будут частью результата.
Что дает использование этих конструкций? Вы можете запускать промисы не последовательно, а параллельно. В результате время ответа становиться быстрее.
#code_pattern
Async/await является основным стилем для написания асинхронного кода в современной #nodejs. Стоит помнить, что это синтаксический сахар поверх Promise chain. Поэтому для любого уровня разработчика важно понимать когда и для чего использовать такие конструкции:
➡️ Promise.all – необходимо использовать для получения значений, которые независимы. Будет прерван при первой ошибке.
➡️ Promise.race – необходимо использовать для получения первого значения или ошибки. Классический пример, это выброс ошибки по таймауту.
➡️ Promise.allSettled – необходимо использовать для получения всех значений. Ошибки не вызовут остановку, а будут частью результата.
Что дает использование этих конструкций? Вы можете запускать промисы не последовательно, а параллельно. В результате время ответа становиться быстрее.
Как писать меньше TypeScript интерфейсов?
#typescript
TL;DR Используйте Lookup Types
TypeScript позволяет писать вложенные интерфейсы. Например:
Необходимо создать функцию
Вместо этого следует использовать Lookup Types. Это выглядит так:
Обратите внимание, что всегда используются квадратные скобки и кавычки, а не точка. Такая нотация позволяет делать
#typescript
TL;DR Используйте Lookup Types
TypeScript позволяет писать вложенные интерфейсы. Например:
interface User { id: number; name: string; contacts: { phone: string; email: string; address: { country: string; city: string; street: string; } }}Необходимо создать функцию
updateUserContact. Распространённое решение вынести UserСontact как отдельный интерфейс, или еще хуже продублировать его. Новый интерфейс использовать как тип в функции.Вместо этого следует использовать Lookup Types. Это выглядит так:
type UserСontacts = User['contacts']type UserAddress = User['contacts']['address']Обратите внимание, что всегда используются квадратные скобки и кавычки, а не точка. Такая нотация позволяет делать
union внутри квадратных скобок или использовать keyof. В завершение пример близкий к продакшен коду:function updateUserContact<T extends keyof User["contacts"]>( user: User, contactType: T, contact: User["contacts"][T]): void {// ...}www.typescriptlang.org
Documentation - TypeScript 2.1
TypeScript 2.1 Release Notes
Audio
#voice_chat
Гость: Сергей Немчинский, руководитель и владелец учебной компании foxmindEd. Автор youtube канала с 175к подписчиками и фразы "Здравствуйте, мои дорогие".
Вопросы:
❓ В чем особенность IT-обучения?
❓ Кто такие свитчеры? Как менять основной язык?
❓ Как составлять план обучения?
Книга, о которую рекомендует Сергей это "Цель. Процесс непрерывного совершенствования" Элияху Голдратт
Chrome Extension для удобного контроля скорости видео.
Гость: Сергей Немчинский, руководитель и владелец учебной компании foxmindEd. Автор youtube канала с 175к подписчиками и фразы "Здравствуйте, мои дорогие".
Вопросы:
❓ В чем особенность IT-обучения?
❓ Кто такие свитчеры? Как менять основной язык?
❓ Как составлять план обучения?
Книга, о которую рекомендует Сергей это "Цель. Процесс непрерывного совершенствования" Элияху Голдратт
Chrome Extension для удобного контроля скорости видео.
Какие вопросы необходимо решить при внедрение WebSockets?
#architecture
Вот список вопросов, которые я задаю при внедрение WS на проекте.
❓ Какую бизнес задачу решают real-time updates от сервера? Определяет нужны WS, SSE или GraphQL Subscriptions.
❓ Какие клиенты будут использоваться: браузер, мобильные и т.д? Определяет нужен ли fallback, если WS не доступен. Ключевой аргумент в извечном споре socket.io VS ws
❓ Может ли клиент подписываться на конкретный поток сообщений? Определяет механизм создания подписок и поведения в момент пере-подключения.
❓ Какие ACL нужны? Определяет поведения системы в момент подключения, отправки/принятие сообщений и создание подписок.
❓ Где мы разворачиваем? Определяет перечень технологий, которые мы сможем использовать. Например, в AWS есть WS на serverless.
#architecture
Вот список вопросов, которые я задаю при внедрение WS на проекте.
❓ Какую бизнес задачу решают real-time updates от сервера? Определяет нужны WS, SSE или GraphQL Subscriptions.
❓ Какие клиенты будут использоваться: браузер, мобильные и т.д? Определяет нужен ли fallback, если WS не доступен. Ключевой аргумент в извечном споре socket.io VS ws
❓ Может ли клиент подписываться на конкретный поток сообщений? Определяет механизм создания подписок и поведения в момент пере-подключения.
❓ Какие ACL нужны? Определяет поведения системы в момент подключения, отправки/принятие сообщений и создание подписок.
❓ Где мы разворачиваем? Определяет перечень технологий, которые мы сможем использовать. Например, в AWS есть WS на serverless.
Microservices in the Cloud with Kubernetes and Istio
#worth_seeing
Сегодня в рекомендациях видео трехлетней давности с Google I/O' 18. Докладчик Sandeep Dinesh показывает как в микросервисной архитектуре переложить вопросы маршрутизации, оркестрирования, canary-releases и т.д с уровня кода на уровень инфраструктуры.
#worth_seeing
Сегодня в рекомендациях видео трехлетней давности с Google I/O' 18. Докладчик Sandeep Dinesh показывает как в микросервисной архитектуре переложить вопросы маршрутизации, оркестрирования, canary-releases и т.д с уровня кода на уровень инфраструктуры.
YouTube
Microservices in the Cloud with Kubernetes and Istio (Google I/O '18)
Are you building or interested in building microservices? They are a powerful method to build a scalable and agile backend, but managing these services can feel daunting: building, deploying, service discovery, load balancing, routing, tracing, auth, graceful…
WebTransport
#worth_seeing
Два месяца назад я рекомендовал посмотреть интро видео об HTTP/3. Этот протокол открывает возможность для использования WebTransport. Сегодняшнее видео как раз объясняет, что это и какие проблемы решает.
Данная технология не готова к использованию для широкого круга проектов. Рецепт сделан подсветить направление в котором двигается веб-разработка.
Ссылки по теме:
- WebTransport Explainer
- Experimenting with WebTransport
#worth_seeing
Два месяца назад я рекомендовал посмотреть интро видео об HTTP/3. Этот протокол открывает возможность для использования WebTransport. Сегодняшнее видео как раз объясняет, что это и какие проблемы решает.
Данная технология не готова к использованию для широкого круга проектов. Рецепт сделан подсветить направление в котором двигается веб-разработка.
Ссылки по теме:
- WebTransport Explainer
- Experimenting with WebTransport
YouTube
WebTransport (BlinkOn 14)
WebTransport is a new protocol and JavaScript API to permit sites to communicate without head-of-line blocking. This session will provide updates on the latest changes to the spec and implementation as well as future direction. It will also provide plenty…
Kafka Summit
#conference
На следущей неделе, 27-28 июля, пройдет бесплатная онлайн конференция Kafka Summit. Целевая аудитория конференции это разработчики использующие Kafka в продакшене. Лишь небольшая часть #nodejs проектов используют данную технологию. Большинство используют Rabbit или очереди от cloud-провайдеров. Тем не менее о данной технологии стоит иметь представление. В этом может помочь не конференция, а bootcamp который обновили в предверии конференции. Подробней по ссылкам:
- https://www.confluent.io/training/learn-confluent/
- https://www.confluent.io/certification/
#conference
На следущей неделе, 27-28 июля, пройдет бесплатная онлайн конференция Kafka Summit. Целевая аудитория конференции это разработчики использующие Kafka в продакшене. Лишь небольшая часть #nodejs проектов используют данную технологию. Большинство используют Rabbit или очереди от cloud-провайдеров. Тем не менее о данной технологии стоит иметь представление. В этом может помочь не конференция, а bootcamp который обновили в предверии конференции. Подробней по ссылкам:
- https://www.confluent.io/training/learn-confluent/
- https://www.confluent.io/certification/