Подборка node.recipes за апрель 2021
#monthly_list
Рецепты для #nodejs разработчиков:
➡️ Когда можно считать, что вышла новая версия Node.js?
➡️ Как правильно настроить TypeScript в Node.js проекте?
➡️ Как исправить код в node_modules?
➡️ Как протестировать webhook локально?
➡️ Как изменить timezone (часовой пояс) в Node.js?
➡️ Сравнение Nest.js и Koa.js с точки зрения бизнеса
➡️ Как конфигурировать Node.js приложение?
➡️ Как узнать ip пользователя в Node.js?
➡️ Как в Node.js узнать местоположение пользователя?
➡️ Какую версию npm использовать?
➡️ Как правильно написать package.json в проекте?
➡️ Как узнать источник соединение в БД?
➡️ Как вывести в браузер сколько времени обрабатывался запрос на сервере?
➡️ Как померять время выполнения команды в терминале?
➡️ Обзор Node.js v16: AbortController
➡️ Почему разработчикам необходимо знать Cloud сервисы?
freebies:
🤑 Как получить бесплатную Node.js сертификацию?
🤑 Free GitLab Certified Associate
🤑 Бесплатная месячная подписка на O'Reilly
Доклады, которые стоит посмотреть:
👀 The Benefits of a “CLI First” Development Strategy
👀 Serverless Sockets for Real Time
👀 GraphQL Summit Worldwide
👀 Can we double HTTP client throughput?
👀 Кодстайл и насилие
👀 6 способов взломать твое JavaScript приложение
Конференции, которые стоит посетить:
🎤 OpenJS World 2021
🎤 StrapiConf
🎤 Подборка конференций от Cloud провайдеров
#monthly_list
Рецепты для #nodejs разработчиков:
➡️ Когда можно считать, что вышла новая версия Node.js?
➡️ Как правильно настроить TypeScript в Node.js проекте?
➡️ Как исправить код в node_modules?
➡️ Как протестировать webhook локально?
➡️ Как изменить timezone (часовой пояс) в Node.js?
➡️ Сравнение Nest.js и Koa.js с точки зрения бизнеса
➡️ Как конфигурировать Node.js приложение?
➡️ Как узнать ip пользователя в Node.js?
➡️ Как в Node.js узнать местоположение пользователя?
➡️ Какую версию npm использовать?
➡️ Как правильно написать package.json в проекте?
➡️ Как узнать источник соединение в БД?
➡️ Как вывести в браузер сколько времени обрабатывался запрос на сервере?
➡️ Как померять время выполнения команды в терминале?
➡️ Обзор Node.js v16: AbortController
➡️ Почему разработчикам необходимо знать Cloud сервисы?
freebies:
🤑 Как получить бесплатную Node.js сертификацию?
🤑 Free GitLab Certified Associate
🤑 Бесплатная месячная подписка на O'Reilly
Доклады, которые стоит посмотреть:
👀 The Benefits of a “CLI First” Development Strategy
👀 Serverless Sockets for Real Time
👀 GraphQL Summit Worldwide
👀 Can we double HTTP client throughput?
👀 Кодстайл и насилие
👀 6 способов взломать твое JavaScript приложение
Конференции, которые стоит посетить:
🎤 OpenJS World 2021
🎤 StrapiConf
🎤 Подборка конференций от Cloud провайдеров
Node.js Recipes pinned «Подборка node.recipes за апрель 2021 #monthly_list Рецепты для #nodejs разработчиков: ➡️ Когда можно считать, что вышла новая версия Node.js? ➡️ Как правильно настроить TypeScript в Node.js проекте? ➡️ Как исправить код в node_modules? ➡️ Как протестировать…»
How to Build and Run Node Apps with Docker and Compose
#worth_seeing #docker
Доклад с прошлого DockerCon. Он особенно полезен для начинающих #nodejs разработчиков. Если вы опытный разработчик, то рекомендую посмотреть весь плейлист, откуда взят этот доклад.
#worth_seeing #docker
Доклад с прошлого DockerCon. Он особенно полезен для начинающих #nodejs разработчиков. Если вы опытный разработчик, то рекомендую посмотреть весь плейлист, откуда взят этот доклад.
YouTube
How to Build and Run Node Apps with Docker and Compose
--
Containers are an essential part of today's microservice ecosystem, as they allow developers and operators to maintain standards of reliability and reproducibility in fast-paced deployment scenarios. And while there are best practices that extend across…
Containers are an essential part of today's microservice ecosystem, as they allow developers and operators to maintain standards of reliability and reproducibility in fast-paced deployment scenarios. And while there are best practices that extend across…
Что такое Race Condition на клиенте?
#architecture
В одном из #nodejs чатов задали вопрос: "
Конкретный пример: вы делаете страницу Ethereum Blocks с live updates, получая начальные данные по REST и подпиской на обновления по WS. Клиент или теряет блок, или получить его дважды. Пускай скорость генерации блоков 1 в 13 секунд, а задержки данных между WS и REST 0.5 секунды. Расчет показывает, что есть 4% шанс не корректного поведения.
Варианты решения:
👎 REST с запросами с
👍 WS с созданием подписки на требуемые обновления. В момент создания подписки сервер отдает текущее состояние ресурса. Необходимо предусмотреть переконект с учетом последнего сообщения и множественные подписки.
🔥 Server Sent Events создан именно для таких случаев. Имеет переподключение из коробки, а подписка определяется по URL. Требует HTTP2, чтобы избежать ограничения браузера в 4 соединения. Имеет разную реализацию в браузерах, что решается с помощью event-source-polyfill. Имеет поддержку в Nest.js, см. server-sent-events
#architecture
В одном из #nodejs чатов задали вопрос: "
как думаете, норм использовать API для начальной подгрузки большого кол-ва контента, а socket.io для отправки на клиент единичных данных?" (c) Так делать не стоит. Состояние при таком подходе будет зависит от того, в каком порядке пришли сообщения. Это называется Race Condition. Чтобы такой ситуаций не было, необходимо использовать только один протокол для получения данных.Конкретный пример: вы делаете страницу Ethereum Blocks с live updates, получая начальные данные по REST и подпиской на обновления по WS. Клиент или теряет блок, или получить его дважды. Пускай скорость генерации блоков 1 в 13 секунд, а задержки данных между WS и REST 0.5 секунды. Расчет показывает, что есть 4% шанс не корректного поведения.
Варианты решения:
👎 REST с запросами с
setInterval – не верное архитектурное решение из-за повышенной нагрузки на сервер. Попытки решить через Etag 👍 WS с созданием подписки на требуемые обновления. В момент создания подписки сервер отдает текущее состояние ресурса. Необходимо предусмотреть переконект с учетом последнего сообщения и множественные подписки.
🔥 Server Sent Events создан именно для таких случаев. Имеет переподключение из коробки, а подписка определяется по URL. Требует HTTP2, чтобы избежать ограничения браузера в 4 соединения. Имеет разную реализацию в браузерах, что решается с помощью event-source-polyfill. Имеет поддержку в Nest.js, см. server-sent-events
👍1
Как использовать cron в Node.js?
#kubernetes #service #nestjs
Есть много бизнес задач делать что-то по расписанию. Для этого используют утилиту cron, а расписание описывают crontab выражением. Пример: задача – отправлять отчет на емейл каждый день в 3 часа ночи, график –
Реализовывать cron в #nodejs проекте можно по разному:
❌Cron вызов REST API. Потерян контроль, найти ошибку будет сложно.
❌Использование setInterval/setTimeout. Оставьте это авторам библиотек, сфокусируйтесь на бизнес домене.
⚠️На уровне кода cron можно реализовать одноименным пакетом. В Nest.js есть @nestjs/schedule. Стоить учесть, что только один Node.js процесс должен запускать cron, иначе приложение теряет масштабируемость. Решается введением master process.
✅ На уровне операционной системы. Встроенный OS cron будет вызывать Node.js как CLI утилиту. Хорошо в виртуальных машинах, противопоказано внутри Docker контейнеров (избегайте порождающих процессов).
Для этого используем не библиотеку аля yargs, а cli-framework (см. clipanion и его аналоги).
Для Nest.js есть пакеты nestjs-command и nestjs-console.
✅ Cloud Native подход. Зависит от облака и требуемого способа запуска (serverless или docker). Смотрим документацию облака и консультируемся с DevOps инженером.
✅Kubernetes native подход:
➡️Cron на уровне кода, но его запуск только в одной реплике. Используется StatefulSets, а мастер реплика определяется через
➡️Cron на уровне кода, но вынесен в отдельный Deployment с одной репликой.
➡️Если же задачи ресурсоемкие, то правильно использовать CronJob.
Выбирайте решение на правильном уровне!
#kubernetes #service #nestjs
Есть много бизнес задач делать что-то по расписанию. Для этого используют утилиту cron, а расписание описывают crontab выражением. Пример: задача – отправлять отчет на емейл каждый день в 3 часа ночи, график –
0 3 * * *. Разобраться с crontab поможет сервис crontab.guruРеализовывать cron в #nodejs проекте можно по разному:
❌Cron вызов REST API. Потерян контроль, найти ошибку будет сложно.
❌Использование setInterval/setTimeout. Оставьте это авторам библиотек, сфокусируйтесь на бизнес домене.
⚠️На уровне кода cron можно реализовать одноименным пакетом. В Nest.js есть @nestjs/schedule. Стоить учесть, что только один Node.js процесс должен запускать cron, иначе приложение теряет масштабируемость. Решается введением master process.
✅ На уровне операционной системы. Встроенный OS cron будет вызывать Node.js как CLI утилиту. Хорошо в виртуальных машинах, противопоказано внутри Docker контейнеров (избегайте порождающих процессов).
Для этого используем не библиотеку аля yargs, а cli-framework (см. clipanion и его аналоги).
Для Nest.js есть пакеты nestjs-command и nestjs-console.
✅ Cloud Native подход. Зависит от облака и требуемого способа запуска (serverless или docker). Смотрим документацию облака и консультируемся с DevOps инженером.
✅Kubernetes native подход:
➡️Cron на уровне кода, но его запуск только в одной реплике. Используется StatefulSets, а мастер реплика определяется через
_0 postfix. Подробней➡️Cron на уровне кода, но вынесен в отдельный Deployment с одной репликой.
➡️Если же задачи ресурсоемкие, то правильно использовать CronJob.
Выбирайте решение на правильном уровне!
Как запускать Node.js с доп. аргументами?
#nodejs_api #devops
При запуске #nodejs бывает необходимо передать дополнительные аргументы. Примеры:
➡️
➡️
➡️
Полный перечень аргументов и их использование в документации CLI.
Стоит знать об переменной окружения
#nodejs_api #devops
При запуске #nodejs бывает необходимо передать дополнительные аргументы. Примеры:
➡️
node --no-warnings app.js➡️
node --noscript='MyApp' app.js➡️
node --require dotenv/config app.jsПолный перечень аргументов и их использование в документации CLI.
Стоит знать об переменной окружения
NODE_OPTIONS. Любые значения из нее Node.js добавляет в перечень аргументов. На одном из проектов мы включаем DataDog вот таким образом: NODE_OPTIONS='--require dd-trace/init'Как документировать логику?
#architecture #service
Мало кто из #nodejs разработчиков пользуется UML диаграммами. А зря! Это очень наглядно и улучшает поддержку. Благодаря синтаксису PlantUML диаграммы можно не рисовать, а писать. Вот пример кода с картинки:
Данный код описывает самую частую диаграмму – Sequence Diagram (последовательности). Есть и другие. За примерами прошу на сайт PlantUML.
Диаграммы можно описывать как в отдельных
Для рендеринга можно использовать:
➡️ Расширение для JetBrains PlantUML integration
➡️ Расширение для Visual Code PlantUML
➡️ Онлайн версия
В комментариях напомнили альтернативу на JS – mermaid.
#architecture #service
Мало кто из #nodejs разработчиков пользуется UML диаграммами. А зря! Это очень наглядно и улучшает поддержку. Благодаря синтаксису PlantUML диаграммы можно не рисовать, а писать. Вот пример кода с картинки:
@startumlAlice -> Bob: Authentication RequestBob --> Alice: Authentication ResponseAlice -> Bob: Another authentication RequestAlice <-- Bob: another authentication Response@endumlДанный код описывает самую частую диаграмму – Sequence Diagram (последовательности). Есть и другие. За примерами прошу на сайт PlantUML.
Диаграммы можно описывать как в отдельных
.puml файлах, так и вставлять в JSDoc. Рекомендую хранить в git репозитории не только исходники, но и сгенерированные диаграммы. Это упростить изучение проекта.Для рендеринга можно использовать:
➡️ Расширение для JetBrains PlantUML integration
➡️ Расширение для Visual Code PlantUML
➡️ Онлайн версия
В комментариях напомнили альтернативу на JS – mermaid.
👍1
Voice Chat #0, сегодня 21:00-21:30 по Киеву
#announcement #voice_chat
В качестве эксперимента попробуем Q&A в Voice Chat формате.
Отобранные вопросы из #nodejs чатов:
❓
❓
❓
Присоединяйтесь послушать или задать свой вопрос.
#announcement #voice_chat
В качестве эксперимента попробуем Q&A в Voice Chat формате.
Отобранные вопросы из #nodejs чатов:
❓
ребята, какие есть способы логирования кроме winston, cosole.log(), res.send() ?? – @nodejs_ru❓
Что еще можно посмотреть или лучше даже почитать(имею в виду не книги, а может блоги какие-то хорошие) по ноде – @nodeua❓
Отвечать на вопросы на форумах - хорошая идея для подтягивания теории или практики? – @nodejs_ruПрисоединяйтесь послушать или задать свой вопрос.
Что такое Floating Promise и почему это опасно?
#code_pattern #nodejs_api
TL;DR Используйте
Floating (не отловленный, плавающий) promise как правило указывает на ошибку в коде. Если внутри Floating promise произойдет ошибка, то #nodejs процесс аварийно завершит работу. Для отлавливания таких событий существует
Отлавливать Floating promise лучше не в run time, а с помощью линтера. Для этого существуют правила:
➡️ в eslint
➡️ в typenoscript-eslint
➡️ тут мог бы быть tslint, но его уже нельзя использовать.
В определенных случаях, бизнес логика не требует ожидания завершения промиса. Тогда необходимо использовать комментарий в коде, указывающий линтеру игнорировать ошибку. Вот пример, когда REST не дожидается отправки емейла новому пользователю.
#code_pattern #nodejs_api
TL;DR Используйте
no-floating-promises и unhandledRejectionFloating (не отловленный, плавающий) promise как правило указывает на ошибку в коде. Если внутри Floating promise произойдет ошибка, то #nodejs процесс аварийно завершит работу. Для отлавливания таких событий существует
unhandledRejection. Пример из документации:process.on('unhandledRejection', (reason, promise) => { console.log('Unhandled Rejection at:', promise, 'reason:', reason);});Отлавливать Floating promise лучше не в run time, а с помощью линтера. Для этого существуют правила:
➡️ в eslint
➡️ в typenoscript-eslint
➡️ тут мог бы быть tslint, но его уже нельзя использовать.
В определенных случаях, бизнес логика не требует ожидания завершения промиса. Тогда необходимо использовать комментарий в коде, указывающий линтеру игнорировать ошибку. Вот пример, когда REST не дожидается отправки емейла новому пользователю.
import { usersRepository } from '~/repositories';import { sendConfirmationEmail } from '~/services/notifications';import logger from '~/logger';// pseudo route handlerexport async function registerUser(data: newUserDTO): { const user = await usersRepository.create(data); // eslint-disable-next-line @typenoscript-eslint/no-floating-promises sendConfirmationEmail(user) .catch(err => logger({err, user}, 'Error during sending confirmation email'); return user;}42 WebStorm Tips and Tricks
#worth_seeing
Сегодняшнее видео не доклад с конференции, а с вебинара. Оно полностью посвящено тому, как использовать WebStorm на полную мощность.
Вот hotkey к функционалу, который реально ускоряет разработку:
⌥T – refactor for selected text
⌥⌘T – surround with
⌥⌘L – reformat Code
⇧⏎ – smart new line
⌥⌘⏎ – new line before current one
⌥↑ or ⌥↓ – change selection
⇧⌥↑ or ⇧⌥↓ – move lines
Полезные ссылки по WebStorm:
➡️ ShortcutMapper
➡️ WebStorm Guide
➡️ Key Promoter X
PS На холиварный вопрос "WebStorm или VisualStudioCode?" я отвечаю "не или, а и". Для DevOps задач – VS, для разработки – WebStorm.
#worth_seeing
Сегодняшнее видео не доклад с конференции, а с вебинара. Оно полностью посвящено тому, как использовать WebStorm на полную мощность.
Вот hotkey к функционалу, который реально ускоряет разработку:
⌥T – refactor for selected text
⌥⌘T – surround with
⌥⌘L – reformat Code
⇧⏎ – smart new line
⌥⌘⏎ – new line before current one
⌥↑ or ⌥↓ – change selection
⇧⌥↑ or ⇧⌥↓ – move lines
Полезные ссылки по WebStorm:
➡️ ShortcutMapper
➡️ WebStorm Guide
➡️ Key Promoter X
PS На холиварный вопрос "WebStorm или VisualStudioCode?" я отвечаю "не или, а и". Для DevOps задач – VS, для разработки – WebStorm.
YouTube
42 WebStorm Tips and Tricks
#WebStorm brings a bunch of IDE features to professional #JavaScript and web development. Want to "level up" and learn #productivity boosters? This hands-on, fast-paced workshop covers tips across all the major product features.
Many of these tips come…
Many of these tips come…
Dev.Pro JS Conference
#conference #raffle
22-23 мая будет онлайн-конференция, где я буду выступать с докладом
Содержание доклада: ответы на вопросы, о которых нужно задумываться на разных этапах развития #nodejs проекта.
Из докладов для себя я выделил:
👀 Minko Genchev,
👀 Hannes Obweger,
доклад от того, кто реально понимает на личном опыте эту сложную тему.
Так же будет два воркшопа:
⚙️ Тимур Шемсединов
⚙️ Елена Жукова
🎤 Формат: онлайн с использование spatial.chat, лучшим инструментом для онлайн нетворкинга.
➡️ Регистрация: jsconf.dev.pro
💵 Цена: 450грн, промокод на 10% – NodeRecipes
До встречи на конференции!
#conference #raffle
22-23 мая будет онлайн-конференция, где я буду выступать с докладом
The Road to production.Содержание доклада: ответы на вопросы, о которых нужно задумываться на разных этапах развития #nodejs проекта.
Из докладов для себя я выделил:
👀 Minko Genchev,
Tools for Fast Angular Applications, даже если вы не пишете на Angular этот докладчик стоит внимания.👀 Hannes Obweger,
Frontend Engineering at a Scale, доклад от того, кто реально понимает на личном опыте эту сложную тему.
Так же будет два воркшопа:
⚙️ Тимур Шемсединов
Node.js for Enterprise, часть контента уже была в рамках FWdays.⚙️ Елена Жукова
Stunning Performance Workshop, об оптимизации загрузки фронтенда.🎤 Формат: онлайн с использование spatial.chat, лучшим инструментом для онлайн нетворкинга.
➡️ Регистрация: jsconf.dev.pro
💵 Цена: 450грн, промокод на 10% – NodeRecipes
До встречи на конференции!
Среди 80 участников розыгрыша удача улыбнулась: @Vlod_R, @habiiev, @ShGKme!
🎉🎉🎉 Поздравляем!
В ближайшее время с вами свяжется менеджер конференции и поможет оформить ваши билеты.
🎉🎉🎉 Поздравляем!
В ближайшее время с вами свяжется менеджер конференции и поможет оформить ваши билеты.
Зачем нужен тип "true" в TypeScript?
#typenoscript #worth_seeing
Докладчик сегодняшнего видео, Андрей Старовойт делает поддержку TypeScript в продуктах JetBrains. За что ему низкий поклон. Лучше него как работает TypeScript понимают только инженеры из Microsoft, которые собственно делают TypeScript.
В своем докладе Андрей рассказывает как работает литеральные типы, показывает некоторые TS паттерны и объясняет почему стоит явно указывать тип возвращаемого значения функции.
#typenoscript #worth_seeing
Докладчик сегодняшнего видео, Андрей Старовойт делает поддержку TypeScript в продуктах JetBrains. За что ему низкий поклон. Лучше него как работает TypeScript понимают только инженеры из Microsoft, которые собственно делают TypeScript.
В своем докладе Андрей рассказывает как работает литеральные типы, показывает некоторые TS паттерны и объясняет почему стоит явно указывать тип возвращаемого значения функции.
YouTube
Зачем нужен тип "true" в TypeScript?. Андрей Старовойт. JS Fest 2019 Autumn
The talk from JS Fest conference 2019 Autumn in Kyiv, Ukraine.
Литеральные типы в TypeScript, которые появились несколько лет назад, на самом деле произвели мини-революцию в языке, которую многие не заметили. Сегодня сложно представить себе TypeScript без…
Литеральные типы в TypeScript, которые появились несколько лет назад, на самом деле произвели мини-революцию в языке, которую многие не заметили. Сегодня сложно представить себе TypeScript без…
Как уменьшить потребление памяти во время TypeScript компиляции?
#typenoscript #nestjs
TL;DR Используйте skipLibCheck и понимайте import
В чате @nest_ru задали вопрос "
Расскажу об оптимизации из реального проекта с подобной проблемой. На каждом этапе оптимизации удалялся папка build как при сборке Docker-а потом запускалась команда
0️⃣ Начальное состояние:
Memory used: 1006023K Total time: 17.70s
1️⃣ Проверяем в tsconfig.json включенный флага skipLibCheck. Его нет, это типичная ошибка. После включения:
Memory used: 858580K Total time: 15.08s
2️⃣ Смотрим какие импорты библиотек можно упростить. Например,
Memory used: 432743K Total time: 9.67s
Таким образом мы сократили запуск затраты памяти в 2.3 раза и ускорили билд на 8 секунд.
#typenoscript #nestjs
TL;DR Используйте skipLibCheck и понимайте import
В чате @nest_ru задали вопрос "
Сталкнулся с такой проблемой, nest не может сбилдить проект внутри докера на слабой машине с 1gb памяти". По умолчанию Nest.js использует TypeScript для сборки. При неправильной конфигурации он может требовать больше 1GB памяти.Расскажу об оптимизации из реального проекта с подобной проблемой. На каждом этапе оптимизации удалялся папка build как при сборке Docker-а потом запускалась команда
tsc --diagnostics --project tsconfig.build.json, чтобы отследить метрики.0️⃣ Начальное состояние:
Memory used: 1006023K Total time: 17.70s
1️⃣ Проверяем в tsconfig.json включенный флага skipLibCheck. Его нет, это типичная ошибка. После включения:
Memory used: 858580K Total time: 15.08s
2️⃣ Смотрим какие импорты библиотек можно упростить. Например,
aws-sdk стоит 400Mb. На проекте она используется в одном файле. Делаем вот такой рефакторинг:import KinesisVideo from 'aws-sdk/clients/kinesisvideo';import KinesisVideoSignalingChannels from 'aws-sdk/clients/kinesisvideosignalingchannels';import type { AWSError } from 'aws-sdk/lib/error';// import { AWSError, KinesisVideo, KinesisVideoSignalingChannels } from 'aws-sdk';Memory used: 432743K Total time: 9.67s
Таким образом мы сократили запуск затраты памяти в 2.3 раза и ускорили билд на 8 секунд.
👍1
Voice Chat #1, Что там на рынке? 13 Мая 21:00-22:00
#announcement #voice_chat
В этот четверг состоится Voice Chat c Кулаковой Алесей, Business Development & Account Manager в рекрутинговом агентстве Indigo Tech Recruiters.
Мнение с обоих стороны – и кандидата, и агенства на вопросы:
❓ Какая сейчас ситуация на рынке #nodejs разработки?
❓ Как и почему меняется рынок, что на это влияет?
❓ На что смотрят клиенты и за что платят?
❓ Почему все интервью с рекрутерами такие одинаковые?
Готовьте вопросы и подключайтесь, потому что Алеся шарит.
#announcement #voice_chat
В этот четверг состоится Voice Chat c Кулаковой Алесей, Business Development & Account Manager в рекрутинговом агентстве Indigo Tech Recruiters.
Мнение с обоих стороны – и кандидата, и агенства на вопросы:
❓ Какая сейчас ситуация на рынке #nodejs разработки?
❓ Как и почему меняется рынок, что на это влияет?
❓ На что смотрят клиенты и за что платят?
❓ Почему все интервью с рекрутерами такие одинаковые?
Готовьте вопросы и подключайтесь, потому что Алеся шарит.
Node.js Recipes pinned «Voice Chat #1, Что там на рынке? 13 Мая 21:00-22:00 #announcement #voice_chat В этот четверг состоится Voice Chat c Кулаковой Алесей, Business Development & Account Manager в рекрутинговом агентстве Indigo Tech Recruiters. Мнение с обоих стороны – и кандидата…»
MongoDB University
#freebies
Начинающие #nodejs разработчики обычно выбирают первой базой данных MongoDB. Упростить ее изучение позволяют MongoDB University. В настоящий момент в каталоге 14 курсов. 6 из них объединены в Developer Learning Path.
Курсы регулярно обновляются, устаревший закрываются, а прохождение организовано по когортам, как в coursera. По окончанию выдается бесплатный сертификат. Не путайте его с MongoDB сертификацией, которая стоит 150$ и включает в том числе бейдж. Платформа отлично подходит для обучения и я смело могу рекомендовать ее в план развития.
#freebies
Начинающие #nodejs разработчики обычно выбирают первой базой данных MongoDB. Упростить ее изучение позволяют MongoDB University. В настоящий момент в каталоге 14 курсов. 6 из них объединены в Developer Learning Path.
Курсы регулярно обновляются, устаревший закрываются, а прохождение организовано по когортам, как в coursera. По окончанию выдается бесплатный сертификат. Не путайте его с MongoDB сертификацией, которая стоит 150$ и включает в том числе бейдж. Платформа отлично подходит для обучения и я смело могу рекомендовать ее в план развития.
Что такое .npmrc и почему его стоит добавить?
#cli
У npm как и других #nodejs инструментов есть конфигурация через rc файл. Вы можете разместить
Полный перечень параметров в приведен документации. Рассмотрим те, которые стоит отключить:
➡️ update-notifier – регулярно показывает сообщение, что пора обновиться. Делать этого не стоит.
➡️ fund, выводит xx packages are looking for funding. Поддержите opensource и смело выключайте.
➡️ audit, после каждого npm install показывает сжатый security audit. После добавления
Выключение всех этих параметров уменьшит количество бесполезных логов. Осталось изменить уровень loglevel с notice на error и получим
В yarn-based проектах необходимо использовать .yarnnc. Он не заменяет, а дополняет .npmrc. Посмотреть результат конфигурации
#cli
У npm как и других #nodejs инструментов есть конфигурация через rc файл. Вы можете разместить
.npmrc в папке проекта или в папке $HOME . Используйте npm config list, чтобы увидеть итоговую конфигурацию.Полный перечень параметров в приведен документации. Рассмотрим те, которые стоит отключить:
➡️ update-notifier – регулярно показывает сообщение, что пора обновиться. Делать этого не стоит.
➡️ fund, выводит xx packages are looking for funding. Поддержите opensource и смело выключайте.
➡️ audit, после каждого npm install показывает сжатый security audit. После добавления
npm audit в CI можно смело выключать.Выключение всех этих параметров уменьшит количество бесполезных логов. Осталось изменить уровень loglevel с notice на error и получим
.npmrc, который выводит в CI только важную информацию:loglevel=errorfund=falseupdate-notifier=falseaudit=falseВ yarn-based проектах необходимо использовать .yarnnc. Он не заменяет, а дополняет .npmrc. Посмотреть результат конфигурации
yarn config list👍4