en
Feedback
Node.js Recipes

Node.js Recipes

Open in Telegram
3 195
Subscribers
No data24 hours
-47 days
-230 days
Posts Archive
Хочу допомогти своєму товаришу Віталію Ратушному у його збиранні грошей для ЗСУ. Буду відвертим, цей збір ні чим не відрізняється від десятка йому подібних, за винятком: 1) Це перший збір, що я піарю на каналі. 2) Донат на 2000+грн можна обміняти на мою годинну консультацію з потрібного вам питання або мок інтерв'ю зі зворотним зв'язком. Доступно для перших п'яти. 3) Донат на 10.000+грн можна обміняти на 4-е менторинг сесії на протязі цього літа. На першій аналізуємо поточний рівень, куди хочете рухатися та складаємо план. На наступних аналізуємо прогрес і вносимо виправлення. Доступно для перших трьох. FAQ ❓Чому саме зараз? Цього тижня я маю першу відпустку більше ніж за два роки. ❓Як зробити запит? Після донату просто напишіть мені в телеграм, я надішлю посилання на calendly, щоб ви забронювали таймслот. ❓А слоти ще лишилися? Я зроблю апдейт посту, коли закінчуватимуться. Реквізити: 🔗 Посилання на МоноБанку 💳 Монобанк 5375 4112 0190 4310 💳 Приватбанк 4149 6090 0764 1402 💵 Payoneer v.ratyshnij@gmail.com 🔗 Банка на Wise 🔗 Пост на FB 🔗 Notion Дякую за донати. Все буде Україна!

​​Поділюся досвідом використання transform.tools. Частіше всього я використовую JSON To #TypeScript. Після трансформації можуть знадобитися правки, наприклад, додати enum. Приклади використання: – додати інтерфейс події для Google Cloud Function. В ідеальному світі це вже повинно бути в SDK. – описати інтерфейси запитів і відповідей для інтеграції зі стороннім API, у якому є текстова документація, але не специфікація. Якби була специфікація, наприклад Swagger, то правильно було б створити типи з неї. Простий інструмент, який може заощадити час, тож про нього потрібно пам'ятати.

Сьогодні в рекомендаціях два відео з Google I/O 2016 присвячені Firebase RealTime DB. У деяких випадках не варто створювати своє API, а краще використовувати цю базу. Наразі вже є Cloud Firestore, але концепції з відео не втрачають своєї актуальності. #worth_seeing 👀 Deep Dive into the Realtime Database 👀 The key to Firebase security

Які питання поставити, щоб перевірити розуміння 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 для скорочення посилань. Функціонал: створити нове коротке посилання, відкрити посилання, переглянути аналітику за посиланням, видалити посилання.

#softskills
#softskills

Коли використовувати npm ci? #npm Нагадаю npm ci або npm clean-install виконуватиме такі дії: 1. Видалить node_modules. 2. Встановити всі залежності з package-lock.json На відміну від npm install, npm ci ніколи не змінюватиме ваш package-lock.json та викине помилку, якщо треба його змінити. Тому npm ci гарантую повторяємось. В CI використовуйте npm ci та кешування node_modules або npm cache директорії (команда npm config get cache покаже де вона). В Dockerfile використовуйте npm ci. Його слід роботи після копіювання package.json та package-lock.json але копіювання до js/ts файлів. Це треба для Docker layer caching. При локальній розробці використовувати npm ci не принципово.

Як змінити модифікатор TypeScript? #typescript Версія TypeScript 2.8 додала можливість додавати або видаляти складовим типам модифікатори readonly та ?. Для цього використовують очевидні оператори + і -. Детальніше в документації. Приклад використання: interface ReadOnlyTodo { readonly title: string readonly description: string readonly completed: boolean } type Mutable<T extends object> = { -readonly [K in keyof T]: T[K] } type MutableTodo = Mutable<ReadOnlyTodo> Рецепти на тему: - Як підтягнути TypeScript?

