Node.js Recipes – Telegram
Node.js Recipes
3.23K subscribers
167 photos
7 videos
1 file
612 links
По буднях нотатки по #Nodejs розробці, по вихідним огляди конференцій та доповідей (с) @galkin_nikita
Download Telegram
Top 8 web things to know from Google I/O 2021
#worth_seeing

На прошлой неделе прошел Google I/O 2021. Это конференция, где Google показывает свои новинки, в том числе и связанные c Google Chrome. Рекомендуемое к просмотру видео показывает 8 новинок и занимает всего на 4 минуты. Так же есть полная версию What's new for the web platform на полчаса.

На #nodejs разработку может повлиять анонсированная поддержка WebAssembly SIMD внутри Google Chrome. SIMD расшифровывается как Single Instruction, Multiple Data. С его помощью можно ускорить расчеты, например обработку изображений, видео и т.д. Подробней, что такое SIMD. Мы получим обновленную версию v8 с его поддержкой в v16 Node.js. Пока я не видел обоснованного использования WebAssembly на бэкенде, но инструмент явно интересный.
JavaScript fwdays’21
#conference

На следущей неделе будет онлайн-конференция JavaScript fwdays’21. Уверен, что вы знаете этот бренд.

Программа конференции из состоит из докладов по вечерам в будние дни и в дневных в выходные. Подробней можно посмотреть на сайте. Бесплатные билеты позволяют посмотреть стрим. Если вы хотите посмотреть доклад в записи, то стоит приобрести билет. Это хороший способ поддержать конференцию, которая заботиться о комьюнити.

➡️ Регистрация: https://fwdays.com/en/event/javanoscript-fwdays-2021
💵 Цена: 60$, промокод на 10% – node_recipes_friends

Я не буду делать традиционный обзора программы конференции, а пойду готовить свой доклад Deep dive Into NestJS. Он уже 1-го числа вечером. До встрече на стриме.
What's Next, The Future of Node.js 
#worth_seeing

Вы знаете, кто такой Майкл Доусон (Michael Dawson)? Уже 6 лет он член комитета отвечающего за развитие #nodejs. На английском это звучит как Collaborator and Technical Steering Committee member. Его можно увидеть почти на любом видео с заседаний Node.js working groups в youtube канале nodejs-foundation.

Не буду представлять столь подробно двух других участников сегодняшнего видео. Они, как и Майкл, члены Node.js working groups. Таких группы больше десятка. Часть видео как раз об этих группах.

Это видео затрагивает Node.js Roadmap, точнее почему у Node.js подобен самураю, у которого нет цели, а есть только путь. Идет речь об LTS циклах и стабильности. Разбирается, почему Major релизы зачастую не имеют новых фич. Они идут в минорных релизах. В завершение показывается как внести свой вклад в развитие Node.js.

Рекомендую посмотреть видео, чтобы лучше понять как именно развивается Node.js как платформа.
Подборка node.recipes за май 2021
#monthly_list

Рецепты для #nodejs разработчиков:
➡️ Что такое Race Condition на клиенте?
➡️ Как использовать cron в Node.js?
➡️ Как запускать Node.js с доп. аргументами?
➡️ Как документировать логику?
➡️ Что такое Floating Promise и почему это опасно? 
➡️ Как уменьшить потребление памяти во время TypeScript компиляции?
➡️ Что такое .npmrc и почему его стоит добавить?
➡️ Как определить не используемые зависимости?
➡️ В чем проектировать структуру базы данных?
➡️ Как понять запущен ли Node.js внутри Docker?
➡️ Какая связь у UUID и MD5?
➡️ refactoring.guru
➡️ Как работает Readonly в TypeScript?
➡️ Как итерировать массив?
➡️ Как успевать за развитием web-development?
➡️ Как и зачем проверить, что код запущен под нужной версий Node.js?
➡️ Как автоматизировать работу с git?
➡️ Как посчитать нарастающий итог?

Обзор релизов:
🚀 Node.js 14.17
🚀 Что нового в TypeScript 4.3?

Freebies:
🤑 MongoDB University

Доклады, которые стоит посмотреть:
👀 How to Build and Run Node Apps with Docker and Compose
👀 42 WebStorm Tips and Tricks
👀 Зачем нужен тип "true" в TypeScript?
👀 HTTP/3 by Daniel Stenberg
👀 10 Things I Regret About Node.js 
👀 Serverless by Stefan Judis
👀 Mo'Problems, Mo'Nads by Kyle Simpson
👀 Top 8 web things to know from Google I/O 2021
👀 What's Next, The Future of Node.js

Voice Chats:
🎤 Q&A
🎤 About Node.js Job Market, в гостях Алеся Кулакова
🎤 About testing, в гостях Хотемской Александр
🎤 About GraphQL, в гостях Павел Черторогов
Итоги мая 2021

телеграм канал @node_recipes
⚙️ количество подписчиков почти преодолело 1000
эксперимент с Voice Chat оказался успешным. На еженедельных эфирах в среднем 40 слушателей. Формату быть.
появилась айдентика и слоган
не понятна актуальность постов в формате #raffle и #freebies
трудозатраты 10-12 часов в неделю

