Які npm пакети варто встановити глобально?
#list #package
Сьогодні розповім, які пакети в мене встановлені глобально. Я їх використовую як CLI утиліти.
- ngrok/localtunnel робить вашу програму доступною в Internet
- jscpd знаходить дублікати коду. Автор Андрій Кучеренко веде @mathrandomcommunity
- cost-of-modules показує розмір пакетів, що використовуються. Дозволяє швидко пояснити, чому в Dockerfile після
- sort-package-json сортує package.json до канонічного вигляду
- depcheck знаходить не використовувані або не оголошені в package.json залежності
- browser-run/bcat виводить результат роботу іншої CLI команди у браузер
- license-checker показує які open source ліцензії у пакетів в ваших залежностях
Перевірити ваш список:
#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. А що і навіщо використовуєте ви?👍46❤2😱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, а тепер колезі-інженеру".
#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
Ви пам'ятаєте, хто платить за вечірку "Всі бажають Node.js розробників"? Це Google. Компанія інвестує мільйони в Chrome та V8. Сьогодні пропоную переглянути вам два відео:
👀 What are Chrome release channels?
👀 New in Chrome 104
#worth_seeing
👀 What are Chrome release channels?
👀 New in Chrome 104
#worth_seeing
❤8
🔥37👍4
Завтра команда Fwdays проведе благодійний стрім з Анастасією Войтовою "Кібербезпека під час війни". Настя крута. Рік тому я робив з нею Voice chat About Security. Впевнений стрім буде ще крутіше.
🔗 Більше інформації на сторінці заходу
👀 Власне сам стрім на YouTube
🔗 Більше інформації на сторінці заходу
👀 Власне сам стрім на YouTube
🔥11👍2
Чому потрібно використовувати scope у іменах пакетів?
#npm
Вчора я робив ревю Workshop: Integration testing of back-end applications і вкотре дав рекомендацію use naming with scope. Нагадаю, що ім'я може мати scope. Приклад:
Ось мої аргументи використовувати scope у всіх ваших пакетах:
1️⃣ вибір вільного та зрозумілого імені значно простіше. Приклад
2️⃣ на рівні коду очевидно які пакети внутрішні.
3️⃣ легко використовувати для потрібного scope окремий npm репозиторій. Детальніше Associating a scope with a registry
Але головний аргумент під час ревю воркшопу був не технічного плану. Порада була: Думай про Open Source як про майбутній бізнес. Колись проєкт може продавати підписку на частину пакетів і scope буде обов'язковий для цього. Приклад https://marmelab.com/ra-enterprise/
#npm
Вчора я робив ревю Workshop: Integration testing of back-end applications і вкотре дав рекомендацію use naming with scope. Нагадаю, що ім'я може мати scope. Приклад:
@nestjs/common.Ось мої аргументи використовувати scope у всіх ваших пакетах:
1️⃣ вибір вільного та зрозумілого імені значно простіше. Приклад
@<project_name>/eslint-config2️⃣ на рівні коду очевидно які пакети внутрішні.
3️⃣ легко використовувати для потрібного scope окремий npm репозиторій. Детальніше Associating a scope with a registry
Але головний аргумент під час ревю воркшопу був не технічного плану. Порада була: Думай про Open Source як про майбутній бізнес. Колись проєкт може продавати підписку на частину пакетів і scope буде обов'язковий для цього. Приклад https://marmelab.com/ra-enterprise/
👍12
Які типи додатків JavaScript існують?
Додатки можна розділити по домену (gambling, dating, traveling, etc), по бізнес-моделі (SaaS B2B, B2C mobile). Але я поділюсь своїм баченням типології на основі технології розробки (design, coding, QA, delivery)
Перевірена класика:
- Single Page Application
- Web API (Rest or GraphQL)
- Server-Side rendering (Next.js)
Часті гості:
- Static rendering (JAM)
- Real-time App with Web Sockets
- Mobile app with React Native
- Web3 App
- Business logic inside No Code/Low Code
- IoT
- Chat Bots (Telegram/Facebook/etc)
- CLI Utils
Екзотика у вигляді розширення:
- Chrome Extension
- Visual Studio Code Extension
- Docker Extension
- Zoom App
- Jira/Confluence App
Зверніть увагу, що з точки зору процесу розробки SPA на React нічим не відрізняється від SPA на Vue. Чого не скажеш про розширення або Web3 VS IoT. Якщо ви бажаєте розвиватися як інженер, то додати до свого портфоліо новий тип додатка буде найкорисніше.
Додатки можна розділити по домену (gambling, dating, traveling, etc), по бізнес-моделі (SaaS B2B, B2C mobile). Але я поділюсь своїм баченням типології на основі технології розробки (design, coding, QA, delivery)
Перевірена класика:
- Single Page Application
- Web API (Rest or GraphQL)
- Server-Side rendering (Next.js)
Часті гості:
- Static rendering (JAM)
- Real-time App with Web Sockets
- Mobile app with React Native
- Web3 App
- Business logic inside No Code/Low Code
- IoT
- Chat Bots (Telegram/Facebook/etc)
- CLI Utils
Екзотика у вигляді розширення:
- Chrome Extension
- Visual Studio Code Extension
- Docker Extension
- Zoom App
- Jira/Confluence App
Зверніть увагу, що з точки зору процесу розробки SPA на React нічим не відрізняється від SPA на Vue. Чого не скажеш про розширення або Web3 VS IoT. Якщо ви бажаєте розвиватися як інженер, то додати до свого портфоліо новий тип додатка буде найкорисніше.
👍25🔥1
Огляд Node.js v18: structuredClone
#nodejs_api
Як ви знаєте об'єкти на відміну від примітивів передаються за посиланням, а не за значенням. Тому потрібно вміти робити копію об'єкта. Раніше для цього використовували
Сьогодні всі сучасні браузери підтримують structuredClone, який підтримує deep clone та кругові посилання. Він з'явиться в Node.js 18. Приклад із документації на зображенні.
У Node.js вже зараз його можна використовувати за допомогою Structured clone polyfill.
#nodejs_api
Як ви знаєте об'єкти на відміну від примітивів передаються за посиланням, а не за значенням. Тому потрібно вміти робити копію об'єкта. Раніше для цього використовували
spread оператор чи Object.assign. Але це працювало лише для об'єктів з одним рівнем вкладеності.Сьогодні всі сучасні браузери підтримують structuredClone, який підтримує deep clone та кругові посилання. Він з'явиться в Node.js 18. Приклад із документації на зображенні.
У Node.js вже зараз його можна використовувати за допомогою Structured clone polyfill.
🔥35👍7
🆕 Google більше не рекомендує використовувати SPA для Google Search
#news
Google оновив документацію щодо JavaScript-generated content, а це SPA/Ajax/etc. Тепер документація говорить, що це workaround, а не довгостроковий підхід. Використовуйте оновлену документацію як головний аргумент на користь Next.js/JAM stack/etc для SEO.
🔗 Першоджерело
#news
Google оновив документацію щодо JavaScript-generated content, а це SPA/Ajax/etc. Тепер документація говорить, що це workaround, а не довгостроковий підхід. Використовуйте оновлену документацію як головний аргумент на користь Next.js/JAM stack/etc для SEO.
🔗 Першоджерело
👍19🤔4❤2
🆕 Stackshare опублікував серію з 3-х статей про технічне розростання (Tech Sprawl)
#news
Tech sprawl – термін досить новий. Це тип технологічного боргу, викликаного використанням різних технологій/інструментів/версій, які ваша організація використовує для розв'язання однієї проблеми. Статтю варто додати до закладок, щоб цитувати аргументи на користь консистентності технічного стека.
🔗 stackshare.io
🔗 Перша статья
#news
Tech sprawl – термін досить новий. Це тип технологічного боргу, викликаного використанням різних технологій/інструментів/версій, які ваша організація використовує для розв'язання однієї проблеми. Статтю варто додати до закладок, щоб цитувати аргументи на користь консистентності технічного стека.
🔗 stackshare.io
🔗 Перша статья
👍20🔥2
Node.js прибирає термін native modules
#nodejs_api
Документація та source code більше не використовує терміни native чи core modules. Натомість повсюдно використовується built-in modules. Нагадаю, що з 16-ї версії такі модулі можна імпортувати з префіксом
🔗 Pull
#nodejs_api
Документація та source code більше не використовує терміни native чи core modules. Натомість повсюдно використовується built-in modules. Нагадаю, що з 16-ї версії такі модулі можна імпортувати з префіксом
node:. Наприклад:const http = require('node:http')🔗 Pull
👍22
📕 The Node.js Handbook
#books
Сьогодні хочу порадити книгу "The Node.js Handbook". Автор Flavio Copes використовує правило "вивчайте 80% теми за 20% часу". Тому його посібники (handbooks) будуть корисні початківцям. Книга була оновлена у липні 2022 року.
📕 The Node.js Handbook
🔗 All Handbooks
#books
Сьогодні хочу порадити книгу "The Node.js Handbook". Автор Flavio Copes використовує правило "вивчайте 80% теми за 20% часу". Тому його посібники (handbooks) будуть корисні початківцям. Книга була оновлена у липні 2022 року.
📕 The Node.js Handbook
🔗 All Handbooks
🔥43❤1
Що таке npm alias?
#npm
npm alias дозволяє встановити інший пакет, але не змінювати звернення до коду. Для цього використовується такий формат
Ось посилання на документацію та ще нагадаю про patch-package
#npm
npm alias дозволяє встановити інший пакет, але не змінювати звернення до коду. Для цього використовується такий формат
<alias>@npm:<name>. Приклади:npm i @nestjsx/crud@npm:@rewiko/crudnpm i react@npm:@preact/compat react-dom@npm:@preact/compatОсь посилання на документацію та ще нагадаю про patch-package
👍24👏1🤯1
У п'ятницю я поділився рекомендацією використати
🔗 Source code
Висновки: Коли цикл порожній, обхід масиву відбувається дійсно швидше (1,75 раза). У реальних проєктах цикл містить команди, тому різниця статистично незначуща.
Але основна ідея цього посту: 💡виміряти перформанс легко💡. Перевіряйте ваші конкретні випадки.
for of замість класичного for. У коментарях був відгук, що "той хто це пише не перевіряв перформанс". Зробив Benchmark за допомогою hyperfine.🔗 Source code
Висновки: Коли цикл порожній, обхід масиву відбувається дійсно швидше (1,75 раза). У реальних проєктах цикл містить команди, тому різниця статистично незначуща.
Але основна ідея цього посту: 💡виміряти перформанс легко💡. Перевіряйте ваші конкретні випадки.
👍26⚡7😁1
🆕 HTTP/2 PUSH застарів
#news
Корисність HTTP/2 PUSH завжди була сумнівною, оскільки сервер не знає про стан кешу клієнта. У Chrome 106 буде видалено підтримку HTTP/2 PUSH. Замість нього треба використовувати early-hints.
🔗 Першоджерело
🔗 Early Hints
#news
Корисність HTTP/2 PUSH завжди була сумнівною, оскільки сервер не знає про стан кешу клієнта. У Chrome 106 буде видалено підтримку HTTP/2 PUSH. Замість нього треба використовувати early-hints.
🔗 Першоджерело
🔗 Early Hints
👍12
☁️ Як налаштувати retry у AWS SDK?
#aws
Багато розробників не знають або забувають, що AWS SDK має повторні спроби (retry). Це включено за замовчуванням. SDK зробить retry якщо помилка є тимчасовою (HTTP коди 400, 408, 500, 502, 503 і 504) або регулювання (HTTP коди 400, 403, 429, 502, 503 і 509) чи таймаутом.
Якщо ви використовуєте JavaScript SDK v2, тобто
Найпопулярнішим клієнтом SDK v3 є
Для конфігурації AWS SDK бере параметри:
– з кода
– зі змінних оточення (
– з CLI сonfig profile (
– або використовує значення за замовчуванням (
* Розташування наведено в порядку зменшення пріоритетності.
Особисто мені не подобаються значення за замовчуванням. Вони створюють магію 🪄. Тому, щоб не забувати про наявність retry у aws проектах я використовую
#aws
Багато розробників не знають або забувають, що AWS SDK має повторні спроби (retry). Це включено за замовчуванням. SDK зробить retry якщо помилка є тимчасовою (HTTP коди 400, 408, 500, 502, 503 і 504) або регулювання (HTTP коди 400, 403, 429, 502, 503 і 509) чи таймаутом.
Якщо ви використовуєте JavaScript SDK v2, тобто
aws-sdk, настав час його оновити. Налаштування retry можна зробити тільки для всіх сервісів відразу, але аналіз коду показує, що вони застосовуються не скрізь. ДетальнішеНайпопулярнішим клієнтом SDK v3 є
@aws-sdk/client-s3. Він, як і всі v3 пакунки, дозволяє налаштувати maxAttempts і retryMode. Приклад:const { S3 } = require('@aws-sdk/client-s3');const client = new S3({ retryMode: 'standard', maxAttempts: 10 });retryMode може бути standard (за замовчуванням) і adaptive. В адаптивному режимі ви можете встановити власну реалізацію rateLimiter. Подробиці можна знайти у коді @aws-sdk/middleware-retryДля конфігурації AWS SDK бере параметри:
– з кода
– зі змінних оточення (
AWS_MAX_ATTEMPTS/AWS_RETRY_MODE)– з CLI сonfig profile (
max_attempts/retry_mode)– або використовує значення за замовчуванням (
3/standard)* Розташування наведено в порядку зменшення пріоритетності.
Особисто мені не подобаються значення за замовчуванням. Вони створюють магію 🪄. Тому, щоб не забувати про наявність retry у aws проектах я використовую
AWS_REGION та AWS_MAX_ATTEMPTS у .env.example.👍25
Год назад на календаре был День Независимости Украины.
Сьогодні ж є день Незалежності моєї Батьківщини.
Год назад мы вели соцсети на русском.
Тепер усі пости українською, бо мова – це зброя.
Год назад мы смотрели Netflix, чтобы подтянуть английский.
Сьогодні наші батьки дивляться Netflix, щоб підтягнути українську.
Год назад мы собирали деньги на подарок к дню рождения.
Сьогодні ми скидаємось Притулі на Байрактарі та супутники.
И я знаю когда все поменялось.
Все змінилося рівно півроку тому.
Сьогодні ж є день Незалежності моєї Батьківщини.
Год назад мы вели соцсети на русском.
Тепер усі пости українською, бо мова – це зброя.
Год назад мы смотрели Netflix, чтобы подтянуть английский.
Сьогодні наші батьки дивляться Netflix, щоб підтягнути українську.
Год назад мы собирали деньги на подарок к дню рождения.
Сьогодні ми скидаємось Притулі на Байрактарі та супутники.
И я знаю когда все поменялось.
Все змінилося рівно півроку тому.
❤190👍40❤🔥11🔥5😁1