Node.js Recipes
3.11K subscribers
173 photos
7 videos
1 file
610 links
Download Telegram
Где изучать Kubernetes
#freebies #list

Kubernetes уже стал стандартом де-факто в разворачивание проектов. Его необходимо знать не только DevOps инженерам, но и разработчикам. Материалов по его изучению много. Вот моя личная подборка:
➡️ Официальная документация kubernetes. Для сдачи CKAD необходимо знать ее структуру и уметь быстро находить нужное. В работе вы тоже будет регулярно ей пользоваться. Знайте на какой версии k8s вы работаете и смотреть изменения.
➡️ Документация от вендора где развернут ваш k8s. Основное знание это вендор специфик annotation, которые расширяют функционал.
➡️ container.training сайт с материалами воркшопов по Docker и kubernetes. Есть видео и Self-paced tutorials.
➡️ kube.academy от VMWare. Есть курсы разного уровня.
30 seconds of code – сборник код-снипетов
#list #code_pattern

В начале лета я делился ссылкой на 1loc.dev. В комментариях была ссылка на аналогичный ресурс – 30 seconds of code. Примеры кода чуть длинней, но суть та же самая. Есть раздел отдельно по #nodejs сниппетам.
Где посмотреть лучшие практики по безопасности?
#security #list

Лучшие практики безопасности веб-проектов описаны в OWASP cheat sheets. OWASP расшифровывается как Open Web Application Security Project. Вот топ-5 для #nodejs разработчиков:
🔗 NodeJS security cheat sheet
🔗 REST Security Cheat Sheet
🔗 npm Security best practices
🔗 Node.js Docker Cheatsheet
🔗 Microservices Security Cheat Sheet
Как технологии будут востребованы для 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
Какие 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 решение и т.д.
Какие вопросы задать, чтобы проверить понимание Promise/async/await?
#list

Сегодня поделюсь подборкой моих вопросов для интервью по Promise/async/await. Естественно без ответов, иначе как мне потом их на собеседованиях спрашивать.

1. Какие методы нативного класса Promise вы знаете?
2. Напишите Promise, который создаст микротаск.
3. Напишите Promise, который создаст макротаск.
4. Приведите пример, когда вам было необходимо использовать Promise.allSettled()
5. Что такое Promise executor и почему он должен быть синхронным?
6. Расскажите, что плохо с вот таким кодом:
new Promise((resolve, reject) => getSomething((err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
}));
7. Что произойдет если мы сделаем await дважды? Пример кода:
let counter = 0;
const increment = new Promise(resolve => {
counter++;
resolve();
});
await increment;
await increment;
console.log(counter); // 1? 2? something else?
8. Какое ваше мнение по твиту James M Snell:
Ok, opinions needed: An existing API that returns a Promise currently throws certain errors synchronously. It's changed to return rejected promises (e.g. changing
foo() { throw new Error(); return Promise.resolve() } to async foo() { throw new Error(); return Promise.resolve() }
9. Как отслеживать в #nodejs коде Promise, которые имеют множественный resolve/reject? В каких случаях это указывает на неправильное поведение кода?
10. Каким образом вы работаете с встроенными #nodejs функциями в async/await стиле, которые callback интерфейс?
🔥28👍17😢2
Подборка книг для изучения TypeScript
#list #typescript

В сегодняшней подборке все книги на английском языке. Читайте на английском. Это позволит вам изучать устоявшуюся терминологию. Вы ведь не ходите называть Promise Обещанием, а Tuple Кортежем?

📕The TypeScript Handbook. В марте 2021 команда переписала руководство и держит его актуальным после каждого релиза. Поэтому обучение начинайте именно с него. Книгу можно скачать бесплатно, в конце странице grab a copy in Epub or PDF form.

📕Effective TypeScript. Книга от O'Reilly в формате принципов языка с объяснением почему стоит делать именно так. Например: Prefer Type Declarations to Type Assertions

📕Programming TypeScript by Boris Cherny. Еще одна книга от O'Reilly с фокусом на реальной практике применения. Каждая глава заканчивается упражнениями для закрепления теории.

📕TypeScript 4 Design Patterns and Best Practices Свежая книга, которая не только показывает фичи языка, но и паттерны их использования.
👍37🔥12
Подборка книг для изучения JavaScript
#list

Сегодня у нас в рекомендация свежие книги от Axel Rauschmayer. Он ведет блог 2ality.com с обзором новинок в JavaScript. На его сайте exploringjs.com можно прочитать его книги:
📕JavaScript for impatient programmers (ES1–ES2021), книга освещает новые фичи языка включая ES2022. Есть упражнения для закрепления.
📕Deep JavaScript: Theory and techniques (ES1–ES2021) углубление использование языка.
📕Tackling TypeScript: Upgrading from JavaScript альтернатива The TypeScript Handbook для изучения TypeScript.

Другие подборки книг на канале:
- Подборка книг для изучения TypeScript
- Подборка книг для прокачки, когда ты уже Senior
👍25
Какие инструменты упрощают парное программирование?
#list