комьюнити GDG Cloud Kyiv
официальная регистрация и освоение платформы
первый Cloud Jam с 15 участниками
⚙️ формирование комьюнити в работе
⚙️ другие форматы и план на июнь
трудозатраты 3-4 часа в неделю

Доклады
"Road to production" в ходе конференции Dev.Pro JS Conference
Уже завтра "Deep Dive Into NestJS" на JavaScript fwdays’21
⚙️ Node.js TDD 15 июня
трудозатраты 10-20 часов на доклад

Проекты в работе, не готовые к официальному релизу
⚙️ Личный сайт
⚙️ Сайт node.recipes на английском с еженедельной email рассылкой
⚙️ Серия воркшопов по Node.js и Cloud Native разработке
не хватает времени и/или мотивации

Спасибо за поддержку и обратную связь.
Какие директивы есть в TypeScript и зачем их использовать?
#typenoscript

Директива это комментарий, который говорит TypeScript компилятору изменить свое поведение. Существуют Triple-Slash Directives, которые выходят за рамки этого рецепта. Их использование оправдано при создание библиотек, но не приложений.

Сегодня же речь об директивах начинающихся@ts-. На текущий момента, в версии TypeScript 4.2, их существует 4:
➡️ // @ts-check – применяется только в начале javanoscript файла. Используется в ходе перехода с JS на TS. Для typenoscript файлов не применим.
➡️ // @ts-nocheck – применяется только в начале файла. Все ошибки в файле будут проигнорированы. Используется и в JS, и в TS. Рекомендован в случае перехода на TS.
➡️ // @ts-ignore – возможная ошибка на следующей строке будет проигнорирована.
➡️ // @ts-expect-error – ошибка на следующей строке будет проигнорирована. Если ошибки нет, то TypeScript компилятор выкинет ошибку Unused '@ts-expect-error' directive. Использование предпочтительней, чем @ts-ignore.

Каноническим примером использования @ts-expect-error является обращение к приватному свойству в unit тесте.

Тут можно прочитать рекомендацию, что в каком случае использовать @ts-expect-error или @ts-ignore. Выработанную договоренность лучше закрепить на уровне линтинга с помощью @typenoscript-eslint/ban-ts-comment.
Ответы на вопросы о закончившемся докладе:

Видео в паблик будет в конце августа. Для владельцев Full ticket уже доступно.
Хочу спросить в личку. У нас на проекте... Тут два варианта 1) Вытащить специфику проекта, чтобы можно было задавать публично. Например, в четверг на Voice Chat разберем. 2) Делать индивидуальную консультацию. На это на июль нет времени.
А почему в докладе не было ...? Потому, что это не часть фреймворка, которой нет в документации.
Будет ли повтор доклада? Да. Ближайшие 1-го июля в дружественном комьюнити @mathrandomcommunity
Слайды тут
Где брать сниппеты кода?
#service

Я не сторонник дублирования кода, но ради нескольких хелперов затаскивать в приложение lodash, rambda или их аналоги не стану. Вместо этого я пишу их сам. Большинство JS хелперов пишутся в одну строчку. Многие из моего helpers.ts можно найти на 1loc.dev.

Вот парочка полезных #nodejs разработчику:
➡️ Проверить, что код запущен в Node.js:
const isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null;
➡️ memoize для длительных вычислений
const memoize = fn => ((cache = {}) => arg => cache[arg] || (cache[arg] = fn(arg)))();
👍1
OpenJS World уже сегодня!
#conference

Сегодня начинается конференция OpenJS World 2021. Подробное интро конференции тут.

Если вы еще не зарегистрированы, то рекомендую это сделать. Это бесплатно.

Для тех кто подумывает об #nodejs сертификации. 
1) регистрация дает 50% скидку
2) David Mark Clements делает доклад как раз о ней.

При изучение программы обратите внимание, что справа есть фильтры. Самый полезный из них
Slides Included. Я вижу такое впервые, когда доклады идут сразу со слайдами. Боюсь за себя и других докладчиков, если это станет трендом.
Обзор Node.js v16: Timers Promises API
#nodejs_api

Шестнадцатая версия #nodejs меняет работу с таймерами. Раньше мы не могли отменять промифисицированные таймеры. Теперь это возможно благодаря AbortController-ы. Промифисицированный таймер можно сразу получить из timers/promises, аналогично fs/promises . Функция setInterval
из timers/promises, будет возвращать не Promise, а asyncIterator. Его можно итерировать через for-await-for. Примеры в документации.
Live stream scheduled for
Audio
#voice_chat

Гость: Николай Крещенко, Senior Software Engineer в финтех сфере. Сейчас занят в разработке высокконагруженного бекенда необанка в Дубаях.

Вопросы
Чем Cloud Native подходы в разработке отличаются от традиционных
из чата по теме Cloud Native

Ссылки:
🔗 книга Cloud Native
🔗 Aviatrix Certified Engineer Multi-Cloud Networking & Security Courses
🔗 7 missing factors from 12 factor application