Як прискорити eslint? #cli #tooling Чи довго працює eslint залежить від вашого проєкту та налаштувань eslint (включаючи правила, що використовуються). 1. Перевірте, чи eslint перевіряє лише потрібні файли. Раптом ви настроїли перевіряти node_modules? Щоб вивести всі файли, включаючи ті, де немає помилок, додайте в команду --format tap. 2. Налаштуйте, замініть або вимкніть довгі правила. Для їх знаходження запустіть змінну оточення TIMING=1. Приклад TIMING=1 npm run eslint. Докладніше в документації 3. Якщо все вище написане не допомагає, то час включати cache. Для цього додайте --cache. Ви можете зіткнутися з типовою проблемою кешування – коли скинути кеш або чому він порожній. Тому треба додати --cache скрізь, інакше eslint затиратиме кеш. Докладніше у документації

​​Why Monorepos? #worth_seeing Відео з OpenWorldJS 2022. Доповідач Jeff Cross працював у Google, а як ми знаємо саме там найкрутіший monorepo. Після відходу Джеф співзаснував Nrwl. Ця компанія консультує з monorepo та Angular, а ще створила nx. Доповідь складається з двох частин: ретроспективи переходу від monorepo до polyrepos та аналізу сучасного monorepos. Доповідь всього 20 хвилин, тому детальний аналіз краще почитати на сайті. Посилання: - Видео - monorepo.tools - nx.dev - Nrwl is taking over stewardship of Lerna

За півгодини починаю свою доповідь React applications Failures. Ще можна встигнути підключитися https://fwdays.com/event/react-fwdays-2022 Слайди https://speakerdeck.com/galkin/react-applications-failures

NestJS v9 is now available! #nestjs Сьогодні Каміль офіційно оголосив про реліз нової версії Nest.js. Що нового: – Nest.js REPL (read-eval-print loop). У певних випадках може бути заміною пакета nestjs-command та його аналогів. Зручно для troubleshoting-а вашої програми, але може створювати ризики безпеки в production через відсутність логування – Спрощення роботи з динамічними модулями за допомогою ConfigurableModuleBuilder – Durable providers полегшує роботу для multi-tenant додатків (наприклад коли кожна компанія має свою базу даних). Не варто використовувати у високонавантажувальних додатках – Оновлення версії fastify та перехід на ioredis c redis Перехід на нову версію виглядає простим за умови, що ви вже оновили @nestjs/typeorm на v8.1. Під капотом у цій версії йде оновленя typeorm v0.2 на v0.3. А там багато breaking changes. На місці Каміля я робив би цю зміну якраз у цьому мажорному оновленні.

Як виправити npm ERR! ERESOLVE could not resolve? #npm При встановленні залежностей можна часто побачити помилку: npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve ... npm ERR! Fix the upstream dependency conflict, or retry npm ERR! this command with --force, or --legacy-peer-deps npm ERR! to accept an incorrect (and potentially broken) dependency resolution. Відновлення залежностей не завжди варіант. Тому до Node.js 16.14 рекомендований спосіб був прописати legacy-peer-deps=true у .npmrc проекту або використовувати yarn resolutions. У Node.js 16.14 йде npm 8.3. Цей апдейт додав overrides, аналог yarn resolutions. Приклад використання в package.json для одного проекту React: "dependencies": { "react": "^18.1.0", "react-dom": "^18.1.0", "react-json-view": "^1.21.3" }, "overrides": { "react-json-view": { "react": "18.1.0", "react-dom": "18.1.0" } } Рецепти на тему: – Що таке .npmrc і чому його варто додати?Як виправити код у node_modules?Тонкощі роботи з npm scripts

Навіщо потрібне infer у TypeScript #typescript Ключове слово infer — це потужний інструмент, який дозволяє розгортати та зберігати типи під час роботи з чужим TypeScript кодом. Воно не може використовуватися без Conditional Types та поза пропозицією extends. Infer дозволяє визначити змінну в межах нашого обмеження, на яку буде посилатися або повертати. наприклад, так можна отримати тип першого аргументу функції: type GetFirstArgumentOfAnyFunction<T> = T extends ( first: infer FirstArgument, ...args: any[] ) => any ? FirstArgument : never Зверніть увагу, що описати це тільки через генерики неможливо.

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

​​Can You Change the Behavior of a Running Node.js Process From the Outside? #worth_seeing Доповідач Vladimir de Turckheim показує як за допомогою дебаг протоколу змінити поведінку Node.js процесу. Так це hacking. Саме тому, деякі компанії для продакшену компілюють Node.js без модуля inspector. 👀відео