Extreme Programming (XP) предлагает использовать парное программирование для передачи знаний. В традиционном подходе это предполагает работу вдвоем за одним компьютером. С расцветом удаленки правила поменялись. Вот список инструментов, которые упрощают возможность вдвоем запрограммировать новую фичу или пофиксить баг.

1️⃣Main trend: ScreenSharing в любом видео звонке. В некоторых программах (Zoom, Slack) можно подчеркивать места на экране. Не хватает возможности набирать текст второму пилоту.
2️⃣Developer-friendly, т.е. интеграция в IDE. Примеры: Code With Me от JetBrains и Live Sharing для VisualCode. Требует использования одной и той же IDE в команде.
3️⃣Classic: TeamViewer – лучший вариант для решения проблем во время поддержки пользователей.
4️⃣Old school: tmux или tmate для того, чтобы поделиться терминалом, в том числе текстовым редактором vim/nano. Отлично подходит DevOps-ам для поиска проблем.
5️⃣The future is here: То к чему идет индустрия это browser-based IDE. Примеры: GitHub Codespaces, AWS Cloud9, GCP Cloud Shell. Пока у них нет возможности поделиться сеансом, но уверен она появиться.
🔥11👍2
List of 1000 JavaScript Interview Questions
#list

Сегодня в рекомендациях большая подборка вопросов для JS-интервью с ответами. Список содержит как открытые вопросы, так и тесты на понимания работы кода. Некоторые вопросы морально устарелы, но в целом репозиторий можно рекомендовать для подготовки к собеседованию на JS позицию.
👍28
Какие вопросы задать, чтобы проверить понимание Nodejs perfomance?
#list

Сегодня поделюсь подборкой моих вопросов для интервью по работе с оптимизацией Node.js perfomance. Естественно без ответов, иначе как мне потом их на собеседованиях спрашивать.

1. Какие метрики Node.js процесса вы используете? Как их собираете?
2. Что такое Еvent Loop Latency? Как он рассчитывается?
3. Покажите в вашем коде где вы конфигурируете database connection pool? Как он работает и за что отвечает?
4. Какие способы измерения latency http ответов вы знаете?
5. Каким образом вы определяете bottleneck в вашей системе в целом? А в коде?
6. DevOps команда выдвинула гипотезу, что приложение тормозит из-за логирования. Каким образом вы будете проверять эту гипотезу?
7. Назовите способы ускорения Node.js приложения, которые вы использовали.
👍30😱3🔥1🥰1
#list

Сьогодні у рекомендаціях добірка посилань You don't (may not) need. Якщо у вас на проєкті ще використовується moment.js, то я рекомендую почати з You don't (may not) need Moment.js. Для React розробників буде цікаво прочитати, чому їм може бути не потрібні Redux та React Router. Для Node.js розробників як завжди я рекомендую краще знати CLI.
🔥10👍93
Які питання поставити, щоб перевірити розуміння REST?
#list

Давно не було переліку питань для інтерв'ю. Ви можете їх знайти за тегом #list. Сьогодні поділюся добіркою моїх питань для інтерв'ю щодо REST. Звичайно без відповідей, інакше як мені потім їх на співбесідах запитувати.

1. Опишіть структуру HTTP запиту та відповіді.
2. Розкажіть як працює кешування в Інтернеті.
3. У яких випадках, які групи статус кодів використовуються?
4. Що таке CORS? Для чого він використовується?
5. Що таке Etag? Для чого він використовується?
6. Які існують стандартні HTTP методи? У яких випадках, які ми використовуємо в REST?
7. Як надіслати заголовок, якщо тіло відповіді вже надіслано?
8. Чим відрізняються http1.1 та http2?
9. Спроєктувати REST API для todo list. Функціонал: створити завдання, завершити завдання, змінити опис завдання, видалити завдання, отримати список завдань, змінити порядок завдань, змінити категорію задачі.
10. Спроєктувати REST API для скорочення посилань. Функціонал: створити нове коротке посилання, відкрити посилання, переглянути аналітику за посиланням, видалити посилання.
👍38🔥10🤔3🥰1😁1
Які npm пакети варто встановити глобально?
#list #package

Сьогодні розповім, які пакети в мене встановлені глобально. Я їх використовую як CLI утиліти.
- ngrok/localtunnel робить вашу програму доступною в Internet
- jscpd знаходить дублікати коду. Автор Андрій Кучеренко веде @mathrandomcommunity
- cost-of-modules показує розмір пакетів, що використовуються. Дозволяє швидко пояснити, чому в Dockerfile після npm run build необхідно робити npm prune --production.
- sort-package-json сортує package.json до канонічного вигляду
- depcheck знаходить не використовувані або не оголошені в package.json залежності
- browser-run/bcat виводить результат роботу іншої CLI команди у браузер
- license-checker показує які open source ліцензії у пакетів в ваших залежностях

Перевірити ваш список: npm list -g. А що і навіщо використовуєте ви?
👍462😱1💩1
Які питання поставити потенційному тех. ліду?
#list
Сьогодні поділюсь питаннями для інтерв'ю, щоб перевірити вміння пояснювати технічні теми. Ця навичка особливо важлива тех.лідам та архітекторам.