PS Изначально формат должен был быть Q&A, но в последний момент я пригласил Николая и изменил фокус на Cloud Native. Прошу прощения у кого были другие ожидания
Live stream started
Live stream finished (1 hour)
Что должен знать Junior Node.js Developer?

Вчера во время Voice Chat Андрей задал вопрос: "Какие необходимые навыки/знания ты бы выделил для junior nodejs разработчика?". Вопрос можно брать для отдельного часового обсуждения и все равно не будет раскрыт полностью.

Обратите внимание, что в русском языке Junior переводиться младший специалист. Это означает способность самостоятельно решать задачу. Уровень Middle – тоже самое плюс немного проектировать фичи, Senior – проектировать фичи, Lead – строить процессы.

Вот мой список для Junior:
➡️Знание JavaScript/TypeScript, чтобы по примеру из другого файла сделать схожую фичу и покрыть ее тестами
➡️Знание работы с GIT, достаточные для открытия Merge Request
➡️Знание Docker и CLI, достаточные чтобы по хорошей документации проекта развернуть локальное окружение.
➡️Прочитана и понята документация по Node.js и фреймворку, что бы бы знать как и что в ней искать.

Завершу двумя полезными ссылками:
🔗Building Modern Node.js Applications on AWS хороший обзорный курс, для тех кто не работал с Cloud Native
🔗Матрица компетентности от Ильи Климова
Consuming Nodejs Observability Features in Kubernetes Environments
#worth_seeing

Сегодняшнее видео приятно рекомендовать по многим причинам.

Во-первых, сама тема – мониторинг #nodejs метрик да еще в Kubernetes. На многих проектах нет мониторинга. Разработчики не знают как его сделать, а DevOps инженеры не понимают особенностей Node.js.

Во-вторых, докладчики из Red Hat, компании которая много делает для open source в общем, и для Node.js в частности.

Во-третьих, подача самого доклада. Ребята подкупают своей простотой и открытостью. Вот вы много видели докладов, где докладчик джун (Alex Alykiotis)? А где докладчик (Luke Holmquist) шутит со своего имени Лукас и показывая йоду из звездных войн? Такое интро настраивает на простоту. Действительно сложная тема раскрывается легко и интересно.
Node.js middleware - никогда больше!
#worth_seeing

Вряд ли среди русскоязычных веб-разработчиков есть те, кто не знают Тимура Шемсединова. Он один из топ докладчиков по #nodejs. Не все идеи из его докладов я разделяю, но точно могу рекомендовать их к ознакомлению. Докладов у Тимура много. Конкретно этот знаменателен тем, что в конце идет обсуждение Ильей Климовым.
Prisma Day
#conference

Я люблю Vendor-конференции. На них можно послушать доклады и для новичков, и для тех кто глубоко освоил технологию. Есть возможность познакомиться с командой разработки и задать им вопросы.

Сегодня речь именно о такой конференции: Prisma Day пройдет 29-30 июня. Если вы не знакомы с этой технологией, то на конференции самое время составить свое мнение о ней.
На что влияет environment variable EDITOR?
#cli

Переменная окружения EDITOR определяет, какой текстовый редактор использовать при многострочном пользовательском вводе или редактирование файла. По умолчанию в Unix системах это vim, в Windows – notepad.exe.
Я предпочитаю его переопределять на Visual Code.
export EDITOR='code'
В зависимости от того, какой shell вы используете это строчку необходимо внести в ~/.profile, ~/.bashrc, ~.zshrc, то есть в конфигурационный файл вашего shell.

Примеры, когда будет вызван редактор:
➡️ npm config edit
➡️ git commit
➡️ при клике по строчке ошибки в браузере вашего React приложения.

Есть быть более точным, то многое программное обеспечение использует EDITOR, если не задан SOMETHING_EDITOR. Например, можно использовать REACT_EDITOR и GIT_EDITOR, но не NPM_EDITOR. Читайте документацию или исходный код конкретного ПО.
Как работает ORM?
#architecture #orm

Существует извечный спор ORM или SQL-запросы в коде. Я предпочитаю не спорить, а использовать и то, и другое.

Начнем с определений. ORM (Object-Relational Mapping) – это слой между базой данных и приложением, который занимается созданием, обновлением, чтением и удалением записей в базе данных. ORM упрощает работу с базой данных генерируя запросы из кода. Для этого необходимо описать модели, т.е. структуры таблиц. #nodejs разработчики делают это или через схему, или через TypeScript декораторы. Примеры:

// schema approach
import { Sequelize, DataTypes } from 'sequelize';
class User extends Model {}
User.init({
 username: DataTypes.STRING,
 birthday: DataTypes.DATE
});
// decorator approach
import { Entity, Column } from 'typeorm';
@Entity()
class User {
 @Column() username: string;
 @Column('date') birthday: string;
}

Модели используются для генерации запросов и правильной cериализации/деcериализации данных, т.е. мэпинга записей из БД в JS объекты.

Существует практика использования getter/setter в моделях. Например, на основание birthday можно сделать getter age. Если по этому полю необходимо будет строить запросы, то getter/setter не позволит это делать. В этом случае правильней будет сделать вычисляемое поле на уровне базы данных. В Postgres для этого используется Generated Columns.
Live stream scheduled for