А ви знаєте про ось ці два репозиторії?
– nodebestpractices
– javanoscript-testing-best-practices
якщо ні, то саме час їх прочитати
– nodebestpractices
– javanoscript-testing-best-practices
якщо ні, то саме час їх прочитати
👍48🔥4
Fwdays запрошує вас на онлайн-конференцію, яка присвячена практичним питанням архітектури програмного забезпечення — Software Architecture fwdays'22!
📝 Теми конференції: Solution Architecture, Cloud Architecture, System Architecture, DevOps.
🗓 Дата — 24 вересня.
Існує 2 варіанти участі:
🏷 Free Online (вільний доступ до перегляду доповідей конференції 24 вересня, доступ до презентацій доповідей)
🏷 Full Online (всі пункти free online пакету, записи всіх ефірів одразу після івенту та упродовж 3-х місяців, Q&A зі спікерами, приватний чат для спілкування з учасниками та спікерами, сертифікат участi).
Квитки та деталі події 👉https://bit.ly/3J8IG73
Fwdays шукають спікерів та спікерок. Якщо ви спеціаліст у сфері Software Architecture і хочете виступити, заповнюйте форму до 24 серпня 👉https://bit.ly/3PT7CS6
📝 Теми конференції: Solution Architecture, Cloud Architecture, System Architecture, DevOps.
🗓 Дата — 24 вересня.
Існує 2 варіанти участі:
🏷 Free Online (вільний доступ до перегляду доповідей конференції 24 вересня, доступ до презентацій доповідей)
🏷 Full Online (всі пункти free online пакету, записи всіх ефірів одразу після івенту та упродовж 3-х місяців, Q&A зі спікерами, приватний чат для спілкування з учасниками та спікерами, сертифікат участi).
Квитки та деталі події 👉https://bit.ly/3J8IG73
Fwdays шукають спікерів та спікерок. Якщо ви спеціаліст у сфері Software Architecture і хочете виступити, заповнюйте форму до 24 серпня 👉https://bit.ly/3PT7CS6
👍7
Що має вміти AWS Developer?
#aws
AWS Certified Developer цей іспит, що перевіряє знання, а не навички. Сьогодні розповім, що я вважаю треба вміти, щоб вважати себе AWS Developer:
– вибирати та правильно використовувати AWS SDK
– deploy and troubleshooting in AWS (навіть не хочу це перекладати)
– взаємодіяти з хмарними ресурсами через Management Console та AWS CLI
– перевіряти та налаштовувати IAM
– емулювати AWS сервіси за допомогою Docker та/або localstack.cloud для локальної розробки
Якщо в цьому списку навичкою замінити AWS інший Cloud (Azure/GCP/etc), то він не втратить своєї актуальності. Мій досвід показує, що перехід з однієї хмари на іншу для розробника займає не більше місяця.
#aws
AWS Certified Developer цей іспит, що перевіряє знання, а не навички. Сьогодні розповім, що я вважаю треба вміти, щоб вважати себе AWS Developer:
– вибирати та правильно використовувати AWS SDK
– deploy and troubleshooting in AWS (навіть не хочу це перекладати)
– взаємодіяти з хмарними ресурсами через Management Console та AWS CLI
– перевіряти та налаштовувати IAM
– емулювати AWS сервіси за допомогою Docker та/або localstack.cloud для локальної розробки
Якщо в цьому списку навичкою замінити AWS інший Cloud (Azure/GCP/etc), то він не втратить своєї актуальності. Мій досвід показує, що перехід з однієї хмари на іншу для розробника займає не більше місяця.
🔥12👍6
Як Node.js розробнику перевіряти мобільні додатки?
#personal_recommendation #advertising
Тестувати додатки можна по-різному. Backend розробнику важливо перевірити взаємодію з API. Перевіряти веб-додатки просто, достатньо запустити Developer Tools і перейти у вкладку Network. На мобільних такої вкладки немає, але її легко отримати за допомогою Proxyman.
Proxyman це нативна програма macOS для аналізу HTTP трафіку. Вона працює як man-in-the-middle, тому запити можна не лише логувати, а й модифікувати, ставити break-point тощо. Що використовувати замість неї для Windows, я навіть не знаю. Вона дозволяє перенаправити мобільний трафік на ваше локальне оточення. Без неї доводиться аналізувати логи на сервері, що дуже сповільнює процес розробки.
Програма платна і коштує своїх грошей. Вона має trail c сильно обмеженим функціоналом. Особисто я встановив Proxyman у рамках підписки Setapp. Там trial 7 днів, але без обмежень функціоналу у всіх 200+ программах. Залишу свою рефералку. Після вашої першої оплати і ви, і я отримаємо безкоштовний місяць.
👉 proxyman.io
👉 setapp.com
👉 setapp.com з реферальним посиланням
#personal_recommendation #advertising
Тестувати додатки можна по-різному. Backend розробнику важливо перевірити взаємодію з API. Перевіряти веб-додатки просто, достатньо запустити Developer Tools і перейти у вкладку Network. На мобільних такої вкладки немає, але її легко отримати за допомогою Proxyman.
Proxyman це нативна програма macOS для аналізу HTTP трафіку. Вона працює як man-in-the-middle, тому запити можна не лише логувати, а й модифікувати, ставити break-point тощо. Що використовувати замість неї для Windows, я навіть не знаю. Вона дозволяє перенаправити мобільний трафік на ваше локальне оточення. Без неї доводиться аналізувати логи на сервері, що дуже сповільнює процес розробки.
Програма платна і коштує своїх грошей. Вона має trail c сильно обмеженим функціоналом. Особисто я встановив Proxyman у рамках підписки Setapp. Там trial 7 днів, але без обмежень функціоналу у всіх 200+ программах. Залишу свою рефералку. Після вашої першої оплати і ви, і я отримаємо безкоштовний місяць.
👉 proxyman.io
👉 setapp.com
👉 setapp.com з реферальним посиланням
🔥13👍1
За годину розповім про те, як працюють serverless function чим вони відрізняються від containers. Роблю доповідь у рамках @dsc_kpi (Google Developer Student Club KPI), але цікавою вона може бути й Senior рівню. Тільки демо без теорії/слайдів і звичайно на Node.js. До зустрічі!
👍23🤔2
Чому NODE_ENV=beta це помилка?
TL;DR; NODE_ENV=production ENV=beta
🇺🇸 English version at dev.to
Нагадую, що третій фактор TwelveFactor App твердить: "Зберігайте конфігурацію в середовищі виконання." Ім'я змінної NODE_ENV каже, що вона визначає Node.js оточення, а не вашої програми.
Приклади, як змінюється поведінка JavaScript екосистеми при NODE_ENV=production
- команда npm install не встановлює devDepencencies
- express.js кешує шаблони та css
- Apollo Server вимикає інтроспекцію схеми
Ви не повинні використовувати NODE_ENV для визначення імені вашого середовища. Але яку змінну використовувати замість NODE_ENV? Відповідь залежить від того, чи будете ви використовувати префікс для змінних, пов’язаних із бізнес-логікою. Такі змінні є feature flags, тобто визначають бізнес-логіку.
Приклад із префіксом FOO:
Приклад без префікса:
Повернемося до NODE_ENV. Зазвичай вона має одне з таких значень:
– development – використовується, якщо не визначено явно. Встановіть це значення під час розробки на вашому комп’ютері.
– test – такі тестові фреймворки, як Jest, автоматично встановлюють це значення.
– production – використовуйте це значення під час виконання коду на сервері
Десятий фактор — Dev/prod parity. Тому треба використання NODE_ENV=production у кожному бізнес-середовищі. Dockerfile є найпростішим місцем для цього. Просто додайте
TL;DR; NODE_ENV=production ENV=beta
🇺🇸 English version at dev.to
Нагадую, що третій фактор TwelveFactor App твердить: "Зберігайте конфігурацію в середовищі виконання." Ім'я змінної NODE_ENV каже, що вона визначає Node.js оточення, а не вашої програми.
Приклади, як змінюється поведінка JavaScript екосистеми при NODE_ENV=production
- команда npm install не встановлює devDepencencies
- express.js кешує шаблони та css
- Apollo Server вимикає інтроспекцію схеми
Ви не повинні використовувати NODE_ENV для визначення імені вашого середовища. Але яку змінну використовувати замість NODE_ENV? Відповідь залежить від того, чи будете ви використовувати префікс для змінних, пов’язаних із бізнес-логікою. Такі змінні є feature flags, тобто визначають бізнес-логіку.
Приклад із префіксом FOO:
FOO_ENV=betaFOO_FEATURE_FLAG=onПриклад без префікса:
ENV=betaFEATURE_FLAG=onПовернемося до NODE_ENV. Зазвичай вона має одне з таких значень:
– development – використовується, якщо не визначено явно. Встановіть це значення під час розробки на вашому комп’ютері.
– test – такі тестові фреймворки, як Jest, автоматично встановлюють це значення.
– production – використовуйте це значення під час виконання коду на сервері
Десятий фактор — Dev/prod parity. Тому треба використання NODE_ENV=production у кожному бізнес-середовищі. Dockerfile є найпростішим місцем для цього. Просто додайте
ENV NODE_ENV=production👍26👏2🔥1
Як посадові обов'язки у Software Architect?
Визначення Software Architect відрізняється від проєкт до проєкту. Тому щоб зрозуміти, а що це за посада, краще запитати посадові обов'язки. Наведу своє розуміння.
– збір вимог важливих для архітектури
– розбиття системи на елементи та опис їх взаємодій
– вибір технічного стека
– оцінка необхідних для реалізації ресурсів (фінансові, часові, технічні)
– архітектурний нагляд, тобто регулярний аналіз реалізації архітектури
Після кожного з цих дій має залишатися артефакт. Наприклад, сторінка в Confluence. Як правило архітектурні рішення приймаються не самостійно, а узгоджуються спільно з лід інженерами та/або CTO.
Software Architect є Software Engineer-ом, тому в його обов'язки може входить писати код чи troubleshooting. Приклади інших обов'язків:
– створення Proof of Concept (R&D Engineer)
– узгодження пріоритетів та виділення ресурсів (Engineering Manager)
– налаштування технічних процесів (Tech Lead)
– аналіз та документація вже існуючої системи (Reverse Engineer)
– створення технічного контенту та просування його серед інженерів (DevRel)
Визначення Software Architect відрізняється від проєкт до проєкту. Тому щоб зрозуміти, а що це за посада, краще запитати посадові обов'язки. Наведу своє розуміння.
– збір вимог важливих для архітектури
– розбиття системи на елементи та опис їх взаємодій
– вибір технічного стека
– оцінка необхідних для реалізації ресурсів (фінансові, часові, технічні)
– архітектурний нагляд, тобто регулярний аналіз реалізації архітектури
Після кожного з цих дій має залишатися артефакт. Наприклад, сторінка в Confluence. Як правило архітектурні рішення приймаються не самостійно, а узгоджуються спільно з лід інженерами та/або CTO.
Software Architect є Software Engineer-ом, тому в його обов'язки може входить писати код чи troubleshooting. Приклади інших обов'язків:
– створення Proof of Concept (R&D Engineer)
– узгодження пріоритетів та виділення ресурсів (Engineering Manager)
– налаштування технічних процесів (Tech Lead)
– аналіз та документація вже існуючої системи (Reverse Engineer)
– створення технічного контенту та просування його серед інженерів (DevRel)
👍20🔥1
Ринок змінюється. Вікторія Придатко робить аналітику щодо тестових. Давайте їй допоможемо. Власне питання:
Як зараз ви ставитеся до тестових завдань?
Як зараз ви ставитеся до тестових завдань?
Final Results
13%
не нормально – не робитиму, навіть якщо вакансія цікава
23%
роблю тільки якщо воно займає не більше 1 години (приклади hackerrank/codility)
29%
роблю тільки в окремих випадках і то після тех інтерв'ю
30%
нормально, роблю за потреби
4%
ваш варіант у коментарях
👍2
Які 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