​​Друзі, раді вам повідомити, що 9 липня команда Fwdays проведе онлайн-конференцію JS+React fwdays’22! 🤩 🤓 В основний день конференції (9 липня, субота) на вас чекають доповіді не тільки з React, але ще й з JavaScript, ознайомитись з програмою івента можна за посиланням 👉 https://bit.ly/3bG6GC5  Програма з головними спікерами:   🔹Наталія Теплухіна розповість про “Local state and server cache: finding a balance” 🔹Володимир Агафонкін говоритиме про “Життєвий JavaScript: вирішення побутових задач візуалізацією даних” 🔹Роман Шевчук виступить з доповіддю “Use Component Drivers to Control Components in Tests” 🔹Інна Іващук розкаже про ”Use the Force and automate React app checks” 🔹Віктор Турський розповість про “Автоматизовані тести для React фронтенду” 🔹Chen Hui Jing — “Building layouts the way the web intended” та не лише.   Види участі: ✅ FREE ONLINE (перегляд доповідей у всіх треках конференції 9 липня) ✅ ONLINE FULL (перегляд доповідей у всіх треках 9 липня та додаткових форматах, доступ до записів всіх ефірів після івенту та ін)  Який обирати — вирішувати тільки вам. Реєструйтесь безкоштовно або використайте промокод 04D3B0D2A1 та отримайте знижку 5%. Деталі за посиланням 👉 https://bit.ly/3bG6GC5 Також, 8 липня о 17:00, відбудеться благодійний стрім з експертами-айтівцями, які поділяться своїм досвідом роботи під час війни в Україні. Основна мета стріму — зібрати 300 000 грн на коптер для ЗСУ. Зібрані кошти будуть передані у благодійний фонд KOLO. Приєднуйтесь! Слава Україні! 💙💛

Що таке Parameterized query у PostgreSQL? #database Використання template string під час створення SQL запитів може стати причиною SQL ін'єкції. Нехай у нас є такий код: client.query(`INSERT INTO users(name, email) VALUES('${name}', '${email}') RETURNING *`); Наприклад, порівняйте результати його виконання з const name = 'Homer'; const email = 'homer@simpson.com'; та const name = 'Hacker'; const email = "hacker@simpson.com'); DELETE FROM users --'; Звичайно, валідація вхідних даних може запобігти ін'єкції SQL. Однак правильно не використовувати у запитах JS змінні, а параметри. Виправлений код виглядає так: client.query('INSERT INTO users(name, email) VALUES($1, $2) RETURNING *', [name, email]); Усі query builders генерують такі запити, а DB клієнти вміють із ними працювати.

В рамках JS + React fwdays'22 яку з моїх тем вам було б найцікавіше послухати?
Anonymous voting

Attention 📢 9 липня Fwdays проводитиме онлайн конференцію— JS + React fwdays'22 😍 Тому, вони активно шукають доповіді з Jav
Attention 📢 9 липня Fwdays проводитиме онлайн конференцію— JS + React fwdays'22 😍  Тому, вони активно шукають доповіді з JavaScript на основний день конференції🙌🏻 Якщо ви розробник(-ця), хочете виступити, щоб поділитися своїми знаннями і досвідом, а також прокачати свій speaking skill, заповнюйте форму до 13 червня 👉 https://bit.ly/3PVS695 Якщо ви знаєте кому це буде цікаво, будь ласка, поділіться цим дописом😌 Також, окрім основного дня конференції, вони проведуть стрім, де будуть збирати донейти на ЗСУ. 10% від вартості квитка перераховують на гуманітарну допомогу українцям та на ЗСУ, щоб наблизити день нашої перемоги💙💛

Сьогоднішній рецепт присвячений #npm scripts Щоб побачити їхній список треба запустити npm run. Так, без вказівки імені скрипту. Це дуже зручно у новому проєкт, коли ти ще не пам'ятають усіх скриптів. А ось скрипти, які я рекомендую мати у кожному проєкт - watch чи start – запускає додаток для розробника, тобто зміни у коді рестартуют додаток - format – виправлення помилок код-стайла за допомогаю prettier та eslint - lint – перевірка код-стайлу за допомогаю prettier та eslint - typing – перевірка за допомогаю typescript - build – створює artifact (bundle у SPA) Багато скриптів не потрібні, якщо знати про -- -argument. Наприклад, замість debug, я використовую npm run watch -- -debug. Рецепті по цій темі: – Тонкости работы с npm scripts