Как узнать ip пользователя в Node.js?
#package #nestjs
TL;DR Знайте заголовок, который использует ваш LB или используйте request-ip.
Хорошей практикой является логирование ip адрес, с которого идет запрос. В определенных случаях в зависимости от ip может строиться логика работы приложения. Наивный способ, приведенный в #nodejs документации выглядит так:
В реально проекте данный способ не будет работать. Node.js процесс будет находиться за load balancer-ом. В
Если у вас нет информации, как будет развернут ваш код, то стоит использовать пакет request-ip. В его коде идет перебор большинства заголовков в поисках ip.
Если же вы знаете используемый LB, то знаете имя заголовка. Вот пример для #nestjs декоратора:
#package #nestjs
TL;DR Знайте заголовок, который использует ваш LB или используйте request-ip.
Хорошей практикой является логирование ip адрес, с которого идет запрос. В определенных случаях в зависимости от ip может строиться логика работы приложения. Наивный способ, приведенный в #nodejs документации выглядит так:
const http = require('http');const server = http.createServer((req, res) => { const ip = res.socket.remoteAddress; const port = res.socket.remotePort; res.end(`Your IP address is ${ip} and your source port is ${port}.`);}).listen(3000);В реально проекте данный способ не будет работать. Node.js процесс будет находиться за load balancer-ом. В
req.socket.remoteAddress будет находиться именно его ip, а не откуда пришел запрос. Оригинальный ip можно узнать по заголовку X-Forwarded-For или его аналогам (зависит от используемого LB).Если у вас нет информации, как будет развернут ваш код, то стоит использовать пакет request-ip. В его коде идет перебор большинства заголовков в поисках ip.
Если же вы знаете используемый LB, то знаете имя заголовка. Вот пример для #nestjs декоратора:
import { createParamDecorator, ExecutionContext } from '@nestjs/common';import { Request } from 'express';export const UserIp = createParamDecorator((data: unknown, context: ExecutionContext) => { const req = context.switchToHttp().getRequest<Request>(); const forwardedFor = req.header('x-forwarded-for'); if (!forwardedFor) return req.connection.remoteAddress; return forwardedFor.split(',')[0];});npm
npm: request-ip
A small Node.js module to retrieve the request's IP address. Latest version: 3.3.0, last published: 3 years ago. Start using request-ip in your project by running `npm i request-ip`. There are 806 other projects in the npm registry using request-ip.
Как получить бесплатную Node.js сертификацию?
#freebies
На прошлой неделе был на подкаст, где среди прочего мы с Ильей Климовым обсуждали сертификацию для #nodejs разработчиков от Linux Foundation. Их существует две:
- JSNSD – OpenJS Node.js Services Developer
- JSNAD – OpenJS Node.js Application Developer
Как и другие сертификации от LF они стоят по 300$. На них регулярно бывают скидки, поэтому покупать их дороже 150$ не рационально... На этом я остановлюсь, иначе это будет пересказ подкаста.
Linux Foundation регулярно раздает купоны на 100% скидку и называет это Linux Foundation Training Scholarships. Для участия достаточно заполнить форму. В случае если вам повезет, то вы получите два промокода: один на сертификацию, второй на платный курс.
В прошлом году я уже участвовал в этой программе и получил CKAD – Certified Kubernetes Application Developer. Распределение по категориям и стипендиатов 2020 можно посмотреть тут. Надеюсь увидеть вас в списке 2021.
#freebies
На прошлой неделе был на подкаст, где среди прочего мы с Ильей Климовым обсуждали сертификацию для #nodejs разработчиков от Linux Foundation. Их существует две:
- JSNSD – OpenJS Node.js Services Developer
- JSNAD – OpenJS Node.js Application Developer
Как и другие сертификации от LF они стоят по 300$. На них регулярно бывают скидки, поэтому покупать их дороже 150$ не рационально... На этом я остановлюсь, иначе это будет пересказ подкаста.
Linux Foundation регулярно раздает купоны на 100% скидку и называет это Linux Foundation Training Scholarships. Для участия достаточно заполнить форму. В случае если вам повезет, то вы получите два промокода: один на сертификацию, второй на платный курс.
В прошлом году я уже участвовал в этой программе и получил CKAD – Certified Kubernetes Application Developer. Распределение по категориям и стипендиатов 2020 можно посмотреть тут. Надеюсь увидеть вас в списке 2021.
Как в Node.js узнать местоположение пользователя?
#service #gcp
В понедельник мы говорили об определение ip пользователя. По нему можно определить местоположение, т.е. страну, город, координаты. Это данные часто используются для построения бизнес-логики.
Начинающие #nodejs разработчики устанавливают geoip-lite. В результате приложение потребляет на 100мб памяти больше. Под капотом у пакета GeoLite база от MaxMind, которая будет находиться в памяти.
Продвинутые разработчики используют сторонний сервис. Например, db-ip.com или geoip2. К сожалению, такие решения нельзя назвать дешевыми.
Наиболее опытные разработчики оптимизируют затраты, и поэтому решают эту задачу в Google Cloud Platform. Один из таких разработчиков написал статью Free IP-based GeoLocation with Google Cloud Functions. В ней описано как создать функционал аналогичный db-ip.com.
В Google Cloud Platform можно настроить custom headers так, что запрос в Node.js будет иметь заголовки с нужными данными.
Аналогичный функционал дает geoip2 модуль для nginx, но он доступен только в nginx-plus.
#service #gcp
В понедельник мы говорили об определение ip пользователя. По нему можно определить местоположение, т.е. страну, город, координаты. Это данные часто используются для построения бизнес-логики.
Начинающие #nodejs разработчики устанавливают geoip-lite. В результате приложение потребляет на 100мб памяти больше. Под капотом у пакета GeoLite база от MaxMind, которая будет находиться в памяти.
Продвинутые разработчики используют сторонний сервис. Например, db-ip.com или geoip2. К сожалению, такие решения нельзя назвать дешевыми.
Наиболее опытные разработчики оптимизируют затраты, и поэтому решают эту задачу в Google Cloud Platform. Один из таких разработчиков написал статью Free IP-based GeoLocation with Google Cloud Functions. В ней описано как создать функционал аналогичный db-ip.com.
В Google Cloud Platform можно настроить custom headers так, что запрос в Node.js будет иметь заголовки с нужными данными.
Аналогичный функционал дает geoip2 модуль для nginx, но он доступен только в nginx-plus.
Какую версию npm использовать?
#best_practice #npm #tech_stack
Node package manager – npm регулярно показывает
Пример текущей LTS комбинации: Node.js v14.16.1, npm v6.14.12. Этому следуют все:
- установочные бинарники,
- nvm (node version manager) и его аналоги,
- Docker image
Использование различных версий npm ведет к различному поведению приложения, трудноуловимым багам и git конфликтам.
Если вы используете yarn, то такой таблицы нет. Лучшей практикой будет использование версию прошитой в Docker image. Например, для Node.js v14.16.1 это будет yarn v1.22.5
#best_practice #npm #tech_stack
Node package manager – npm регулярно показывает
Update available. Следовать этому оповещению и обновлять npm не стоит. Вместе с версией #nodejs идет конкретная версия npm и именно ее следует использовать. Версии указаны в таблице.Пример текущей LTS комбинации: Node.js v14.16.1, npm v6.14.12. Этому следуют все:
- установочные бинарники,
- nvm (node version manager) и его аналоги,
- Docker image
Использование различных версий npm ведет к различному поведению приложения, трудноуловимым багам и git конфликтам.
Если вы используете yarn, то такой таблицы нет. Лучшей практикой будет использование версию прошитой в Docker image. Например, для Node.js v14.16.1 это будет yarn v1.22.5
Free GitLab Certified Associate
#freebies
За последние 12 месяцев GitLab запустил 6 сертификаций различного уровня. GitLab Certified Associate это начальный уровень. Если у вас в резюме нет ни одного бейджа, то рекомендую начать с этого.
Цена без промокода $650. До 30 Апреля 2021 работает
1. Создать аккаунт на https://gitlab.edcast.com/
2. Добавить GitLab Certified Associate Pathway в корзину
3. При оплате использовать промокод.
Источник.
#freebies
За последние 12 месяцев GitLab запустил 6 сертификаций различного уровня. GitLab Certified Associate это начальный уровень. Если у вас в резюме нет ни одного бейджа, то рекомендую начать с этого.
Цена без промокода $650. До 30 Апреля 2021 работает
E6B8A234458AE3D795. Активация:1. Создать аккаунт на https://gitlab.edcast.com/
2. Добавить GitLab Certified Associate Pathway в корзину
3. При оплате использовать промокод.
Источник.
Как правильно написать package.json в проекте?
#package #best_practices
#Nodejs проект начинается с package.json. Давайте посмотрим как правильно его составить для коммерческого кода.
Хорошая практика использовать scoped package.
SemVer рекомендует начинать именно с 0.1.0
Чтобы случайно не опубликовать.
Поле license описывает тип Open Source лицензии.
Поля
Имя компании обладающей правом на код
Все зависимости не меняются руками. Только в посредством
Организовать порядок в файле помогает sort-package-json. Ставить его нет смысла, поэтому
#package #best_practices
#Nodejs проект начинается с package.json. Давайте посмотрим как правильно его составить для коммерческого кода.
"name": "@<scope>/<name>"Хорошая практика использовать scoped package.
"version": "0.1.0"SemVer рекомендует начинать именно с 0.1.0
"private": true,Чтобы случайно не опубликовать.
"license":""UNLICENSED"Поле license описывает тип Open Source лицензии.
Поля
"denoscription" и "keywords" используют для поиска в публичном npm. Не указываем их."author": "Company Name",Имя компании обладающей правом на код
"noscripts": { использует одинаковое именование. Единого подхода нет. Подробней"dependencies": { содержит те пакеты, которые используются в runtime, для FE – во время сборки."devDependencies": { содержит пакеты, которые необходимы для локальной разработки и CI/CD.Все зависимости не меняются руками. Только в посредством
npm install/uninstall, чтобы изменился package-lock.json.Организовать порядок в файле помогает sort-package-json. Ставить его нет смысла, поэтому
npx sort-package-json.👍1
Кодстайл и насилие, Антон Немцев
#worth_seeing
Разработчик читает в десятки раз больше строчек кода, чем пишет. Поэтому кодстайл так важен. Доклад Антона снят в 2018 год. За это время часть инструментов поменялось, но принципы высказанные в докладе актуальны и сейчас.
📕 Slides
#worth_seeing
Разработчик читает в десятки раз больше строчек кода, чем пишет. Поэтому кодстайл так важен. Доклад Антона снят в 2018 год. За это время часть инструментов поменялось, но принципы высказанные в докладе актуальны и сейчас.
📕 Slides
YouTube
Антон Немцев. «Кодстайл и насилие». Фронтенд-лекция в Группе компаний FIX
Пригласили Антона Немцева — https://silentimp.info/ выступить с темой «Кодстайл и насилие. + Построение проверок в пайплайне и плагины для postcss и eslint»
Конференции, которые нужно знать:
– Google: I/O '21 18-20 мая, Cloud Next'21 12-14 октября
– Microsoft: Build 25-27 мая
– Facebook: F8 Refresh 2 июня
– Apple: WWDC21 7-11 июня
– AWS: re:Invent 29 ноября - 3 декабря
#conference
На них говорят о вещах, которые меняют нашу отрасль.
– Google: I/O '21 18-20 мая, Cloud Next'21 12-14 октября
– Microsoft: Build 25-27 мая
– Facebook: F8 Refresh 2 июня
– Apple: WWDC21 7-11 июня
– AWS: re:Invent 29 ноября - 3 декабря
#conference
На них говорят о вещах, которые меняют нашу отрасль.
6 способов взломать твое JavaScript приложение. Виктор Турский
#worth_seeing #security
В докладе:
- Использование SMS для восстановления пароля
- Загрузка аватарки в файловую систему, а не S3
- Раздача статики средствами #nodejs
- Использование MongoDB
- Server Rendering
- XSS
Во всех примерах, безопасный на первый взгляд код превращается в серьезную проблему в безопасности.
#worth_seeing #security
В докладе:
- Использование SMS для восстановления пароля
- Загрузка аватарки в файловую систему, а не S3
- Раздача статики средствами #nodejs
- Использование MongoDB
- Server Rendering
- XSS
Во всех примерах, безопасный на первый взгляд код превращается в серьезную проблему в безопасности.
YouTube
6 способов взломать твое JavaScript приложение. Виктор Турский. JS Fest 2019 Spring
The talk from JS Fest conference in Kyiv, Ukraine.
Это будет 6 живых демо взлома. Идея не обсудить сухую теория, а увидеть на практике, как не всегда очевидные ошибки являются источником серьезных уязвимостей в твоем JavScript приложении.
Presentation:…
Это будет 6 живых демо взлома. Идея не обсудить сухую теория, а увидеть на практике, как не всегда очевидные ошибки являются источником серьезных уязвимостей в твоем JavScript приложении.
Presentation:…
Cloud Study Jam 29-04-2021
#announcement
Мое основное облако – Google Cloud Platform. Если вы с ним не работали, то я вас приглашаю в этот четверг на Cloud Study Jam. В его ходе вы получите свой первый бейдж на qwiklabs.com.
Так же мы посмотрим как сделать свой определитель адреса по IP, о котором я рассказывал тут.
#announcement
Мое основное облако – Google Cloud Platform. Если вы с ним не работали, то я вас приглашаю в этот четверг на Cloud Study Jam. В его ходе вы получите свой первый бейдж на qwiklabs.com.
Так же мы посмотрим как сделать свой определитель адреса по IP, о котором я рассказывал тут.
Google Docs
Google Cloud Study Jam
Хотите получить базовые навыки работы с Google Cloud? Тогда присоединяйтесь к Google Cloud Study Jam 29 апреля!
В ходе Study Jam мы пройдем GCP Essentials и рассмотри как просто можно создать свой сервиса IP Geolocation API (один из примеров ipapi.co). …
В ходе Study Jam мы пройдем GCP Essentials и рассмотри как просто можно создать свой сервиса IP Geolocation API (один из примеров ipapi.co). …
Node.js Recipes pinned «Cloud Study Jam 29-04-2021 #announcement Мое основное облако – Google Cloud Platform. Если вы с ним не работали, то я вас приглашаю в этот четверг на Cloud Study Jam. В его ходе вы получите свой первый бейдж на qwiklabs.com. Так же мы посмотрим как сделать…»
Как узнать источник соединение в БД?
#best_practice #database
TL;DR Всегда ставьте
Сегодня обсудим малодокументированную фишку баз данных. При создание соединения можно указать
Без ORM:
TypeORM
Sequelize
Теперь вы сможете увидеть
Аналогичные параметр есть у всех клиентов баз данных.
Например, MongoDB использует appName, а Redis – CLIENT SETNAME.
#best_practice #database
TL;DR Всегда ставьте
application_name в конфигурации подключения к БД.Сегодня обсудим малодокументированную фишку баз данных. При создание соединения можно указать
application_name. Это аналог http заголовка User-Agent в мире баз данных. Он виден в списке соединений и slow query log. Приведу примеры кода для PostgreSQL.Без ORM:
import { Client } from 'pg';const client = new Client({ connectionString: process.env.DB_URL, application_name: 'my-app@0.1.0'});TypeORM
import { PostgresConnectionOptions } from 'typeorm/driver/postgres/PostgresConnectionOptions';const dbConfig: PostgresConnectionOptions = { type: 'postgres', url: process.env.DB_URL!, extra: { application_name: 'my-app@0.1.0' }, entities: ...};Sequelize
import { Sequelize } from 'sequelize';const sequelize = new Sequelize(process.env.DB_URL!, { dialect: 'postgres', dialectOptions: { appName: 'my-app@0.1.0' }});Теперь вы сможете увидеть
application_name в pg_stat_activity с помощью запросаSELECT * FROM pg_stat_activity WHERE datname = '<db_name>';Аналогичные параметр есть у всех клиентов баз данных.
Например, MongoDB использует appName, а Redis – CLIENT SETNAME.
Как вывести в браузер сколько времени обрабатывался запрос на сервере?
#package #browser
Сегодня посмотрим, как можно узнать:
- Как быстро браузер получил ответ?
- А сколько запрос обрабатывался на сервере?
Chrome показывает Server-Timing заголовки. Для этого:
1️⃣Открываем исследуемый ресурс и консоль разработчика.
2️⃣Переходим во вкладку Network.
3️⃣Выбираем нужный запрос.
4️⃣Переходим во вкладку Timing.
5️⃣Смотрим результат.
Есть уже готовый пакет server-timing. Меня он сильно выручил в ситуации, когда было не ясно тормозит #nodejs или load-balancer.
#package #browser
Сегодня посмотрим, как можно узнать:
- Как быстро браузер получил ответ?
- А сколько запрос обрабатывался на сервере?
Chrome показывает Server-Timing заголовки. Для этого:
1️⃣Открываем исследуемый ресурс и консоль разработчика.
2️⃣Переходим во вкладку Network.
3️⃣Выбираем нужный запрос.
4️⃣Переходим во вкладку Timing.
5️⃣Смотрим результат.
Есть уже готовый пакет server-timing. Меня он сильно выручил в ситуации, когда было не ясно тормозит #nodejs или load-balancer.
Бесплатная месячная подписка на O'Reilly
#freebies
Спасибо, что читаете мой канал об #nodejs. Я стараюсь сделать рецепты короткими, но полезными. Они такие, чтобы читать их на бегу.
К сожалению, книги так не почитаешь. А читать книги необходимо! Лучшие книги по разработке издает издательство O'Reilly (такие с животными на обложке). У них есть замечательный портал learning.oreilly.com. Помимо книг там есть видео и тренировочные сертификации. Отличный контент, который я люблю читать с планшета.
Одна беда – цена 50$/месяц, 500$/год.
У них есть trial 10 дней, но этого мало, чтобы прочитать книгу. По ссылке https://learning.oreilly.com/get-learning/ можно получить 30 дней. Промокод прикреплен снизу.
Приятного чтения!
#freebies
Спасибо, что читаете мой канал об #nodejs. Я стараюсь сделать рецепты короткими, но полезными. Они такие, чтобы читать их на бегу.
К сожалению, книги так не почитаешь. А читать книги необходимо! Лучшие книги по разработке издает издательство O'Reilly (такие с животными на обложке). У них есть замечательный портал learning.oreilly.com. Помимо книг там есть видео и тренировочные сертификации. Отличный контент, который я люблю читать с планшета.
Одна беда – цена 50$/месяц, 500$/год.
У них есть trial 10 дней, но этого мало, чтобы прочитать книгу. По ссылке https://learning.oreilly.com/get-learning/ можно получить 30 дней. Промокод прикреплен снизу.
Приятного чтения!
Как померять время выполнения команды в терминале?
#cli
TL;DR Используйте hyperfine
Стандартный способ померять время исполнения команды посредством time.
Пример:
Если
Пример:
Для оценки cli команд тоже есть benchmark. Называется hyperfine. Он может сравнивать несколько команд, делать прогрев или подготовку.
Пример:
Его удобно использовать в извечном холиваре #nodejs разработчиков: yarn vs npm. Вот так можно сделать сравнение для вашего проекта:
#cli
TL;DR Используйте hyperfine
Стандартный способ померять время исполнения команды посредством time.
Пример:
time npm run build.Если
time использовать в связке с curl, то можно узнать время выполнения запроса. Для такой задаче лучше подходит ab. Это сокращение от apache benchmark. Это команда отправляет не один запрос на указанный URL, а несколько. На основание результатов считаются статистики: средние, квартили и тп. Поэтому в название и есть benchmark.Пример:
ab -n 10 http://localhost:3000/Для оценки cli команд тоже есть benchmark. Называется hyperfine. Он может сравнивать несколько команд, делать прогрев или подготовку.
Пример:
hyperfine 'npm run build'.Его удобно использовать в извечном холиваре #nodejs разработчиков: yarn vs npm. Вот так можно сделать сравнение для вашего проекта:
hyperfine --prepare 'rm -rf node_modules' 'yarn' 'npm install'Обзор Node.js v16: AbortController
#nodejs_api
16-ой версия #nodejs даст нам нативный
Ждем появления в коде и на собеседованиях abortable-функций. Уже сейчас SDK cloud-провайдеров (AWS, Azure, GCP) использует полифил. Пример кода:
Для полноценного перехода пока не хватает
#nodejs_api
16-ой версия #nodejs даст нам нативный
AbortController. Он создан для отмены выполнение Promise-based функций. Это аналог DOM AbortController, который отменяет fetch запросы.Ждем появления в коде и на собеседованиях abortable-функций. Уже сейчас SDK cloud-провайдеров (AWS, Azure, GCP) использует полифил. Пример кода:
import { AbortController } from "@azure/abort-controller";// create a controller and get its signalconst controller = new AbortController();const abortSignal = controller.signal;// pass the abortSignal into the API you want to cancelawait blobClient.download({ abortSignal })// then sometime later, cancel it!controller.abort();Для полноценного перехода пока не хватает
AbortError. Об это есть issue. Надеюсь ее закроют до выхода 16-й LTS.👍1
Почему разработчикам необходимо знать Cloud сервисы?
#cloud
В одном из #nodejs чатов прилетел вопрос
Вот варианты решения задачи Text-To-Speach:
1️⃣Web Speech API, необходим запущенный браузера.
2️⃣Использовать Node.js только для запуска child_process.
3️⃣Vendor hosted, Использовать стороннего сервиса
4️⃣Cloud Native, т.е. использования сервисов предлагаемых облаком
Когда бизнесу важна скорость выхода на рынок, то Cloud Native безусловный фаворит. Поэтому я бы рекомендовал начать с родного облака:
☁️ AWS предлагает Polly
☁️ GCP предлагает @google-cloud/text-to-speech
☁️ Azure предлагает microsoft-cognitiveservices-speech-sdk
#cloud
В одном из #nodejs чатов прилетел вопрос
"Подскажите, нужна либа которая из текста делает озвучку и сохраняет ее. Куда копать?" (c)Вот варианты решения задачи Text-To-Speach:
1️⃣Web Speech API, необходим запущенный браузера.
2️⃣Использовать Node.js только для запуска child_process.
3️⃣Vendor hosted, Использовать стороннего сервиса
4️⃣Cloud Native, т.е. использования сервисов предлагаемых облаком
Когда бизнесу важна скорость выхода на рынок, то Cloud Native безусловный фаворит. Поэтому я бы рекомендовал начать с родного облака:
☁️ AWS предлагает Polly
☁️ GCP предлагает @google-cloud/text-to-speech
☁️ Azure предлагает microsoft-cognitiveservices-speech-sdk
👍1
Вы заметили в вашем Docker Desktop вкладку Dev Environments? Там пока нет ничего кроме интро видео. Мы узнаем детали 27 мая на DockerCon Live 2021.
➡️ Бесплатная регистрация
#conference #docker #freebies
➡️ Бесплатная регистрация
#conference #docker #freebies
Diagnostic Reports by Christopher Hiller
#worth_seeing #nodejs_api
Сегодня у нас доклад с Node+JS Interactive 2019. С 2020 года эту конференцию заменил OpenJS World (подробней тут). Доклад короткий, всего 20 минут. В нем Кристофер рассказывает зачем нужны Diagnostic Report и как использовать его утилиту report toolkit.
Ссылки из доклада:
➡️ документация
📕 Slides
💻 утилита report toolkit
В завершение, приведу пример как на Diagnostic Report сделать аналог phpinfo():
#worth_seeing #nodejs_api
Сегодня у нас доклад с Node+JS Interactive 2019. С 2020 года эту конференцию заменил OpenJS World (подробней тут). Доклад короткий, всего 20 минут. В нем Кристофер рассказывает зачем нужны Diagnostic Report и как использовать его утилиту report toolkit.
Ссылки из доклада:
➡️ документация
📕 Slides
💻 утилита report toolkit
В завершение, приведу пример как на Diagnostic Report сделать аналог phpinfo():
exports.helloWorld = (req, res) => { res.status(200).send(process.report.getReport());};YouTube
Throw Me a Lifebuoy: Debugging Node.js in Production with Diagnostic Reports - Christopher Hiller
Christopher Hiller, IBM
Diagnostic Reports are a recent addition to Node.js core. This feature enables insight into Node.js processes running in production—without needing to attach a debugger—and the results can be interpreted offline. If you've ever had…
Diagnostic Reports are a recent addition to Node.js core. This feature enables insight into Node.js processes running in production—without needing to attach a debugger—and the results can be interpreted offline. If you've ever had…
Подборка 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? ➡️ Как протестировать…»