1. Чим SDK відрізняється від API?
2. Де проходить межа між CI та CD?
3. Яку головну проблему вирішують Promise у порівнянні з callback?
4. У чому відмінність HTTP від ​​WebSockets?
5. Як правильно писати міграцію бази даних?
6. Розкажіть, як працюють AWS lambda?
7. Які проблеми вирішують мікросервіси?
8. У якому разі виправдано використовувати мікрофронтенди?
9. Розкажіть, як би виглядала ідеальна піраміда тестування на вашому попередньому проєкту в ідеальних умовах?
10. Що таке semver та як його використовувати?

У ході інтерв'ю важливо перевірити, що кандидат вміє дати як коротку та просту відповідь (але не втративши важливе), так і оперує необхідною технічною глибинною. Для цього я змінюю контекст питання: "поясніть замовнику/Product Owner, а тепер колезі-інженеру".
👍26🔥6💩1
Cписок освітніх платформ
#list

Розв'язання алгоритмічних завдань:
🔗 leetcode.com – безумовний лідер
🔗 geeksforgeeks.org – якщо ви гуглите алгоритм, то швидше за все потрапите на цей сайт.
🔗 hackerrank.com – крім алгоритмічних завдань, є ще й з тести з фреймворків.

Для вивчення мови
🔗 freecodecamp.org – відмінно підходить для тих, хто тільки починає вчити JavaScript
🔗 exercism.org – підійде і новачкові, який освоює нову мову, і інженеру, який хоче покращити навички код ревью.

Для вивчення Cloud Providers
☁️ aws
☁️ google
☁️ azure
👍362
Як перевірити локальне середовище?
#list #cli

Сьогодні розповім як провести troubleshooting локального середовища.

1️⃣ Контролюйте змінні оточення за допомогою команди env. Нагадаю, що dotenv за замовчуванням має override false. Змінна PATH визначає, у яких папках OS буде шукати виконувані файли.
2️⃣ Використовуйте команду which, щоб перевірити що використовується правильний виконуваний файл. Приклад: which yarn
Якщо ви використовуєте nvm, то результат буде таким:
/Users/{{username}}/.nvm/versions/node/v18.12.1/bin/yarn
3️⃣ Перевіряйте версії використовуючи --version. Приклад: npm --version. Пам'ятаємо про Dev/prod parity. До речі версію npm краще використовувати яка йде у Node.js.
4️⃣ Використовуйте npm doctor, щоб перевірити права.
5️⃣ Перевіряйте конфігурацію:
git config --list --global
npm config list
👍201🔥1
Як уникнути помилок під час створення email шаблону?
#list

Баги в емейлах дуже важко відтворити. Який емейл клієнт використовувався web/mobile/desktop? Цей сам лист чи його перенаправили? Проблема у шаблоні чи змінних?... Замість того, щоб вирішувати ці проблеми, я рекомендую робити правильно з самого початку:
1️⃣ За основу беремо шаблон з популярного сервісу, наприклад sendgrid
2️⃣ Всі рішення щодо верстки звіряємо з caniemail.com. Це аналог caniuse.com
3️⃣ Якщо шаблони зберігаються не в коді, а на сервісі для розсилки листів, то визначаємо, як будемо їх синхронізувати. Приклад AWS SES templates. Немає стандартних рішень, таких як міграція бази даних.
4️⃣ Перевіряємо не тільки html, але text версію листа.
👍32
Що перевірити при розгортанні API?
#list #devops #cloud

1️⃣ Чи є Load Balancer?
Без нього масштабування не можливо.
2️⃣ Чи включений редирект з http на https?
Ваше API має працювати тільки по https.
3️⃣ Чи включений HTTP/3?
74% користувачів мають браузер з підтримкою HTTP/3.
4️⃣ Чи налаштовано стискання (compression)? Які методи підтримуються?
Load Balancer має цю відповідальність, а не Node.js
5️⃣ Чи має публічне API кешування?
Поділ публічного та приватного API (яке вимагає авторизації) відповідальність розробників, а ось налаштувати Load Balancer-а – DevOps інженер.
👍334🔥2
Як завдання не варто вирішувати за допомогою Node.js?
#nodejs_api #list

👉 CPU Intensive Tasks, тобто завдання, що навантажують процесор. Типова відповідь на інтерв'ю включає лише цей варіант. Якщо таке завдання необхідно вирішити, то тут варто використовувати передкалькуляцію з кешуванням або Worker threads/Child process.
👉 Aggregation, окремий випадок CPU Intensive завдання, у якому требо разрахувати якісь метрики. Наприклад, мінімальна/максимальна ціна за торговий день. Тут краще використовувати функції DB.
👉 Compression. Ми перекладаємо це завдання на інфраструктуру, щоб зайвий раз не навантажувати процесор.
👉 Rate Limiting. Ще одне типове завдання для інфраструктури, інакше легко заблокувати масштабування.
👉 Serve Static. За це має відповідати CDN, у якому Node.js може бути лише джерелом статики.
👉 File Uploads. Не варто використовувати Node.js як проксі для завантаження файлу в S3. Для цього є signed url.
👍37🔥3