Node.js Recipes
3.23K subscribers
174 photos
7 videos
1 file
622 links
По буднях нотатки по #Nodejs розробці, по вихідним огляди конференцій та доповідей (с) @galkin_nikita
Download Telegram
Вот так выглядит пирамида тестирования с точки зрения #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-ев.
На следущей неделе конференция 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

До встречи в эфире!
Как сделать object deep clone?
#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
TypeStack и NestJS
#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 ноября
🔸выполни небольшое тестовое задание (всего три вопроса)
🔸получи приглашение и подключайся к тестатону!

Ссылку на тестовое задание мы отправим на твою почту после регистрации.
Сегодня черная пятница. Поэтому поделюсь топ-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 часов.
Через несколько минут стартует мой доклад на онлайн конференции: https://fwdays.com/en/event/js-autumn-fwdays-2021
Слады: 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 мне всегда казались слабоватыми.

Источник
Как проверить, что строка timezone или encoding?
#nodejs_api

Для того, чтобы проверить что строка является таймзоной можно использовать Internationalization модуль.

function isTimezone(str) {
try {
Intl.DateTimeFormat(undefined, { timeZone: str });
return true;
} catch (ex) {
return false;
}
}

Для проверки кодировки (encoding) можно использовать Buffer.isEncoding.

Собственно цель сегодняшнего рецепта напомнить, что часть buildin modules в #nodejs являются глобальными и их не нужно импортировать.
Вышла новая версия 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. Теперь он корректно обрабатывает домены с дефисом.

Мое личное мнение, необходимость обновлять проекты – низкая.
Нечего добавить!
13 способов запустить веб-приложение в Интернет
#worth_seeing

Сегодня в рекомендациях к просмотру видео с конференции JavaScript fwdays’21, которая проходила в начале лета. Докладчик Андрей Шумада постоянный член программного комитета конференций Fwdays, судья DEV Challenge и регулярный докладчик на JS конференциях.

В своем докладе Андрей делает разбор как задеплоить приложение, причем как SPA, так и Node.js. Доклад идет от домашнего компьютера к Kubernetes. Завершает доклад сравнительная таблица всех разобранных способов.

Слайды доступны на сайте конференции.
Знакомство с Node.js
#worth_seeing

В рамках Яндекс Академии существует youtube канал Фронтенд. Сегодняшнее видео как раз с этого канала. По сути это три лекции склеенные в одно видео – смотрите таймкоды.

Лекции будут полезны начинающим разработчикам. В них Герман Волков сделал толково объясняет как работать с #nodejs.
Какие 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 решение и т.д.
Хочу поделиться каналом Хороший разработчик знает. Его ведёт Павел Поляков, разработчик с 15-летним опытом, живущий сейчас в Германии. Пишет посты с уклоном в soft skills и инжиниринг менеджмент.

Примеры постов:
🔗 Про продуктивные конфликты
🔗 Про Рождественский календарь для разработчика
🔗 Все как код

Контент на канале будет интересен для Middle+ уровня, когда инвестиции времени в софт-скилы начинают приносить больше пользы.
Что такое S3 Object Lambda и как ее использовать?
#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, ресурса который можно смело рекомендовать для начинающих разработчиков.
👍2
Команда Telegram выкатила обновление:
- нативные реакции (я их включил в чате и на канале)
- спойлеры выглядит вот так
Другие фичи в блоге.

Лично для меня обновление прям новогодний подарок. До этого был выбор или лайки, или комменты.
👍70🔥28🎉23😱15🤩11😁4💩2👎1