Вот так выглядит пирамида тестирования с точки зрения #Nodejs разработчика.
- Linting обеспечивает соблюдения код-стайла и отлавливает возможные ошибки синтаксиса. Используеться eslint.
- Type checking проверяет типы или js doc c помощью TypeScript.
- Unit tests не требуют запуска отдельного Node.js процесса. Тестируют отдельные функции или методы с помощью Jest. Активно используют моки. Позволяет мерять уровень покрытия кода тестами. Использует подходы white box testing.
- Integration tests требуют запуска Node.js процесса. Проверяют бизнесу логику c помощью Jest и различных библиотек по работе с API/Bus/etc. Моки если и используются, то только на уровне 3rd-pary. Использует подходы gray box testing.
- e2e требуют запуска не только Node.js процесса, но и клиентского кода. Т.е. запускает все приложения BE+FE. Имитирует поведение пользователя, проверяя бизнесу логику всего приложения. Использует подходы black box testing. Зона отвественности QA-ев.
- Linting обеспечивает соблюдения код-стайла и отлавливает возможные ошибки синтаксиса. Используеться eslint.
- Type checking проверяет типы или js doc c помощью TypeScript.
- Unit tests не требуют запуска отдельного Node.js процесса. Тестируют отдельные функции или методы с помощью Jest. Активно используют моки. Позволяет мерять уровень покрытия кода тестами. Использует подходы white box testing.
- Integration tests требуют запуска Node.js процесса. Проверяют бизнесу логику c помощью Jest и различных библиотек по работе с API/Bus/etc. Моки если и используются, то только на уровне 3rd-pary. Использует подходы gray box testing.
- e2e требуют запуска не только Node.js процесса, но и клиентского кода. Т.е. запускает все приложения BE+FE. Имитирует поведение пользователя, проверяя бизнесу логику всего приложения. Использует подходы black box testing. Зона отвественности QA-ев.
На следущей неделе конференция Fwdays: JS is back!
В течение основного дня (27 ноября) будет мой доклад "Разработка на Node.js в 2022: тренды и приемы". Его можно послушать бесплатной в рамках Free Ticket
В дополнительный день (1 декабря) будет мой воркшоп Nest.js tips and tricks. Для просмотра нужен Full Ticket. Промокод для его покупки 👉 node_recipes_fwdays
Программа: https://bit.ly/3DCco0E
До встречи в эфире!
В течение основного дня (27 ноября) будет мой доклад "Разработка на Node.js в 2022: тренды и приемы". Его можно послушать бесплатной в рамках Free Ticket
В дополнительный день (1 декабря) будет мой воркшоп Nest.js tips and tricks. Для просмотра нужен Full Ticket. Промокод для его покупки 👉 node_recipes_fwdays
Программа: https://bit.ly/3DCco0E
До встречи в эфире!
Как сделать object deep clone?
#nodejs_api
Как вы знаете объекты в отличие от примитивов передаются по ссылке, а не по значению. Поэтому, когда вам нужна копия объекта, приходиться прибегать к определенным ухищрениям.
Native JavaScript предлагает два варианта копирования:
– Через spread оператор
– Через Object.assign
Эти варианты работают только на первом уровне объекта. Для глубокого копирования необходимо использовать рекурсию или пакеты (см lodash.cloneDeep). В простых случаях можно использовать
Текущий способ для Node.js это использование модуля v8:
Но через год это измениться. Задача настолько часто встречается, что разработчики JS движков придумали structuredClone. Пока внедрено только в Firefox 94 и Node.js v17.
#nodejs_api
Как вы знаете объекты в отличие от примитивов передаются по ссылке, а не по значению. Поэтому, когда вам нужна копия объекта, приходиться прибегать к определенным ухищрениям.
Native JavaScript предлагает два варианта копирования:
– Через spread оператор
const copied = { ...original }– Через Object.assign
const copied = Object.assign({}, original)Эти варианты работают только на первом уровне объекта. Для глубокого копирования необходимо использовать рекурсию или пакеты (см lodash.cloneDeep). В простых случаях можно использовать
JSON.parse(JSON.stringify(obj)), но имейте ввиду так можно потерять данные.Текущий способ для Node.js это использование модуля v8:
const v8 = require('v8');const copied = v8.deserialize(v8.serialize(original))Но через год это измениться. Задача настолько часто встречается, что разработчики JS движков придумали structuredClone. Пока внедрено только в Firefox 94 и Node.js v17.
👍2
Как технологии будут востребованы для Node.js разработки в 2022?
#tech_stack #list
Попробую предсказать тренды 2022.
Будут экспоненциально расти, т.е. стоит учить на опережение:
– OpenTelemetry для метрик разработки
– Headless CMS (нужны для JAMstack)
– Интеграция, использование и/или переход с NoCode решений (бизнес делает на них прототипы, которые нужно развивать или переписывать с 0)
Будут продолжать расти, т.е. стоит учить чтобы быть в тренде:
– API поверх AI или data-science моделей. Продолжение роста за счет персонализаций. Гуглить Internet Of Behavior
– Crypto, всякие смарт контракты, NFT – да-да в мире слишко много денег
– Internet of Things. Для начала попробуйте сделать свой Smart Home
Будут по-прежнему востребованы, т.е. учить не поздно:
– TypeScript как основной язык для сложных проектов
– DevOps практики CI/CD с помощью Gitlab или GitHub Actions, 12 factor
– Cloud инструменты в любом на ваш выбор провайдере AWS, GSP, Azure
– GraphQL на базе Apollo Server
#tech_stack #list
Попробую предсказать тренды 2022.
Будут экспоненциально расти, т.е. стоит учить на опережение:
– OpenTelemetry для метрик разработки
– Headless CMS (нужны для JAMstack)
– Интеграция, использование и/или переход с NoCode решений (бизнес делает на них прототипы, которые нужно развивать или переписывать с 0)
Будут продолжать расти, т.е. стоит учить чтобы быть в тренде:
– API поверх AI или data-science моделей. Продолжение роста за счет персонализаций. Гуглить Internet Of Behavior
– Crypto, всякие смарт контракты, NFT – да-да в мире слишко много денег
– Internet of Things. Для начала попробуйте сделать свой Smart Home
Будут по-прежнему востребованы, т.е. учить не поздно:
– TypeScript как основной язык для сложных проектов
– DevOps практики CI/CD с помощью Gitlab или GitHub Actions, 12 factor
– Cloud инструменты в любом на ваш выбор провайдере AWS, GSP, Azure
– GraphQL на базе Apollo Server
TypeStack и NestJS
#nestjs
Сегодня обзор новостей по TypeStack. Описание этого стэка говорит само за себя: Decorator based frameworks and libraries for Node and browser. Он важен для NestJS комьюнити:
Стоить отметить две проблемы
А теперь хроника событий:
– 12 октября выявленная security issue в
– фикса нет вплоть до 28 октября, поэтому Камиль делает форк, который можно установить как
– 20 ноября наконец-то выходят фиксы, но с брейкинг чеджами.
– команда NestJS рассматривает переход на форки в рамках 9 версии, которая не известна когда будет.
Какие выводы из этой истории:
– Во-первых, обновите пакет если вы еще этого не сделали
– Во-вторых, используйте в CI/CD npm audit, чтобы знать о проблемах сразу
– Во-третьих, проверьте может ли ваш код перейти на
– В-четвертых, думайте о технической инфляции и рисках.
#nestjs
Сегодня обзор новостей по TypeStack. Описание этого стэка говорит само за себя: Decorator based frameworks and libraries for Node and browser. Он важен для NestJS комьюнити:
routing-controllers – вдохновитель NestJS, а class-validator/class-transformer входят в NestJS стэк.Стоить отметить две проблемы
class-validator/class-transformer, во-первых их редко обновляют – нет маинтейнеров, во-вторых имеют версии 0.*. Это означает возможность breaking changes между минорными релизами. Позиция Камиля, создателя NestJS, по этому поводу была я не вижу значительных проблем.А теперь хроника событий:
– 12 октября выявленная security issue в
class-validator– фикса нет вплоть до 28 октября, поэтому Камиль делает форк, который можно установить как
@nestjs/class-validator. Аналогичные форк есть и для class-transformer.– 20 ноября наконец-то выходят фиксы, но с брейкинг чеджами.
– команда NestJS рассматривает переход на форки в рамках 9 версии, которая не известна когда будет.
Какие выводы из этой истории:
– Во-первых, обновите пакет если вы еще этого не сделали
– Во-вторых, используйте в CI/CD npm audit, чтобы знать о проблемах сразу
– Во-третьих, проверьте может ли ваш код перейти на
@nestjs/class-validator, как более поддерживаемый.– В-четвертых, думайте о технической инфляции и рисках.
#announcement #partner_material
Присоединяйся к NIX TESTATHON!
Проверь, на что ты способен в условиях ограниченного времени и полной свободы действий!
На протяжении 4 часов ты будешь тестировать Android-приложение. Твоя цель — вместе с командой обнаружить и описать самые интересные и значимые дефекты и проблемы. В результате ты сможешь повлиять на качество и развитие одного из харьковских стартапов в целом.
Когда: 4 декабря, с 10:30 до 18:30
Где: в чате Discord
Формат: онлайн
Мы приглашаем тестировщиков уровня Junior+ и Middle.
Чтобы стать участником NIX TESTATHON, сделай три простых шага:
🔸отправь заявку до 29 ноября
🔸выполни небольшое тестовое задание (всего три вопроса)
🔸получи приглашение и подключайся к тестатону!
Ссылку на тестовое задание мы отправим на твою почту после регистрации.
Присоединяйся к NIX TESTATHON!
Проверь, на что ты способен в условиях ограниченного времени и полной свободы действий!
На протяжении 4 часов ты будешь тестировать Android-приложение. Твоя цель — вместе с командой обнаружить и описать самые интересные и значимые дефекты и проблемы. В результате ты сможешь повлиять на качество и развитие одного из харьковских стартапов в целом.
Когда: 4 декабря, с 10:30 до 18:30
Где: в чате Discord
Формат: онлайн
Мы приглашаем тестировщиков уровня Junior+ и Middle.
Чтобы стать участником NIX TESTATHON, сделай три простых шага:
🔸отправь заявку до 29 ноября
🔸выполни небольшое тестовое задание (всего три вопроса)
🔸получи приглашение и подключайся к тестатону!
Ссылку на тестовое задание мы отправим на твою почту после регистрации.
Сегодня черная пятница. Поэтому поделюсь топ-3 моих покупок за последние несколько лет, которые позволили быть производительней.
3️⃣ Годовая подписка на Linux Academy.
Опыт использования: c 2018 по 2020
Подводные камни: в момент слияния с acloud.guru были тех. сложности и я перестал ими пользоваться, как сейчас не знаю.
Результат: разобраться с новой технологией или подготовиться к сертификации было очень просто. Готовился по ним к Elastic Certified Engineer и Certified Kubernetes Application Developer.
2️⃣ Стол с регулируемой высотой для работы стоя/сидя.
Опыт использования: 3 года.
Подводные камни: столешницу лучше заказать под себя, чтобы попасть в дизайн и был удобный вырез с подпоркой для рук.
Результат: после овертаймов перестала болеть спина.
1️⃣ MacBook на M1.
Опыт использования: с сентября 2021
Подводные камни: простой перенос с intel процессора не подойдет, все нужно ставить с нуля, чтобы быть на arm версии. Работа с docker чуть усложнилась
Результат: все стало работать быстрее – тайпскрипт+nest.js рестартиться на 40% быстрее, gatsbyjs собирается 15 секунд вместо 50. Сам ноут работает тише и дольше – батарея держит 8-12 часов.
3️⃣ Годовая подписка на Linux Academy.
Опыт использования: c 2018 по 2020
Подводные камни: в момент слияния с acloud.guru были тех. сложности и я перестал ими пользоваться, как сейчас не знаю.
Результат: разобраться с новой технологией или подготовиться к сертификации было очень просто. Готовился по ним к Elastic Certified Engineer и Certified Kubernetes Application Developer.
2️⃣ Стол с регулируемой высотой для работы стоя/сидя.
Опыт использования: 3 года.
Подводные камни: столешницу лучше заказать под себя, чтобы попасть в дизайн и был удобный вырез с подпоркой для рук.
Результат: после овертаймов перестала болеть спина.
1️⃣ MacBook на M1.
Опыт использования: с сентября 2021
Подводные камни: простой перенос с intel процессора не подойдет, все нужно ставить с нуля, чтобы быть на arm версии. Работа с docker чуть усложнилась
Результат: все стало работать быстрее – тайпскрипт+nest.js рестартиться на 40% быстрее, gatsbyjs собирается 15 секунд вместо 50. Сам ноут работает тише и дольше – батарея держит 8-12 часов.
Через несколько минут стартует мой доклад на онлайн конференции: https://fwdays.com/en/event/js-autumn-fwdays-2021
Слады: https://speakerdeck.com/galkin/node-dot-js-development-in-2022
После доклада небольшой голосовой чат в дискорде: https://discord.gg/8sNcQUYTua
Вопросы так же можно задать под этим постом.
Слады: https://speakerdeck.com/galkin/node-dot-js-development-in-2022
После доклада небольшой голосовой чат в дискорде: https://discord.gg/8sNcQUYTua
Вопросы так же можно задать под этим постом.
OpenJS Foundation дает скидки на Node.js Cerfification. Напомню их две: Node.js Services Development Certification и Node.js Application Development Certification.
Варианты:
– МегаБандл: обе сертификация и тренинги к ним –$1150 $399
– Бандл: одна сертификация + тренинг –$575 $199
– Обе сертификации –$375 $187.50
Лично я рекомендую брать просто сертификацию без тренинга. Тренинги у Linux Foundation мне всегда казались слабоватыми.
Источник
Варианты:
– МегаБандл: обе сертификация и тренинги к ним –
– Бандл: одна сертификация + тренинг –
– Обе сертификации –
Лично я рекомендую брать просто сертификацию без тренинга. Тренинги у Linux Foundation мне всегда казались слабоватыми.
Источник
Как проверить, что строка timezone или encoding?
#nodejs_api
Для того, чтобы проверить что строка является таймзоной можно использовать Internationalization модуль.
Для проверки кодировки (encoding) можно использовать Buffer.isEncoding.
Собственно цель сегодняшнего рецепта напомнить, что часть buildin modules в #nodejs являются глобальными и их не нужно импортировать.
#nodejs_api
Для того, чтобы проверить что строка является таймзоной можно использовать Internationalization модуль.
function isTimezone(str) { try { Intl.DateTimeFormat(undefined, { timeZone: str }); return true; } catch (ex) { return false; }}Для проверки кодировки (encoding) можно использовать Buffer.isEncoding.
Собственно цель сегодняшнего рецепта напомнить, что часть buildin modules в #nodejs являются глобальными и их не нужно импортировать.
Вышла новая версия 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. Теперь он корректно обрабатывает домены с дефисом.
Мое личное мнение, необходимость обновлять проекты – низкая.
В него входят:
– обновление npm с 8.1.0 до 8.1.2
– обновление V8 9.4.146.19 до 9.4.146.24
– обновление c-ares (отвечает за работу с DNS)
Единственное значимое изменение это багфикс в dns.resolve4. Теперь он корректно обрабатывает домены с дефисом.
Мое личное мнение, необходимость обновлять проекты – низкая.
13 способов запустить веб-приложение в Интернет
#worth_seeing
Сегодня в рекомендациях к просмотру видео с конференции JavaScript fwdays’21, которая проходила в начале лета. Докладчик Андрей Шумада постоянный член программного комитета конференций Fwdays, судья DEV Challenge и регулярный докладчик на JS конференциях.
В своем докладе Андрей делает разбор как задеплоить приложение, причем как SPA, так и Node.js. Доклад идет от домашнего компьютера к Kubernetes. Завершает доклад сравнительная таблица всех разобранных способов.
Слайды доступны на сайте конференции.
#worth_seeing
Сегодня в рекомендациях к просмотру видео с конференции JavaScript fwdays’21, которая проходила в начале лета. Докладчик Андрей Шумада постоянный член программного комитета конференций Fwdays, судья DEV Challenge и регулярный докладчик на JS конференциях.
В своем докладе Андрей делает разбор как задеплоить приложение, причем как SPA, так и Node.js. Доклад идет от домашнего компьютера к Kubernetes. Завершает доклад сравнительная таблица всех разобранных способов.
Слайды доступны на сайте конференции.
YouTube
13 способів запустити веб-додаток в Інтернет [ukr] / Андрій Шумада
Відео з онлайн-конференції JavaScript fwdays'21, яка пройшла з 1 по 8 червня 2021 року.
Опис доповіді:
Ну от ми написали наш додаток. На Node.js, React чи Angular. І що далі? Як ваше творіння має побачити весь Інтернет, ну або хоча б мама, замовник або друзі.…
Опис доповіді:
Ну от ми написали наш додаток. На Node.js, React чи Angular. І що далі? Як ваше творіння має побачити весь Інтернет, ну або хоча б мама, замовник або друзі.…
Знакомство с Node.js
#worth_seeing
В рамках Яндекс Академии существует youtube канал Фронтенд. Сегодняшнее видео как раз с этого канала. По сути это три лекции склеенные в одно видео – смотрите таймкоды.
Лекции будут полезны начинающим разработчикам. В них Герман Волков сделал толково объясняет как работать с #nodejs.
#worth_seeing
В рамках Яндекс Академии существует youtube канал Фронтенд. Сегодняшнее видео как раз с этого канала. По сути это три лекции склеенные в одно видео – смотрите таймкоды.
Лекции будут полезны начинающим разработчикам. В них Герман Волков сделал толково объясняет как работать с #nodejs.
YouTube
Node.js
Знакомимся с Node.js: история создания, простейшие скрипты, основные возможности. Углубляемся в теорию: модульная система CommonJS, Streams, дочерние процессы, Event Loop. Применяем на практике: сервер на Node.js, знакомство с Express, React на сервере, пример…
Какие 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 решение и т.д.
#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 решение и т.д.
Хочу поделиться каналом Хороший разработчик знает. Его ведёт Павел Поляков, разработчик с 15-летним опытом, живущий сейчас в Германии. Пишет посты с уклоном в soft skills и инжиниринг менеджмент.
Примеры постов:
🔗 Про продуктивные конфликты
🔗 Про Рождественский календарь для разработчика
🔗 Все как код
Контент на канале будет интересен для Middle+ уровня, когда инвестиции времени в софт-скилы начинают приносить больше пользы.
Примеры постов:
🔗 Про продуктивные конфликты
🔗 Про Рождественский календарь для разработчика
🔗 Все как код
Контент на канале будет интересен для Middle+ уровня, когда инвестиции времени в софт-скилы начинают приносить больше пользы.
Telegram
Good dev knows
Everything what the good dev shall know. Stories, hard skills, soft skills. Regularly.
Instagram: https://www.instagram.com/gooddevknows/
Questions: @PavloPoliakov
Instagram: https://www.instagram.com/gooddevknows/
Questions: @PavloPoliakov
Что такое S3 Object Lambda и как ее использовать?
#aws
В марте 2021 AWS представили новый тип Lambdа – S3 Object. Она используется, чтобы обработке и изменения запросов к файлам в S3. Примеры использования:
– ресайзинг картинок
– мутация данных в зависимости от того, кто сделал запрос на S3.
– gzip на лету во время запроса
Еще раз напомню, что не стоит использовать Node.js как прокси для загрузки файла в S3. Для этого существуют signed url.
Ссылки по теме:
– Анонс в блоге
– Документация
#aws
В марте 2021 AWS представили новый тип Lambdа – S3 Object. Она используется, чтобы обработке и изменения запросов к файлам в S3. Примеры использования:
– ресайзинг картинок
– мутация данных в зависимости от того, кто сделал запрос на S3.
– gzip на лету во время запроса
Еще раз напомню, что не стоит использовать Node.js как прокси для загрузки файла в S3. Для этого существуют signed url.
Ссылки по теме:
– Анонс в блоге
– Документация
Data Structures Easy to Advanced Course
#worth_seeing
Типичная проблема JS разработчиков – отсутствие фундаментального образования. Сегодняшняя рекомендация призвана помочь с структурами данных. Автор смог уложить в 8 часов, то что в университете растянут на один-два семестра. Примеры кода по традиции приведены на Java. Отмечу, что видео идет в youtube аккаунте freeCodeCamp, ресурса который можно смело рекомендовать для начинающих разработчиков.
#worth_seeing
Типичная проблема JS разработчиков – отсутствие фундаментального образования. Сегодняшняя рекомендация призвана помочь с структурами данных. Автор смог уложить в 8 часов, то что в университете растянут на один-два семестра. Примеры кода по традиции приведены на Java. Отмечу, что видео идет в youtube аккаунте freeCodeCamp, ресурса который можно смело рекомендовать для начинающих разработчиков.
YouTube
Data Structures Easy to Advanced Course - Full Tutorial from a Google Engineer
Learn and master the most common data structures in this full course from Google engineer William Fiset. This course teaches data structures to beginners using high quality animations to represent the data structures visually.
You will learn how to code…
You will learn how to code…
👍2
Команда Telegram выкатила обновление:
- нативные реакции (я их включил в чате и на канале)
- спойлерывыглядит вот так
Другие фичи в блоге.
Лично для меня обновление прям новогодний подарок. До этого был выбор или лайки, или комменты.
- нативные реакции (я их включил в чате и на канале)
- спойлеры
Другие фичи в блоге.
Лично для меня обновление прям новогодний подарок. До этого был выбор или лайки, или комменты.
👍70🔥28🎉23😱15🤩11😁4💩2👎1