Frontend Stars Meetup
#announcement
Ребята из AllStars-IT завтра проводят offline meetup.
Не знаю как лучше написать О-Ф-Ф-Л-А-Й-Н! или Offline is the new luxury.
Программа:
➡️ Michael Hladky (Google Developer Expert, Microsoft MVP) с докладом Angular Performance Tuning with Zone-Flags. Доклад уже есть в интернете. Для #nodejs разработчиков будет полезна часть связанная с анализом flame-graph. Доклад будет на английском, а докладчик онлайн.
➡️ Александр Головатый (Senior Full-Stack-разработчик с 15-ти летним опытом) с докладом Chrome Extension With React. Александр делал первый доклад по данной теме еще 3 года назад. Ему действительно есть чем поделиться. Доклад будет на английском, а докладчик оффлайн.
➡️ Q&A и after-party.
Формат: оффлайн и онлайн
Участие: бесплатно
Регистрация: http://bit.ly/FrontendMeetup
Дисклеймер: мероприятие проводиться в рамках HR-брендинга компании AllStars-IT
#announcement
Ребята из AllStars-IT завтра проводят offline meetup.
Не знаю как лучше написать О-Ф-Ф-Л-А-Й-Н! или Offline is the new luxury.
Программа:
➡️ Michael Hladky (Google Developer Expert, Microsoft MVP) с докладом Angular Performance Tuning with Zone-Flags. Доклад уже есть в интернете. Для #nodejs разработчиков будет полезна часть связанная с анализом flame-graph. Доклад будет на английском, а докладчик онлайн.
➡️ Александр Головатый (Senior Full-Stack-разработчик с 15-ти летним опытом) с докладом Chrome Extension With React. Александр делал первый доклад по данной теме еще 3 года назад. Ему действительно есть чем поделиться. Доклад будет на английском, а докладчик оффлайн.
➡️ Q&A и after-party.
Формат: оффлайн и онлайн
Участие: бесплатно
Регистрация: http://bit.ly/FrontendMeetup
Дисклеймер: мероприятие проводиться в рамках HR-брендинга компании AllStars-IT
👍1
Что должен уметь написать Senior Node.js разработчик?
#architecture
У меня много идей для докладов. Одна из них "Не только Web API". Большинство #nodejs разработчиков работают в web проектах и не умеют использовать Node.js для чего-то другого.
Для Web API много задач. Выбрать нужный протокол REST, RPC, SSE, GraphQL. Обеспечить нужный latency. Дать документацию. Исключить breaking change, что особенно важно в мобайл проектах. Но стоит добавить что-то не стандартное и разработчик теряется.
Вот мой личный топ-10 фичей или приложений, опыт создания которых помогает прокачать навыки:
➡️ Market-place. Пример: Uber, Airbnb
➡️ Поддержка реал-тайма. Пример: мессенджер, биржевые графики
➡️ Чат-боты. Пример: бот в телеграме, FB
➡️ Поисковая система. Пример: умный поиск по сайту, Google
➡️ Видео стриминг. Пример: Zoom
➡️ Картографический сервис. Пример: Google map
➡️ Collaborative real-time editor. Пример: Google Docs
➡️ CLI. Пример: npm, yarn, @nestjs/cli
➡️ REPL. Пример: Mongo shell
➡️ Game Server как пошаговый, так и реал-тайм. Пример: Монополия
#architecture
У меня много идей для докладов. Одна из них "Не только Web API". Большинство #nodejs разработчиков работают в web проектах и не умеют использовать Node.js для чего-то другого.
Для Web API много задач. Выбрать нужный протокол REST, RPC, SSE, GraphQL. Обеспечить нужный latency. Дать документацию. Исключить breaking change, что особенно важно в мобайл проектах. Но стоит добавить что-то не стандартное и разработчик теряется.
Вот мой личный топ-10 фичей или приложений, опыт создания которых помогает прокачать навыки:
➡️ Market-place. Пример: Uber, Airbnb
➡️ Поддержка реал-тайма. Пример: мессенджер, биржевые графики
➡️ Чат-боты. Пример: бот в телеграме, FB
➡️ Поисковая система. Пример: умный поиск по сайту, Google
➡️ Видео стриминг. Пример: Zoom
➡️ Картографический сервис. Пример: Google map
➡️ Collaborative real-time editor. Пример: Google Docs
➡️ CLI. Пример: npm, yarn, @nestjs/cli
➡️ REPL. Пример: Mongo shell
➡️ Game Server как пошаговый, так и реал-тайм. Пример: Монополия
Audio
#voice_chat
Гость: Тимур Шемсединов, CTO at Salucyber, главный архитектор технологического стека Metarhia, автор более 200 видео-лекция по веб-разработке.
Вопросы:
❓ Что такое Metarhia? Какую проблему он решает?
❓ Какие проблемы у тайпскрипта?
Дисклеймер – в комментария говорят, что ничего нового не услышали.
Гость: Тимур Шемсединов, CTO at Salucyber, главный архитектор технологического стека Metarhia, автор более 200 видео-лекция по веб-разработке.
Вопросы:
❓ Что такое Metarhia? Какую проблему он решает?
❓ Какие проблемы у тайпскрипта?
Дисклеймер – в комментария говорят, что ничего нового не услышали.
Что такое Custom URL Protocol Scheme?
#architecture
В заметке об конфигурации #nodejs приложений я рекомендую использовать connection string. Пример:
postgresql тут определяет схему протокола в URI. Общепринятыми схемами являются:
- http
- https
- ws
- mailto
- и так далее. Список в wiki
Схема протокола позволяет выбрать правильное приложение для открытия ресурса. Например ссылка чтобы открыть заметку об конфигурации сразу в телеграмме имеет вид: tg://resolve?domain=node_recipes&post=47
Зачем это знать Node.js разработчику? В BFF (backend for frontend) ваше Web API endpoints должны соответствовать ссылкам для mobile/desktop приложений.
#architecture
В заметке об конфигурации #nodejs приложений я рекомендую использовать connection string. Пример:
postgresql://postgres:password@localhost:5432/databasepostgresql тут определяет схему протокола в URI. Общепринятыми схемами являются:
- http
- https
- ws
- mailto
- и так далее. Список в wiki
Схема протокола позволяет выбрать правильное приложение для открытия ресурса. Например ссылка чтобы открыть заметку об конфигурации сразу в телеграмме имеет вид: tg://resolve?domain=node_recipes&post=47
Зачем это знать Node.js разработчику? В BFF (backend for frontend) ваше Web API endpoints должны соответствовать ссылкам для mobile/desktop приложений.
Observing Node.js: Using Metrics to Improve your Application Performance
#worth_seeing
Видео с OpenJS World 2021. Докладчик Guilherme Hermeto работает в Netflix. Первая часть видео это разбор метрик описывающих #nodejs приложение. Вторая же – демонстрация поведения метрик на графиках в зависимости от кода. Рекомендую не только посмотреть, но и попробовать запустить пример кода.
📕 Slides ⚙️ Code
#worth_seeing
Видео с OpenJS World 2021. Докладчик Guilherme Hermeto работает в Netflix. Первая часть видео это разбор метрик описывающих #nodejs приложение. Вторая же – демонстрация поведения метрик на графиках в зависимости от кода. Рекомендую не только посмотреть, но и попробовать запустить пример кода.
📕 Slides ⚙️ Code
YouTube
Observing Node.js: Using Metrics to Improve your Application Performance - Guilherme Hermeto
We all want to build apps that scale well, and at the same time, we need to keep the costs down. When you are scaling apps to hundreds of containers, you want to make sure you are making the best use of each instance and continually improving your app performance.…
Demystifying Database Performance Issues with sqlcommenter
#worth_seeing
Еще одно видео с OpenJS World 2021. Его можно отнести к категории промо докладов. В нем продвигается библиотека sqlcommenter, заточенная под Google Cloud Platform. В видео есть подробная демонстрация создания DB инстанса и запуск #nodejs под GCP. Эта часть будет полезна разработчикам не работавшим с GCP ранее.
Идея библиотеки использовать в DB-запросах комментарии, чтобы собирать телеметрию. Данная библиотека реализуется идеи заложенные в OpenTelemetry спецификации.
Ссылки:
- sqlcommenter
- OpenTelemetry
#worth_seeing
Еще одно видео с OpenJS World 2021. Его можно отнести к категории промо докладов. В нем продвигается библиотека sqlcommenter, заточенная под Google Cloud Platform. В видео есть подробная демонстрация создания DB инстанса и запуск #nodejs под GCP. Эта часть будет полезна разработчикам не работавшим с GCP ранее.
Идея библиотеки использовать в DB-запросах комментарии, чтобы собирать телеметрию. Данная библиотека реализуется идеи заложенные в OpenTelemetry спецификации.
Ссылки:
- sqlcommenter
- OpenTelemetry
YouTube
Demystifying Database Performance Issues with sqlcommenter - Jan Kleinert & Bala Chandrasekaran
Have you ever tried to troubleshoot a database performance issue in an application that was built using an ORM? ORMs can simplify development of applications that communicate with databases, but since the ORMs are generating the SQL statements, it can be…
MongoDB.live 2021, July 13–14, 2021
#conference
MongoDB самая популярная документная база данных. На подходе 5-ая версия. Узнать об новинках в релизе, посмотреть доклада можно будет уже 13-14 июля в ходе конференции MongoDB.live 2021.
Как обычно для Vendor конференций участие бесплатно, а доклады будут доступны к просмотру сразу после конференции. Чтобы стимулировать участников смотреть доклады онлайн и ходит по виртуальным стендап организаторы вводят систему очков. В последствие эти очки используются для розыгрыша подарков от партнеров.
Напомню, что существует MongoDB University
#conference
MongoDB самая популярная документная база данных. На подходе 5-ая версия. Узнать об новинках в релизе, посмотреть доклада можно будет уже 13-14 июля в ходе конференции MongoDB.live 2021.
Как обычно для Vendor конференций участие бесплатно, а доклады будут доступны к просмотру сразу после конференции. Чтобы стимулировать участников смотреть доклады онлайн и ходит по виртуальным стендап организаторы вводят систему очков. В последствие эти очки используются для розыгрыша подарков от партнеров.
Напомню, что существует MongoDB University
Что такое Graceful Shutdown и как его реализовать?
#architecture #nodejs_api
Девятый пункт The 12-Factor App Manifesto гласит:
это корректное завершение работы. По умолчанию #nodejs выключается не безопасно – существуют риски повреждения работоспособности приложения при последующем запуске.
Для завершения работы приложения OS отправляет Unix сигнал Node.js процессу. В зависимости от контекста работы процесса и метода его остановки это могут быть SIGINT, SIGTERM, SIGHUP и прочие. Для обработки такого сигнала существует обработчик
Вот, что я обычно рекомендую делать для корректного завершения работы:
1. Записать в лог начало выключения.
2. Закрыть входящий поток бизнес-логики. Например: прекратить прием новых задач на обработку из очереди, прекратить обработку новых входящих HTTP-запросов и т.д.
3. Установите принудительный тайм-аут для завершения текущих задач или сохраните их для дальнейшей обработки. Рекомендуемое значение этого таймаута - не более секунды.
4. Уведомить клиентов об отключении в случае постоянного подключения (ws, sse и т.п.). Это называется heartbeat-shutdown.
5. Правильно отключите все соединения. Например: база данных, очереди, кэши.
6. Зарегистрируйте завершение корректного завершения работы и остановите процесс через process.exit().
#architecture #nodejs_api
Девятый пункт The 12-Factor App Manifesto гласит:
Maximize robustness with fast startup and graceful shutdown , что в переводе означает: "Максимизируйте надёжность с помощью быстрого запуска и корректного завершения работы". Таким образом graceful shutdownэто корректное завершение работы. По умолчанию #nodejs выключается не безопасно – существуют риски повреждения работоспособности приложения при последующем запуске.
Для завершения работы приложения OS отправляет Unix сигнал Node.js процессу. В зависимости от контекста работы процесса и метода его остановки это могут быть SIGINT, SIGTERM, SIGHUP и прочие. Для обработки такого сигнала существует обработчик
process.on('<SIGNAL_NAME>', подробней в документации. Есть библиотеки для этих целей, например death. Во многих фреймворках существуют готовые методы, например в nestjs это enableShutdownHooks.Вот, что я обычно рекомендую делать для корректного завершения работы:
1. Записать в лог начало выключения.
2. Закрыть входящий поток бизнес-логики. Например: прекратить прием новых задач на обработку из очереди, прекратить обработку новых входящих HTTP-запросов и т.д.
3. Установите принудительный тайм-аут для завершения текущих задач или сохраните их для дальнейшей обработки. Рекомендуемое значение этого таймаута - не более секунды.
4. Уведомить клиентов об отключении в случае постоянного подключения (ws, sse и т.п.). Это называется heartbeat-shutdown.
5. Правильно отключите все соединения. Например: база данных, очереди, кэши.
6. Зарегистрируйте завершение корректного завершения работы и остановите процесс через process.exit().
👍1
#announcement
Сегодня выступаю с докладом об TDD в #nodejs. Это будет совместный доклад с Львовской компанией Sombra.
Доклад начинается с обзора типичной пирамиды тестирования для Node.js проекта. На каждом уровне расскажу лучшие TDD практики и покажу какие npm пакеты использую.
Участие бесплатно.
Расписание
18.30 - 19.15 - Богдан Савшак
19.15 - 19.30 - QA session
19.30 - 20.15 - Нікіта Галкін
20.15 - 20.30 - QA session
Регистрация: https://us02web.zoom.us/meeting/register/tZYvcu6gqzIuG9WgFmZUja4lP-5wlsYraKhu
До встречи в эфире!
Сегодня выступаю с докладом об TDD в #nodejs. Это будет совместный доклад с Львовской компанией Sombra.
Доклад начинается с обзора типичной пирамиды тестирования для Node.js проекта. На каждом уровне расскажу лучшие TDD практики и покажу какие npm пакеты использую.
Участие бесплатно.
Расписание
18.30 - 19.15 - Богдан Савшак
19.15 - 19.30 - QA session
19.30 - 20.15 - Нікіта Галкін
20.15 - 20.30 - QA session
Регистрация: https://us02web.zoom.us/meeting/register/tZYvcu6gqzIuG9WgFmZUja4lP-5wlsYraKhu
До встречи в эфире!
Вышла Node.js 14.17.1
#nodejs_api
Вышла патч версия. Изменения:
➡️ Модуль ICU обновлен с 68.1 на 69.1. Этот модуль, International Components for Unicode, отвечает за локализацию, таймзоны и прочее. Пример кода на где они используется
Потенциальный breaking change, если ваша бизнес логика использует нативный модуль локализации. Рабочая группа не первый раз делает релиз с новой версией ICU в патч версии. Поэтому на проекта, где используется эта фича я рекомендую использовать собственную сборку Node.js с флагом
➡️ Улучшены вывод errors stacks при использование флага
Было
Стало
Нативная альтернатива пакету source-map-support
#nodejs_api
Вышла патч версия. Изменения:
➡️ Модуль ICU обновлен с 68.1 на 69.1. Этот модуль, International Components for Unicode, отвечает за локализацию, таймзоны и прочее. Пример кода на где они используется
new Date().toLocaleString()Потенциальный breaking change, если ваша бизнес логика использует нативный модуль локализации. Рабочая группа не первый раз делает релиз с новой версией ICU в патч версии. Поэтому на проекта, где используется эта фича я рекомендую использовать собственную сборку Node.js с флагом
--with-intl=system-icu Подробней в документации. ➡️ Улучшены вывод errors stacks при использование флага
--enable-source-mapsБыло
Error: an exception at branch (*typenoscript-throw.js:20:15) -> *typenoscript-throw.ts:18:11* at Object.<anonymous> (*typenoscript-throw.js:26:1) -> *typenoscript-throw.ts:24:1* at Module._compile (node:internal/modules/cjs/loader:*)Стало
Error: an exception at *typenoscript-throw.ts:18:11* at *typenoscript-throw.ts:24:1* at Module._compile (node:internal/modules/cjs/loader:*)Нативная альтернатива пакету source-map-support
Migration to Google Cloud or How to Train your Pet
#worth_seeing
Сегодня в рекомендованных видео от дружественного комьюнити Math.random(). Его можно описать как case study. Владимир Врещ рассказывает о своем пэт проекте. Сначала о том, как он разворачивал его на Google Cloud, а потом на on premise.
Хорошие моменты на видео:
➡️оптимизация затрат в cloud-native подходе с помощью server-less
➡️ качественные диаграммы архитектуры
➡️ использование реверс индекса для поиска
➡️ отзывы на используемые инструменты
➡️ различие Cloud-native и on premise подходов
Рекомендую к просмотру не только видео, но и сам проект. У него открытый исходный код. Там есть что разобрать и #nodejs, и frontend разработчикам.
Ссылки:
🔗 Личный сайт Владимира https://vreshch.com/
🔗 Проект https://crystallography.io/
🔗 Исходный код https://github.com/chemistry
🔗 Хостинг для on premise https://www.hetzner.com/
#worth_seeing
Сегодня в рекомендованных видео от дружественного комьюнити Math.random(). Его можно описать как case study. Владимир Врещ рассказывает о своем пэт проекте. Сначала о том, как он разворачивал его на Google Cloud, а потом на on premise.
Хорошие моменты на видео:
➡️оптимизация затрат в cloud-native подходе с помощью server-less
➡️ качественные диаграммы архитектуры
➡️ использование реверс индекса для поиска
➡️ отзывы на используемые инструменты
➡️ различие Cloud-native и on premise подходов
Рекомендую к просмотру не только видео, но и сам проект. У него открытый исходный код. Там есть что разобрать и #nodejs, и frontend разработчикам.
Ссылки:
🔗 Личный сайт Владимира https://vreshch.com/
🔗 Проект https://crystallography.io/
🔗 Исходный код https://github.com/chemistry
🔗 Хостинг для on premise https://www.hetzner.com/
YouTube
Migration to Google Cloud or How to Train your Pet
In current talk will describe evolution of pet project: Redesign, Opening Source code, Migration to Google Cloud. Will share practical experience with selected components and will compare with On Premise setup. Will give some tips for fast start and prototyping…
DDD, event sourcing and CQRS – theory and practice
#worth_seeing
Возможно, вы были в этот вторник на митапе, где был доклад Богдана Савшака по DDD. Domain-driven design переводиться как предметно-ориентированное проектирование. Сегодня же я рекомендую вам посмотреть лучший доклад для #nodejs разработчиков по данной теме.
Докладчик Golo Roden отлично раскрывает эту тему. В ходе доклада по мимо DDD, он использует концепции CQRS и Event Sourcing. Получается отличная синергия. Стиль доклада написание и объяснение псевдокода, а не работа со слайдами. Это определенно уровень.
#worth_seeing
Возможно, вы были в этот вторник на митапе, где был доклад Богдана Савшака по DDD. Domain-driven design переводиться как предметно-ориентированное проектирование. Сегодня же я рекомендую вам посмотреть лучший доклад для #nodejs разработчиков по данной теме.
Докладчик Golo Roden отлично раскрывает эту тему. В ходе доклада по мимо DDD, он использует концепции CQRS и Event Sourcing. Получается отличная синергия. Стиль доклада написание и объяснение псевдокода, а не работа со слайдами. Это определенно уровень.
YouTube
DDD, event sourcing and CQRS – theory and practice
Numerous software projects fail not only because of the chosen technologies, but above all because of the lack of interdisciplinary communication. Developers and domain experts speak different languages and do not understand each other. In recent years, domain…
#conference #graphql
Hasura упрощает создание GraphQL API. Именно об этой технологии 23-24 июня пройдет конференция Hasura Day. Это Vendor-конференция. В течение двух дней будут доклады, воркшопы и дискуссионные панели. Участие бесплатно.
Напоминаю об том, что прямой конкурент тоже проводить свою конференцию – Prisma Day. Если GraphQL входит в ваш круг интересов рекомендую посетить обе конференции.
Hasura упрощает создание GraphQL API. Именно об этой технологии 23-24 июня пройдет конференция Hasura Day. Это Vendor-конференция. В течение двух дней будут доклады, воркшопы и дискуссионные панели. Участие бесплатно.
Напоминаю об том, что прямой конкурент тоже проводить свою конференцию – Prisma Day. Если GraphQL входит в ваш круг интересов рекомендую посетить обе конференции.
Как тестировать Dockerfile?
#package #docker
При анализе проектов я часто вижу, что нет проверки Dockerfile. Так на одном из проектов выяснилось, что сборка Docker image сломана два с половиной месяца.
Поэтому CI должен проверять, что:
➡️ Docker image собирается
➡️ Docker container стартует
➡️ health-check отдает успешный ответ
Если на проекте существуют e2e тесты, то #nodejs необходимо запускать как и в продакшене – как контейнер. Для этого отлично подходит пакет testcontainers. Он позволяет работать с Docker контекстом из кода. Вот пример из документации:
#package #docker
При анализе проектов я часто вижу, что нет проверки Dockerfile. Так на одном из проектов выяснилось, что сборка Docker image сломана два с половиной месяца.
Поэтому CI должен проверять, что:
➡️ Docker image собирается
➡️ Docker container стартует
➡️ health-check отдает успешный ответ
Если на проекте существуют e2e тесты, то #nodejs необходимо запускать как и в продакшене – как контейнер. Для этого отлично подходит пакет testcontainers. Он позволяет работать с Docker контекстом из кода. Вот пример из документации:
const path = require("path");const { GenericContainer } = require("testcontainers");const buildContext = path.resolve(__dirname, "dir-containing-dockerfile");const container = await GenericContainer.fromDockerfile(buildContext) .withBuildArg("ARG_KEY", "ARG_VALUE") .build();const startedContainer = await container .withExposedPorts(8080) .start();#freebies
В апреле я писал как получить месячную подписку на O'Reilly. Для этого переходим https://learning.oreilly.com/get-learning/ и используем промокод GDGCR20.
O'Reilly продает подписку к своим книгам за 500$ в год. Ее можно получить за 25$ в год. Существует организация ACM – Association for Computing Machinery и для ее членов подписка включена в орг взносы. Для развивающихся стран, куда мы с вами входим, орг. взносы составляют 25$ в год. Никаких обязательств участие в ACM не накладывает.
Кроме подписки на O'Reilly организация ACM дает доступ к Skillsoft и ScienceDirect, подробней.
Для создания учетной записи кликаем сюда и выбираем страну из списка. После регистрации и оплаты будет создан email на домене acm.org. Его необходимо использовать для авторизации на O'Reilly.
Update: От 29 июля. Было изменение цен. Профессиональная 99$, студенческая 19$.
Update 2022: ACM прекратило сотрудничество
В апреле я писал как получить месячную подписку на O'Reilly. Для этого переходим https://learning.oreilly.com/get-learning/ и используем промокод GDGCR20.
O'Reilly продает подписку к своим книгам за 500$ в год. Ее можно получить за 25$ в год. Существует организация ACM – Association for Computing Machinery и для ее членов подписка включена в орг взносы. Для развивающихся стран, куда мы с вами входим, орг. взносы составляют 25$ в год. Никаких обязательств участие в ACM не накладывает.
Кроме подписки на O'Reilly организация ACM дает доступ к Skillsoft и ScienceDirect, подробней.
Для создания учетной записи кликаем сюда и выбираем страну из списка. После регистрации и оплаты будет создан email на домене acm.org. Его необходимо использовать для авторизации на O'Reilly.
Update: От 29 июля. Было изменение цен. Профессиональная 99$, студенческая 19$.
Update 2022: ACM прекратило сотрудничество
👍1
Redis University
#freebies
Разработчики часто используют Redis как кэш. Чтобы лучше разбираться в этом инструменте я рекомендую пройти Redis University. В нем есть несколько курсов, которые регулярно обновляются.
Для #nodejs разработчиков полезны:
RU101 ➡️ Introduction to Redis Data Structures
RU102JS ➡️ Redis for JavaScript Developers
RU202 ➡️ Redis Streams
RU203 ➡️ Querying, Indexing, and Full-Text Search
Если вы отвечаете за инфраструктуру, то стоит еще пройти:
RU301 ➡️ Running Redis at Scale
RU330 ➡️ Redis Security
По окончания любого курса выдается сертификат, которым можно усилить ваше резюме. Не путайте его с сертификацией, которая стоит 120$ и включает в том числе бейдж. Она называется Redis Certified Developer и проходит под контролем живого человека. Подробней тут
#freebies
Разработчики часто используют Redis как кэш. Чтобы лучше разбираться в этом инструменте я рекомендую пройти Redis University. В нем есть несколько курсов, которые регулярно обновляются.
Для #nodejs разработчиков полезны:
RU101 ➡️ Introduction to Redis Data Structures
RU102JS ➡️ Redis for JavaScript Developers
RU202 ➡️ Redis Streams
RU203 ➡️ Querying, Indexing, and Full-Text Search
Если вы отвечаете за инфраструктуру, то стоит еще пройти:
RU301 ➡️ Running Redis at Scale
RU330 ➡️ Redis Security
По окончания любого курса выдается сертификат, которым можно усилить ваше резюме. Не путайте его с сертификацией, которая стоит 120$ и включает в том числе бейдж. Она называется Redis Certified Developer и проходит под контролем живого человека. Подробней тут
Forwarded from 🇺🇦 Math.random(): javanoscript community
Здравствуйте, друзья!
Хочу пригласить вас на доклад, о перспективном node.js фреймворке NestJS. А расскажет нам о нем Никита Галкин - человек, который знает очень много о бекенде на node.js и охотно делится с миром своими знаниями!
Никита ведет telegram канал - @node_recipes, подписывайтесь и вы найдете большое количество качественных материалов о node.js.
Подробности доклада и регистрация - https://mathrandom.com/webinar01072021
Дата: 1 июля 18:00
#nodejs #nestjs #event #stream #nikitagalkin
Хочу пригласить вас на доклад, о перспективном node.js фреймворке NestJS. А расскажет нам о нем Никита Галкин - человек, который знает очень много о бекенде на node.js и охотно делится с миром своими знаниями!
Никита ведет telegram канал - @node_recipes, подписывайтесь и вы найдете большое количество качественных материалов о node.js.
Подробности доклада и регистрация - https://mathrandom.com/webinar01072021
Дата: 1 июля 18:00
#nodejs #nestjs #event #stream #nikitagalkin
Что такое timing attack (атака по времени)?
#security #package
TL;DR Не используйте сравнение строк через
В веб-разработке мы часто не задумываемся об классической атаке на систему через анализ времени ответа. Исследование 2009 года показывает, что злоумышленник может измерять события с точностью 15–100ms в Интернете и с точностью 0.1ms в локальной сети.
Пример кода уязвимого к данной атаке:
Такое сравнение обрывается на первом же различном символе, поэтому можно по времени ответа подбирать ответ.
Безопасное по времени сравнение выглядит так:
Его можно использовать из пакета secure-compare.
Мне доводилось участвовать в спорах, где оппоненты говорили, что тут нет риска, так как задержка на запрос в базу данных и/или latency ответа не дадут злоумышленнику достаточно информации. Аргументы здравые. Вместо того, чтобы с ними спорить я задаю вопросы:
- есть ли в драйвере кэш запросов? Как он работает?
- Откуда злоумышленник проводить атаку из внешней или внутренней сети?
- Насколько большие затраты делать безопасное сравнение в сравнение с закрываемыми рисками?
#security #package
TL;DR Не используйте сравнение строк через
=== при проверке равенства секретов или токенов. Используйте безопасные сравнение с фиксированным временем – secure-compareВ веб-разработке мы часто не задумываемся об классической атаке на систему через анализ времени ответа. Исследование 2009 года показывает, что злоумышленник может измерять события с точностью 15–100ms в Интернете и с точностью 0.1ms в локальной сети.
Пример кода уязвимого к данной атаке:
function isAuthenticated(user, token) { var correctToken = FetchUserTokenFromDB(user); return token === correctToken;}Такое сравнение обрывается на первом же различном символе, поэтому можно по времени ответа подбирать ответ.
Безопасное по времени сравнение выглядит так:
let mismatch = 0;for (var i = 0; i < a.length; ++i) { mismatch |= (a.charCodeAt(i) ^ b.charCodeAt(i));}return mismatch;Его можно использовать из пакета secure-compare.
Мне доводилось участвовать в спорах, где оппоненты говорили, что тут нет риска, так как задержка на запрос в базу данных и/или latency ответа не дадут злоумышленнику достаточно информации. Аргументы здравые. Вместо того, чтобы с ними спорить я задаю вопросы:
- есть ли в драйвере кэш запросов? Как он работает?
- Откуда злоумышленник проводить атаку из внешней или внутренней сети?
- Насколько большие затраты делать безопасное сравнение в сравнение с закрываемыми рисками?
npm
npm: secure-compare
Securely compare two strings, copied from cryptiles. Latest version: 3.0.1, last published: 10 years ago. Start using secure-compare in your project by running `npm i secure-compare`. There are 79 other projects in the npm registry using secure-compare.
Audio
#voice_chat #security
Гость: Анастасия Войтова, секурити инженер в cossacklabs.com. Занимается безопасностью и защитой данных.
❓ Топ 5 security проблем типичного веб-проекта
❓ Управление рисками и угрозами – как понять, какие штуки по безопасности нужны в твоем проекте, а какие нет
❓ SSDLC, SAMM — какие тулы/подходы на каждом этапе разработке софта
❓ Где и как учить основы security? Углублено?
❓ Как выглядит найм security engineer? Карьеры
❓ Что в облаках сделано хорошо для обеспечение security, а что необходимо реализовывать самостоятельно?
Ссылки от Анастасии:
- Личный блог
- Корпоративный блог
- Об интернатуре
OWASP cсылки:
- https://owasp.org/www-project-top-ten/
- https://github.com/OWASP/ASVS
- https://owaspsamm.org/model/
Гость: Анастасия Войтова, секурити инженер в cossacklabs.com. Занимается безопасностью и защитой данных.
❓ Топ 5 security проблем типичного веб-проекта
❓ Управление рисками и угрозами – как понять, какие штуки по безопасности нужны в твоем проекте, а какие нет
❓ SSDLC, SAMM — какие тулы/подходы на каждом этапе разработке софта
❓ Где и как учить основы security? Углублено?
❓ Как выглядит найм security engineer? Карьеры
❓ Что в облаках сделано хорошо для обеспечение security, а что необходимо реализовывать самостоятельно?
Ссылки от Анастасии:
- Личный блог
- Корпоративный блог
- Об интернатуре
OWASP cсылки:
- https://owasp.org/www-project-top-ten/
- https://github.com/OWASP/ASVS
- https://owaspsamm.org/model/