Working with WebSockets on AWS
#worth_seeing #aws
Для постоянных читателей рубрики не будет новостью, что AWS предлагает serverless websockets. Я делился соответствующим видео с OpenJS World 2020.
Сегодня у нас более подробное видео от Ryan Lewis. Доклад сделан в рамках youtube-канала, а не конференции. Формат – live coding . В нем докладчик не только рассказывает что, но и показывает как. В рамках конференций это самый сложный формат. В записи его делать проще, что однако не умоляет ценность рекомендуемого видео.
Расскажу о докладчике. Райан делает материалы по AWS, serverless и JavaScript. Для начинающего #nodejs разработчика будет полезна его бесплатная книга "The Cloud Developer Workbook", где собранны 100 базовых упражнений для изучения AWS.
#worth_seeing #aws
Для постоянных читателей рубрики не будет новостью, что AWS предлагает serverless websockets. Я делился соответствующим видео с OpenJS World 2020.
Сегодня у нас более подробное видео от Ryan Lewis. Доклад сделан в рамках youtube-канала, а не конференции. Формат – live coding . В нем докладчик не только рассказывает что, но и показывает как. В рамках конференций это самый сложный формат. В записи его делать проще, что однако не умоляет ценность рекомендуемого видео.
Расскажу о докладчике. Райан делает материалы по AWS, serverless и JavaScript. Для начинающего #nodejs разработчика будет полезна его бесплатная книга "The Cloud Developer Workbook", где собранны 100 базовых упражнений для изучения AWS.
YouTube
Working with WebSockets on AWS
WebSockets is the best way to interact in real-time between your front-end and back-end. AWS provides a new WebSocket API through API Gateway, which is powerful and easy to set up. In this tutorial, we'll create a new WebSocket API, a Lambda function, and…
Подборка node.recipes за июль 2021
#monthly_list
Рецепты для #nodejs разработчиков:
➡️ Top mistakes that Node.js developers make
➡️ Как использовать ARG и ENV внутри Dockerfile?
➡️ boardgame.io движок для пошаговых игр
➡️ Что такое JSONPath?
➡️ Any problem must be solved at the right level
➡️ Как и зачем обновить aws-sdk с v2 на v3?
➡️ Что такое AssemblyScript?
➡️ Какие вещи должны быть в техническом стэке для поддержки проекта?
➡️ Как я провожу собеседования?
➡️ Почему вам нужны знания Promise-ов в async/await коде?
➡️ Как писать меньше TypeScript интерфейсов?
➡️ Какие вопросы необходимо решить при внедрение WebSockets?
➡️ Как документировать асинхронное API?
➡️ Как следить за устареванием кода?
➡️ Стоит знать Node Best Practice
➡️ Подборка книг для прокачки, когда ты уже Senior
➡️ Подборка задач для прокачки, когда ты уже Middle
Доклады, которые стоит посмотреть:
👀 Play it Right with CodeceptJS
👀 Stream-oriented Architecture with Nest
👀 Refactoring: Second Edition
👀 Hello Quantum Developers World - Yet Another Frontier for JavaScript
👀 No Way, JOSE
👀 Microservices in the Cloud with Kubernetes and Istio
👀 WebTransport
Voice Chats:
🎤 About Career Development, в гостях Андрей Кучеренко
🎤 About Education, в гостях Сергей Немчинский
#monthly_list
Рецепты для #nodejs разработчиков:
➡️ Top mistakes that Node.js developers make
➡️ Как использовать ARG и ENV внутри Dockerfile?
➡️ boardgame.io движок для пошаговых игр
➡️ Что такое JSONPath?
➡️ Any problem must be solved at the right level
➡️ Как и зачем обновить aws-sdk с v2 на v3?
➡️ Что такое AssemblyScript?
➡️ Какие вещи должны быть в техническом стэке для поддержки проекта?
➡️ Как я провожу собеседования?
➡️ Почему вам нужны знания Promise-ов в async/await коде?
➡️ Как писать меньше TypeScript интерфейсов?
➡️ Какие вопросы необходимо решить при внедрение WebSockets?
➡️ Как документировать асинхронное API?
➡️ Как следить за устареванием кода?
➡️ Стоит знать Node Best Practice
➡️ Подборка книг для прокачки, когда ты уже Senior
➡️ Подборка задач для прокачки, когда ты уже Middle
Доклады, которые стоит посмотреть:
👀 Play it Right with CodeceptJS
👀 Stream-oriented Architecture with Nest
👀 Refactoring: Second Edition
👀 Hello Quantum Developers World - Yet Another Frontier for JavaScript
👀 No Way, JOSE
👀 Microservices in the Cloud with Kubernetes and Istio
👀 WebTransport
Voice Chats:
🎤 About Career Development, в гостях Андрей Кучеренко
🎤 About Education, в гостях Сергей Немчинский
Real-time communication with WebRTC: Google I/O 2013
#worth_seeing
Сегодня в рекомендациях видео об технологии WebRTC. Технология уже давно обкатана, но вопрос как бы вы создавали аналог google meet ставит в тупик большинство #nodejs разработчиков.
Для получения практических навыков по теме предлагаю пройти Real time communication with WebRTC
#worth_seeing
Сегодня в рекомендациях видео об технологии WebRTC. Технология уже давно обкатана, но вопрос как бы вы создавали аналог google meet ставит в тупик большинство #nodejs разработчиков.
Для получения практических навыков по теме предлагаю пройти Real time communication with WebRTC
YouTube
Real-time communication with WebRTC: Google I/O 2013
Justin Uberti, Sam Dutton
Presentation slides: http://io13webrtc.appspot.com
01:41 WebRTC across platforms
03:37 WebRTC APIs
04:32 MediaStream
09:44 RTCPeerConnection
12:28 RTCDataChannel
16:31 Signaling
18:43 STUN and TURN
22:18 Security
23:21 Architectures…
Presentation slides: http://io13webrtc.appspot.com
01:41 WebRTC across platforms
03:37 WebRTC APIs
04:32 MediaStream
09:44 RTCPeerConnection
12:28 RTCDataChannel
16:31 Signaling
18:43 STUN and TURN
22:18 Security
23:21 Architectures…
Что такое Breaking Change в Web API?
#architecture
Обратная совместимость (backward compatibility) одно из ключевых требований при выборе инструментов, библиотек, API и т.д. Нарушение обратной совместимости называет Breaking Change.
Примеры Breaking Change:
❌ Переименование полей. Добавьте новое, но оставьте старое.
❌ Изменение типа поля.
❌ Изменение http-кода ответа, например с 400 на 404. В REST приложениях клиент должен строит логику на основание этих кодов.
❌ Изменение значений по умолчанию. Например, раньше API отдавало все записи, а теперь только первые 50 элементов.
Команда разработки может игнорировать обратную совместимость, только если проект состоит из API и Single Page Application, которые доставляются одновременно. Если среди клиентов есть мобильное, десктоп приложение, то функциональность будет сломана пока пользователь не обновить приложение.
Хорошими практиками является версионирование API и пометка как deprecated для полей и endpoints. Если клиент использует версию старше, чем предоставляет сервер, то он может уведомить пользователя об необходимости обновления ПО.
#architecture
Обратная совместимость (backward compatibility) одно из ключевых требований при выборе инструментов, библиотек, API и т.д. Нарушение обратной совместимости называет Breaking Change.
Примеры Breaking Change:
❌ Переименование полей. Добавьте новое, но оставьте старое.
❌ Изменение типа поля.
❌ Изменение http-кода ответа, например с 400 на 404. В REST приложениях клиент должен строит логику на основание этих кодов.
❌ Изменение значений по умолчанию. Например, раньше API отдавало все записи, а теперь только первые 50 элементов.
Команда разработки может игнорировать обратную совместимость, только если проект состоит из API и Single Page Application, которые доставляются одновременно. Если среди клиентов есть мобильное, десктоп приложение, то функциональность будет сломана пока пользователь не обновить приложение.
Хорошими практиками является версионирование API и пометка как deprecated для полей и endpoints. Если клиент использует версию старше, чем предоставляет сервер, то он может уведомить пользователя об необходимости обновления ПО.
Почем нынче Node.js разработчики?
➡️ Зарплати українських розробників — літо 2021 Традиционная аналитика от Dou. #nodejs в явном виде нет. Строиться на основание текущих зарплат.
✅ Candidates' Salary Analytics Аналитика от рекрутинг агенства Виктории Придатко. Строиться на основание пожеланий кандидатов. Node.js Senior 5.5к.
🔥 10k новый потолок, где Max Ischenko делиться о трех наймах через Джини за июль 2021 с зарплатой в 10к. Один из наймов это Node.js разработчик. Есть к чему стремиться.
➡️ Зарплати українських розробників — літо 2021 Традиционная аналитика от Dou. #nodejs в явном виде нет. Строиться на основание текущих зарплат.
✅ Candidates' Salary Analytics Аналитика от рекрутинг агенства Виктории Придатко. Строиться на основание пожеланий кандидатов. Node.js Senior 5.5к.
🔥 10k новый потолок, где Max Ischenko делиться о трех наймах через Джини за июль 2021 с зарплатой в 10к. Один из наймов это Node.js разработчик. Есть к чему стремиться.
Обзор Node.js v16: Префикс для Core modules
#nodejs_api
Как известно #nodejs имеет встроенные модули (в английском Core или Builtin). Они имеют приоритет перед модулями из node_modules. В 16 версии для них добавили префикс
Отличное изменение! Оно позволит в коде явно разделять встроенные и обычные модули. Сейчас для этого я использую eslint правило import/order. С его помощью идет валидация порядка импортов. У нас это встроенные, установленные, из других файлов проекта с пустой строкой между блоками. Для правила есть автофикс.
В документации пока мало мест, где используется новый require стиль. Поэтому можно поучаствовать в ее улучшение и стать контрибутором в Node.js
#nodejs_api
Как известно #nodejs имеет встроенные модули (в английском Core или Builtin). Они имеют приоритет перед модулями из node_modules. В 16 версии для них добавили префикс
node: Пример, const http = require('node:http')
Для обратной совместимости, можно использовать и без префикса.Отличное изменение! Оно позволит в коде явно разделять встроенные и обычные модули. Сейчас для этого я использую eslint правило import/order. С его помощью идет валидация порядка импортов. У нас это встроенные, установленные, из других файлов проекта с пустой строкой между блоками. Для правила есть автофикс.
В документации пока мало мест, где используется новый require стиль. Поэтому можно поучаствовать в ее улучшение и стать контрибутором в Node.js
Что такое Code With Me от JetBrains?
В этом году в список причин, почему я предпочитаю WebStorm, а не VisualCode для написания #nodejs кода добавилась возможность парного программирования через Code With Me. Если вы его еще не попробовали, рекомендую это сделать.
Update: В комментариях рекомендуют посмотреть Live Sharing для VisualCode
В этом году в список причин, почему я предпочитаю WebStorm, а не VisualCode для написания #nodejs кода добавилась возможность парного программирования через Code With Me. Если вы его еще не попробовали, рекомендую это сделать.
Update: В комментариях рекомендуют посмотреть Live Sharing для VisualCode
YouTube
Introducing Code With Me - Collaborative Coding
Code With Me is JetBrains' collaborative development and pair programming service. Bundled with most 2021.1 IDEs, you can now share a project with others, and work on it together, in real time.
Playlist:
0:00 - Introduction
0:30 - Joining a session
0:48…
Playlist:
0:00 - Introduction
0:30 - Joining a session
0:48…
JavaScript Algorithms and Data Structures
#code_pattern
Чтобы писать код нужно: знать его синтаксис и инструментарий. Чтобы писать качественный код нужно: знать теория программирования, алгоритмы и структуры данных.
Для JavaScript разработчиков существует отличный репозитарий javanoscript-algorithms. В нем разобраны классические алгоритмы и структуры данных. Есть разделение по уровню Beginner/Advanced и переводы, в том числе на русский и украинский языки. Рекомендую к изучению!
#code_pattern
Чтобы писать код нужно: знать его синтаксис и инструментарий. Чтобы писать качественный код нужно: знать теория программирования, алгоритмы и структуры данных.
Для JavaScript разработчиков существует отличный репозитарий javanoscript-algorithms. В нем разобраны классические алгоритмы и структуры данных. Есть разделение по уровню Beginner/Advanced и переводы, в том числе на русский и украинский языки. Рекомендую к изучению!
GitHub
GitHub - trekhleb/javanoscript-algorithms: 📝 Algorithms and data structures implemented in JavaScript with explanations and links…
📝 Algorithms and data structures implemented in JavaScript with explanations and links to further readings - trekhleb/javanoscript-algorithms
Yoni Goldberg on Integration Tests with JavaScript
#worth_seeing
Последние полтора года у нас не много конференций. Сами знаете почему. Поэтому я не нашел свежего видео, в котором Yoni Goldberg рассказывает об подходах в тестирование. Зато есть отличный подкаст от NearForm – OpenHive.js. Один из его выпусков я и предлагаю вам послушать.
Постоянный читатели уже знакомы с Yoni Goldberg. Он автор nodebestpractices. А еще у него есть nodejs-integration-tests-best-practices. Собственно этот вопрос он и обсуждает в подкасте.
#worth_seeing
Последние полтора года у нас не много конференций. Сами знаете почему. Поэтому я не нашел свежего видео, в котором Yoni Goldberg рассказывает об подходах в тестирование. Зато есть отличный подкаст от NearForm – OpenHive.js. Один из его выпусков я и предлагаю вам послушать.
Постоянный читатели уже знакомы с Yoni Goldberg. Он автор nodebestpractices. А еще у него есть nodejs-integration-tests-best-practices. Собственно этот вопрос он и обсуждает в подкасте.
Spotify for Creators
Yoni Goldberg on Integration Tests with JavaScript by OpenHive.JS
This episode of OpenHive.JS features Yoni Goldberg, an independent software architect who specialises in crafting advanced web applications using Node.js. A consultant, conference speaker and open source contributor, Yoni loves to blog and is the author of…
Обзор сервиса RunKit
#service
Вчера @node_recipes исполнилось 4 месяца. Телеграм-канал это отличный способ ведение мини-блога. Только делиться кодом в канале это боль. Вставлять код картинкой означает, что люди не смогут его скопировать. А формат рецептов – это короткие заметки читаемые находу, которые тут же можно применять. Вставлять код текстом, даже с
Для сайта лучшим вариантом является RunKit, который позволяет встраивать запускаемые сниппеты кода. Пример можно увидеть в документации lodash.
Вообще основная задача сервиса помогать майнтейнерам npm-пакетов. Пользователи могут без установки попробовать функционал прямо в браузере. Составить воспроизводимый баг репорт. Для этого используется npm.runkit.com. А еще с его помощью можно делать enpoint-ы (бесплатные лямды с маленьким лимитом).
В сервисе есть notebook, упрощенная версия Jupyter notebook. К сожалению, их нельзя запускать без авторизации. В качестве примера, я сделал функцию с AbortController. Получилось не на много удобней GitHub Gist. Так что я еще в поисках как же удобно делиться кодом в канале.
#service
Вчера @node_recipes исполнилось 4 месяца. Телеграм-канал это отличный способ ведение мини-блога. Только делиться кодом в канале это боль. Вставлять код картинкой означает, что люди не смогут его скопировать. А формат рецептов – это короткие заметки читаемые находу, которые тут же можно применять. Вставлять код текстом, даже с
таким форматом неудобно.Для сайта лучшим вариантом является RunKit, который позволяет встраивать запускаемые сниппеты кода. Пример можно увидеть в документации lodash.
Вообще основная задача сервиса помогать майнтейнерам npm-пакетов. Пользователи могут без установки попробовать функционал прямо в браузере. Составить воспроизводимый баг репорт. Для этого используется npm.runkit.com. А еще с его помощью можно делать enpoint-ы (бесплатные лямды с маленьким лимитом).
В сервисе есть notebook, упрощенная версия Jupyter notebook. К сожалению, их нельзя запускать без авторизации. В качестве примера, я сделал функцию с AbortController. Получилось не на много удобней GitHub Gist. Так что я еще в поисках как же удобно делиться кодом в канале.
Forwarded from GDG Cloud Kyiv (Nikita)
#freebies
CKA/CKAD/CKS 50% OFF with FREE participation at the KubeCon + CloudNativeCon North America 2021 (October 11-15)!
To redeem your complimentary All Access virtual pass, use the code KCNA21TR100. The offer is only available until September 27, 11:59 PM PDT at https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/register/
CKA/CKAD/CKS 50% OFF with FREE participation at the KubeCon + CloudNativeCon North America 2021 (October 11-15)!
To redeem your complimentary All Access virtual pass, use the code KCNA21TR100. The offer is only available until September 27, 11:59 PM PDT at https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/register/
Обзор Node.js v16: Новые JavaScript конструкции
#nodejs_api
Начну с цитаты: V8 - это высокопроизводительный движок JavaScript и WebAssembly с открытым исходным кодом от Google, написанный на C++.
Этот движок выполняет JavaScript код внутри Chrome и #nodejs. Обновление V8 это breaking change. Произойдет это в октябре во время обновления мажорной LTS версии Node.js с 14-ой на 16-ую. V8 обновиться с 8-й на 9-ю версию. А это означает, что у нас должны появятся такие фичи:
➡️
➡️
➡️ Error causes, добавляет в конструктор
➡️
➡️ Class static initialization blocks. 🔗tc39 🔗v8
➡️ Private brand checks a.k.a.
#nodejs_api
Начну с цитаты: V8 - это высокопроизводительный движок JavaScript и WebAssembly с открытым исходным кодом от Google, написанный на C++.
Этот движок выполняет JavaScript код внутри Chrome и #nodejs. Обновление V8 это breaking change. Произойдет это в октябре во время обновления мажорной LTS версии Node.js с 14-ой на 16-ую. V8 обновиться с 8-й на 9-ю версию. А это означает, что у нас должны появятся такие фичи:
➡️
String.prototype.replaceAll, которые заменяет все вхождения в отличие от обычного replace. Подробней: tc39➡️
Object.hasOwn alias для Object.prototype.hasOwnProperty. Подробней: tc39, v8➡️ Error causes, добавляет в конструктор
Error дополнительный параметр со свойством cause куда передается ошибка причина. Это позволяет создавать цепочки ошибок. Пример:const parentError = new Error('parent');
const error = new Error('parent', { cause: parentError });
console.log(error.cause === parentError);
Подробней: tc39, v8➡️
ArrayLike.at упростят доступ к элементам в конце, так как принимают отрицательные значения. Подробней: tc39, v8➡️ Class static initialization blocks. 🔗tc39 🔗v8
➡️ Private brand checks a.k.a.
#foo in obj. Подробней: tc39, v8Где изучать Kubernetes
#freebies #list
Kubernetes уже стал стандартом де-факто в разворачивание проектов. Его необходимо знать не только DevOps инженерам, но и разработчикам. Материалов по его изучению много. Вот моя личная подборка:
➡️ Официальная документация kubernetes. Для сдачи CKAD необходимо знать ее структуру и уметь быстро находить нужное. В работе вы тоже будет регулярно ей пользоваться. Знайте на какой версии k8s вы работаете и смотреть изменения.
➡️ Документация от вендора где развернут ваш k8s. Основное знание это вендор специфик annotation, которые расширяют функционал.
➡️ container.training сайт с материалами воркшопов по Docker и kubernetes. Есть видео и Self-paced tutorials.
➡️ kube.academy от VMWare. Есть курсы разного уровня.
#freebies #list
Kubernetes уже стал стандартом де-факто в разворачивание проектов. Его необходимо знать не только DevOps инженерам, но и разработчикам. Материалов по его изучению много. Вот моя личная подборка:
➡️ Официальная документация kubernetes. Для сдачи CKAD необходимо знать ее структуру и уметь быстро находить нужное. В работе вы тоже будет регулярно ей пользоваться. Знайте на какой версии k8s вы работаете и смотреть изменения.
➡️ Документация от вендора где развернут ваш k8s. Основное знание это вендор специфик annotation, которые расширяют функционал.
➡️ container.training сайт с материалами воркшопов по Docker и kubernetes. Есть видео и Self-paced tutorials.
➡️ kube.academy от VMWare. Есть курсы разного уровня.
Обзор Node.js v16: Упрощение доступа к util.types
#nodejs_api
Встроенный модуль util дает возможность проверять типы. Я чаще всего использую такие проверки из util.types:
➡️
#nodejs_api
Встроенный модуль util дает возможность проверять типы. Я чаще всего использую такие проверки из util.types:
➡️
isDate
➡️ isMap
➡️ isSet
➡️ isNativeError
➡️ isPromise
До 16-й версии обращение к данным методом было только через require('util').types. В 16-й появляется альтернатива require('util/types'). Для встроенных #nodejs модулей это синтаксический сахар. А вот для устанавливаемых использование конкретного файла – хорошая практика: typenoscript компилируется быстрее, уменьшение затраты памяти. По сути это ручной tree-shaking, т.е. удаление не используемого кода.Forwarded from 🇺🇦 Math.random(): javanoscript community
This media is not supported in your browser
VIEW IN TELEGRAM
🪄Магия на github! Просто нажмите "." находясь в любом репозитории на github!
🔗 https://twitter.com/github/status/1425505817827151872
#github #shortcut #news
🔗 https://twitter.com/github/status/1425505817827151872
#github #shortcut #news
Как и зачем использовать
#nodejs_api
С 16.4 версии Node.js AsyncLocalStorage перестал быть экспериментальным, а значит его можно смело использовать в продакшене. Данный класс позволяет сохранять контекст между шагами асинхронного флоу. Он работает и с callback, и с promise chain.
Для получения текущего значения используется
Возможное использование данного апи – улучшение логгирования. В стейте храниться traceId, который пишется в лог. Так вы легко можете различить логи от нескольких запросов, которые параллельно обрабатываются #nodejs.
Статья с примерами использования из комментариев.
Пример для Nest.js.
AsyncLocalStorage?#nodejs_api
С 16.4 версии Node.js AsyncLocalStorage перестал быть экспериментальным, а значит его можно смело использовать в продакшене. Данный класс позволяет сохранять контекст между шагами асинхронного флоу. Он работает и с callback, и с promise chain.
Для получения текущего значения используется
asyncLocalStorage.getStore()
Для установки значения есть два способа:asyncLocalStorage.run(store, callback[, ...args]) – устанавливает значение внутри callback. Для использования скорее всего потребуется внести изменения на верхнем уровне кода.asyncLocalStorage.enterWith(store) – устанавливает значение до окончания текущего синхронного контекста и всех порождающих асинхронных операций. Проще в использование, но возможность его вызвать несколько раз создает сложности в поддержки. Мутировать стейт это плохо. Поэтому документация рекомендует использовать run.Возможное использование данного апи – улучшение логгирования. В стейте храниться traceId, который пишется в лог. Так вы легко можете различить логи от нескольких запросов, которые параллельно обрабатываются #nodejs.
Статья с примерами использования из комментариев.
Пример для Nest.js.
👍1
Знай свой JIT: ближе к машине
#worth_seeing
Сегодня видео с FrontendConf'18. В докладе идет очень подробный разбор как работает V8. Какие этапы javanoscript проходит код, прежде чем будет исполнен. Вдумчивый слушатель узнает, почему использование TypeScript улучшает производительность JS приложение.
Докладчик Андрей Мелихов известен благодаря своему подкасту девШахта. За последний год подкаст превратился в ютубканал.
Ссылки:
🔗 Слайды
🔗 Расшифровка доклада в виде статьи на хабр
🔗 ДевШахта
#worth_seeing
Сегодня видео с FrontendConf'18. В докладе идет очень подробный разбор как работает V8. Какие этапы javanoscript проходит код, прежде чем будет исполнен. Вдумчивый слушатель узнает, почему использование TypeScript улучшает производительность JS приложение.
Докладчик Андрей Мелихов известен благодаря своему подкасту девШахта. За последний год подкаст превратился в ютубканал.
Ссылки:
🔗 Слайды
🔗 Расшифровка доклада в виде статьи на хабр
🔗 ДевШахта
YouTube
Знай свой JIT: ближе к машине / Андрей Мелихов (Яндекс.Деньги)
РИТ++2018, FrontendConf
Тезисы и презентация:
http://frontendconf.ru/moscow-rit/2018/abstracts/3386
До того, как написанный нами код будет исполнен, он проходит довольно долгий путь. Мы рассмотрим каждый шаг на этом пути на примере движка V8 и поймём…
Тезисы и презентация:
http://frontendconf.ru/moscow-rit/2018/abstracts/3386
До того, как написанный нами код будет исполнен, он проходит довольно долгий путь. Мы рассмотрим каждый шаг на этом пути на примере движка V8 и поймём…
Build Better Workloads with the AWS Well-Architected Framework and Tool
#worth_seeing #aws #cloud_native
Сегодня в рекомендациях видео об AWS Well-Architected Framework. Данный фреймворк помогает разворачивать приложения в AWS правильно. Вот ссылки, которые помогут лучше разобраться:
- общая инфо
- white paper, по своей сути является манифестом. Стоит знать, даже если вы не работает с AWS.
- labs, лабораторные для применения идей на практике.
- Well-Architected Tool, инструмент для проверки.
Данное рецепт являет логическим продолжением для тех, кто уже выполнил 100 базовых упражнений для изучения AWS.
#worth_seeing #aws #cloud_native
Сегодня в рекомендациях видео об AWS Well-Architected Framework. Данный фреймворк помогает разворачивать приложения в AWS правильно. Вот ссылки, которые помогут лучше разобраться:
- общая инфо
- white paper, по своей сути является манифестом. Стоит знать, даже если вы не работает с AWS.
- labs, лабораторные для применения идей на практике.
- Well-Architected Tool, инструмент для проверки.
Данное рецепт являет логическим продолжением для тех, кто уже выполнил 100 базовых упражнений для изучения AWS.
YouTube
Build Better Workloads with the AWS Well-Architected Framework and Tool - AWS Online Tech Talks
Learn about the architectural best practice guidance available to you via the AWS Well-Architected Tool and Framework. Hear success stories from AWS customers and APN partners, and learn how to improve workload design using Well-Architected concepts across…
Как автоматизировать 2FA?
#package #security
Данный рецепт не о том, как реализовать в своем приложение 2FA (Two-factor authentication). Для этого существуют готовые сервисы, о которых я рассказывал на React fwdays’21. Сегодня кейс из сотрудничества с QA автоматизаторами.
Для проверки приложения необходимо произвести логин пользователя. Это происходит через gmail. Переодически gmail говорит необходима дополнительная проверка – неизвестное устройство. Варианты решения отправка смс или отправка емейл не подходят, так как требуют дождаться этих смс/емейлов, способа их получения, парсинга и т.п.
В данном кейсе правильно использовать google authenticator. Данный 2FA способ виден, только если вы добавили номер телефона. В момент настройке будет показан QR code, который содержит текст вида:
#package #security
Данный рецепт не о том, как реализовать в своем приложение 2FA (Two-factor authentication). Для этого существуют готовые сервисы, о которых я рассказывал на React fwdays’21. Сегодня кейс из сотрудничества с QA автоматизаторами.
Для проверки приложения необходимо произвести логин пользователя. Это происходит через gmail. Переодически gmail говорит необходима дополнительная проверка – неизвестное устройство. Варианты решения отправка смс или отправка емейл не подходят, так как требуют дождаться этих смс/емейлов, способа их получения, парсинга и т.п.
В данном кейсе правильно использовать google authenticator. Данный 2FA способ виден, только если вы добавили номер телефона. В момент настройке будет показан QR code, который содержит текст вида:
otpauth://totp/Google:<EMAIL>?secret=<SECRET>&issuer=Google
Для того, чтобы генерировать token валидные 30 секунд вам достаточно знания secret. В этом поможет пакет otplib. Пакет позволяет генерировать и проверять не только для authenticator, но One Time Passwords, но как я уже говорил, для этого лучше использовать готовые решения.Как подтянуть TypeScript?
#typenoscript #code_pattern
Лучший способ тренировки паттернов кодирование это решений задач. Для этого отлично подойдет проект type-challenges. Каждая из задач предлагает написать свой тип. Есть встроенная проверка. Как это работает можно глянуть на Hello World примере.
В Readme проекта задачи отсортированы по темам и уровням сложности. Некоторые задачи начального уровня предлагают реализовать built-in тип, т.е. который уже есть в TypeScript.
#typenoscript #code_pattern
Лучший способ тренировки паттернов кодирование это решений задач. Для этого отлично подойдет проект type-challenges. Каждая из задач предлагает написать свой тип. Есть встроенная проверка. Как это работает можно глянуть на Hello World примере.
В Readme проекта задачи отсортированы по темам и уровням сложности. Некоторые задачи начального уровня предлагают реализовать built-in тип, т.е. который уже есть в TypeScript.
GitHub
GitHub - type-challenges/type-challenges: Collection of TypeScript type challenges with online judge
Collection of TypeScript type challenges with online judge - type-challenges/type-challenges
Зачем нужен Symbol в JavaScript?
#code_pattern
В ECMAScript2015 (ES6) появился примитивный тип Symbol. Он используется, чтобы создавать уникальные идентификаторы. Пример:
Основное назначение Symbol это работа со встроенными фичами языка. Для этого существуют Well-known Symbols, такие как:
- Symbol.iterator
- Symbol.hasInstance
- Symbol.toStringTag
- и т.д., подробней об встроенных символах смотри typenoscript doc или на habr.
Well-known Symbols, используются на системном уровне программирования, т.е. на уровне библиотек и фреймворков. На прикладном уровне, т.е. на уровне написания кода приложения, а не библиотек, устоявшейся практикой является использование Symbol в декораторах на TypeScript. Пример:
Стоит еще знать об Symbol.for и Symbol.keyFor, которые позволяют работать с shared Symbol. По своей сути это глобальные переменные в shared Symbol scope, поэтому опытные программисты стараются их избегать.
#code_pattern
В ECMAScript2015 (ES6) появился примитивный тип Symbol. Он используется, чтобы создавать уникальные идентификаторы. Пример:
const first = Symbol('example')
const second = Symbol('example')
first === first // true
first === second // false
Т.е. создать второй раз тот же самый идентификатор нельзя. Их используют для определения свойств объектов, т.е. обращения к его ключам.Основное назначение Symbol это работа со встроенными фичами языка. Для этого существуют Well-known Symbols, такие как:
- Symbol.iterator
- Symbol.hasInstance
- Symbol.toStringTag
- и т.д., подробней об встроенных символах смотри typenoscript doc или на habr.
Well-known Symbols, используются на системном уровне программирования, т.е. на уровне библиотек и фреймворков. На прикладном уровне, т.е. на уровне написания кода приложения, а не библиотек, устоявшейся практикой является использование Symbol в декораторах на TypeScript. Пример:
import { SetMetadata } from '@nestjs/common';
export const isPublic = Symbol('isPublic');
export function Public() {
return SetMetadata(isPublic, true);
}
Таким образом можно вы можете гарантировать, что не произойдет коллизии в чтение/записи метаданных из ваших объектов.Стоит еще знать об Symbol.for и Symbol.keyFor, которые позволяют работать с shared Symbol. По своей сути это глобальные переменные в shared Symbol scope, поэтому опытные программисты стараются их избегать.
www.typenoscriptlang.org
Documentation - Symbols
Using the JavaScript Symbol primitive in TypeScript
👍2