Node.js Recipes
2.23K subscribers
64 photos
1 file
305 links
По буднях нотатки по #Nodejs розробці, по вихідним огляди конференцій та доповідей (с) @galkin_nikita
Співробітництво https://telegra.ph/node-recipes-01-19
Download Telegram
Когда 1% имеет значение?
#worth_seeing

Техническая часть:
Решил поделить своим докладом с Highload fwdays'18. В его рамках я делюсь несколькими кейсами с высокой нагрузкой. Доклад я начинаю, с определения что же такое высокая нагрузка. С точки зрения разработчика: это когда ваша инфраструктура уже не справляется с нагрузкой. С точки зрения бизнеса: это когда 1% имеет значение.
👀 video
🔗 Slides

Злободневная часть:
Посмотрели видео? На нем я. Никита Галкин, автор этого канала. Не все читатели знают, что я из Донецка. Весь 2014 год я провел в нем вместе с семьей. Я видел своими глазами минометные залпы с террикона под контролем ДНР, как в сторону ВСУ, так и в сторону жилых кварталов Донецка. Я считаю, что это делалось для картинки на российского ТВ.

В комментариях спрашивают, как я отношусь к тому, что в городах Украины ВСУ заводит технику в города, ставит их рядом с мирными жителями. Как я отношусь, к тому что украинские власти раздают оружие местным.

Я это поддерживаю. Я верю в ВСУ, я отправляю ей донаты. Украинцы защищаются от оккупации. Среди нас находиться этот 1%, не военных, а гражданских. 1 % мирного населения, готового взять в руки оружие, бросить коктейль Молотова или устроить DDoS на ресурсы вражеские пропаганды. Украинцы защищают свое право выбирать президента, а не жить под тиранией.

Задам вопрос читателям из РФ и Беларусь. А как вы относитесь к тому, что вы не можете поменять ваших царьков? Как вы относитесь к тому, что Путин угрожает всему миру ядерной кнопкой? Как вы относитесь к тому, что ваш 1% не имеет значения?
Спасибо, что продолжаете читать канал. Никто не может быть в стороне от войны, которая может превратиться в третью мировую.

Лично я продолжаю читать аналитику от Эрика Наймана в @HugsFund. Хорошая цитата из его канала:

Теперь у РФ только два пути
1️⃣ стать Северной Кореей во главе с мудрилой Пу Вла Ху
или
2️⃣ Путин уйдет и РФ постепенно начнет становиться нормальной страной 

Несколько новостей из IT, которыми я хотел бы поделиться.

ХабраХабр, русский аналог DOU, опубликовал свою позицию. По сути это напоминание, что "Хабр вне политики", но с ссылкой в Post Scriptum на открытое письмо представителей российской ИТ-индустрии.

Node.js поддерживает Украину
Меньше суток назад на официальный Node.js сайт добавили #StandWithUkraine и откатили, чтобы "Reverts #4446 to wait for 24h for more reviews". Уверен, что в ближайшее время #4450 будет на официальной странице.
Вчера в TypeScript блоге появилась заметка A Proposal For Type Syntax in JavaScript. На текущий момент пропосал находиться на Stage-0. Его идея убрать обязательный этап компиляции TS в JS с помощью TypeScript/Babel.

Еще в блоге были Release Notes TypeScript 4.6.
Мой коллега Vitalii Ruban, с которым мы вместе были в программном комитете JSFest, делает Free React Course For Beginners. Подробности в канале @reactbeginners.
​​NIX MultiConf вже у ці вихідні!
Долучайся до наймасштабнішої в Україні IT-конференції!

Стійкість України надихає весь світ. Натхненне цією силою і наше IT-ком’юніті.

Уже цього тижня, 21-22 травня, топові зарубіжні та українські IT-експерти, підприємці та лідери думок об'єднаються на NIX MultiConf, щоб нагадати світові: Україна — надійне місце для розвитку бізнесу.

Долучайся до спільноти NIX MultiConf!

У програмі:
🔹 Виступи зарубіжних та українських бізнес-лідерів
Вперше на NIX MultiConf — окрема панель для підприємців та всіх, хто цікавиться IT-бізнесом.
🔹 Лекції для IT-спеціалістів від фахівців NIX
Новинки технологій, реальні кейси і корисні інструменти для роботи розберемо за такими напрямками: Java, JS, .NET, DATA, QA, PHP, PM, Python та ін.
🔹 Збір донатів на перемогу
Сьогодні кожен тримає свій фронт. Ми боронимо IT-сферу, а наші захисники — Україну. Тому під час трансляції ти можеш долучитися до збору коштів на потреби ЗСУ та волонтерів.

Стати ближче до світових спікерів дуже просто — ставиш їм питання у чаті трансляції й одразу отримуєш відповідь. Так на NIX MultiConf ти вже будеш на одній хвилі з топовими експертами ;).

А поки переходь за посиланням, дізнавайся повну програму конференції та обирай цікаві тобі лекції. 

Коли і де: 21-22 травня, онлайн на YouTube-каналі NIX

Чекаємо тебе на NIXMultiConf!
Все буде Україна! Все буде NIX!
Forwarded from ДевОпс Інженер 🇺🇦 (Oleg Mykolaichenko)
Друзі, DevOps Days Kyiv зібрав €100000 і залучив Келсі Хайтауера!

Точніше, наразі результат такий: €101,300 raised of the €100,000 goal

Хочу поділитись з вами великою радістю і гордістю - DevOps Days Kyiv досяг бажаного результату і залучив кошти, які розподілить між 6 перевіреними фондами (детальніше - на сайті). Особливістю є те, що кошти не перерозподілені всередині країни - івент був націлений на міжнародну DevOps аудиторію, відповідно в більшості випадків донатили великі компанії та міжнародні спільноти, які мають відношення до DevOps. Тобто я це бачу як пряме залучення коштів, що є, безсумнівно, прекрасним результатом.

Багато хто брав участь у івенті, але для тих хто пропустив - додаю посилання на 2 дні конференції:
👉 https://www.youtube.com/playlist?list=PL_O8YSX8ckfccTEvjp26fBXiaYzijUPD2
👉 https://www.youtube.com/playlist?list=PL_O8YSX8ckfcoRds7TEjsP_T6EFe69vuu

Цікаво, що всі без винятку слайди та доповіді мали на меті показати підтримку, прихильність, або досвід України та цей вектор червоною ниткою пройшов через всю адженду конференції - DevOps in crysis. Символічно зробила Lena Hall з AWS - в неї не було жодних інших кольорів на слайдах, окрім синього і жовтого.

Також, вперше на українському івенті ми побачили недосяжного Келсі Хайтауера! Виправте якщо це не так і він ще десь у нас брав участь, але, принаймні я - більше ніде не зустрічав, хоча мільйон разів чув що всі без винятку хотіли б його бачити.

Окей. Звичайно, результат 100к не може бути реалізований без найсильнішої команди. Тому, якби у конференції могли б бути титри - нехай вони будуть тут (порядок довільний):

⭐️ Mykola Marzhan
⭐️ Yurii Rochniak
⭐️ Olha Truten
⭐️ Margaret Valtierra
⭐️ Sasha Rosenbaum
⭐️ Viсtoria Korobkina
⭐️ Julia Olefir
⭐️ Diana Tereshchenko

Ці прекрасні люди займались всім, що приховано, але є величезною роботою - роботою з компаніями, спонсорами, інтеграціями, підбором і залученням спікерів, відкриття рахунків, підбором фондів, і ще багато-багато речей і процесів, без яких цього результату не було. Велика подяка!

Українські девопс-козаки, які готували доповідь англійською (!), були готові підтримати і поділитись досвідом з міжнародною DevOps спільнотою:
💪 Volodymyr Tsap
💪 Vsevolod Poliakov
💪 Andii Bilous
💪 Anton Babenko

І окремо адміни опенспейс кімнат, які запалювали теми, слідкували за порядком і задавали тренд:
🎯 Vlad Voloshyn
🎯 Vlad Panchenko
🎯 Roman Tkach
🎯 Serhii Mikhno
🎯 Maxym Vlasov
(+ ті самі люди зі списків вище)

Ледь не забув інформаційних партнерів (підписуйтесь на ці канали): 
@catops
@xpinjection_channel
@oleg_log
@full_of_hatred
@sysadmin_tools
@devops_easy
Serhii Mariiekha - повертай свій канал 
@deadopsclub
@ddosKotyky
@KharkOps
@UkropsDigest

Десятки мітингів підготовки, сотні імейлів, тисячі відвідувачів і €101,300 залучено станом на зараз.

Завершити хотілося б словами інженера на ім'я Дункан з Ірландії, який прийшов в кімнату опенспейсу зі словами:
- “До конференції кинув донат, а зараз захотів послухати про що ви тут говорите. Але в мене там бабця і жіночка з України - я їх захостив, то зараз уже піду подивлюсь, що і як вони там.”
“Ооооо мееен!” - відповіли всі одночасно з цієї кімнати.
Forwarded from JavaScript.Ninja News (Illya Klymov 🇺🇦)
Друзі, сьогодні о 6 вечора пан Артем Захарченко, людина яка 10 років проводила KharkivJS прийде на благодійний подкаст з Сашею Соловйовим, де буде обговорювати волонтерство і айтішечку. Я певен що у Артема безліч історій і про волонтерство (навіть ті що я знаю) і про namecheap.com, де він працює

Приєднуйтесь, буде цікаво. Ну і оскільки стрім благодійний є мета - зібрати на дрон для підрозділу Кракен. Я вже підтримав і закликаю вас зробити також

https://www.youtube.com/watch?v=1k_HYTPN4Ao
Я відновлю регулярні публікації про Node.js у червні. Якою мовою?

I will resume regular posting about Node.js in June. In what language? Я возобновлю регулярные публикации об Node.js в июне. На каком языке?
Final Results
59%
Українською мовою
42%
English
28%
Я против РФ, но читать мне быстрее на русском
6-10 червня запрошуємо долучитися до тижня онлай-мітапів Grammarly Tech Week #StandWithUkraine!

Усі події Grammarly, як завжди, безкоштовні. Ми будемо вдячні учасникам за будь-який внесок до фонду чи організації (кілька варіантів можна знайти за посиланням https://gram.ly/GTWUkraine), які підтримують Україну. 🇺🇦

📢Протягом тижня щовечора експерти з інженерних та продуктових команд ділитимуться досвідом і розповідатимуть більше про підходи до розробки та тестування у Grammarly!

Реєструйтесь і долучайтесь до подій:
🗓7 червня: The Story of Declarative React at Grammarly - Як команді Grammarly Editor вдалося побудувати архітектуру з імплементацією Declarative React компонентів, з якими технічними викликами вона зіткнулася під час реалізації та яким чином сформувала нову UI бібліотеку “Embrace”. Усе це обговоримо на зустрічі з Grammarly Software Engineer Олександром Сугаком.
Реєстрація: https://gram.ly/3LyPYAI

🗓9 червня: How We Test at Grammarly: General Processes and Reactive Code Testing - Grammarly Software Engineers Олексій Левжинський та Денис Кашковський розкажуть про те, як ми тестуємо в Grammarly, для чого потрібні Marble-тести і як вони покращують якість тестування.
Реєстрація: https://gram.ly/3Nu3FlH

Мова доповідей: англійська.

Більше івентів Grammarly Tech Week шукайте за посиланням: https://gram.ly/3wZGCsl.

До зустрічі!
TL;DR; Помилка у await someAsyncFn().catch() створює Unhandled Promise Rejection, тобто аргумент у catch() є обов'язковим.

Я вже розповідав про Floating Promise. Вони створють Unhandled Promise Rejection. Щоб знаходити такі проблеми я використовую @typescript-eslint/no-floating-promises. Це правило говорить, щоб не було Floating Promise треба зробити одне з:
await цього promise-а
return цього promise-а
– додати до цього promise chain .then() з двома аргументами
– додати до цього promise chain .catch() з одним аргументом

Я вважав, що try catch та catch у promise chain працюють однаково. Тому для мене було несподіванкою, що await someAsyncFn().catch() не перехоплює помилку, що створює Unhandled Promise Rejection. Так само станеться якщо аргумент у catch буде null або undefined. Catch це синтаксичний цукор then(undefined, cb). Змінюючи цей cb ми контролюємо поведінку promise chain, тому cb не є обов'язковим.

Для мене це виглядає, як бага у @typescript-eslint/no-floating-promises. Як тимчасове рішення я додав таке правило:
'no-restricted-syntax': [
'error',
{
selector: "CallExpression[callee.property.name='catch'][arguments.length!=1]",
message: 'Catch should have exactly one argument'
}
],

PS Велика подяка Віктору та Олексію за коментарі.
Я тільки вчора додався у waitlist, а сьогодні вже прилетіло запрошення на бета-тест. У кінці місяця поділюся враженнями.
GitHub Copilot це плагін для IDE (WebStorm/VSCode/etc) який за допомогою AI перетворю англомовні коментарі у код. Більше інформації та реєстрація на бета-тест за посиланням
👉 https://copilot.github.com/
​​Сьогодні порекомендую чудовий інструмент для візуалізації процесів. Називається BPMN (Business Process Model and Notation). Можна використовувати як для опису бізнес-процесів, так і flow в мікросервісній архітектурі. Добре допомагає побачити проблемні місця – не правильне місце виконання, послідовність тощо.

посилання:
– https://bpmn.io/
https://www.bpmn.org/
https://github.com/bpmn-io/bpmn-js
​​Node.js development in 2022: trends and techniques
#worth_seeing

Команда Fwdays викладають у публічний доступ відео з грудневої конференції. Серед них і моя доповідь про "Розробка на Node.js у 2022: тренди та прийоми". Я роблю такі доповіді щороку після релізу нової версії, щоб розповісти:
⚙️ нові фічі Node.js v16,
⚙️ нові мовні конструкції JavaScript/TypeScript
⚙️ фреймворки та підходи
Але головне в цьому огляді це відповіді на питання, як, коли і головне навіщо використовувати ці новинки.

Мова виступу російська

👀відео
📕Слайди
Конференції цього тижня:
#conferences

OpenJs World конференція від Linux Foundation. Пройде 7-8 червня. Багато доповідей різного рівня та тематики. Вважається найважливішою оффлайн тусовкою серед Core Node.js Contributers.
MongoDB World вендор конференція. Пройде 7-9 червня. Для конференції, присвяченої одному вендору, кількість контенту просто лякає.
WWDC 2022 конференція для розробників від Apple. Пройде 6-10 червня. Актуальність контенту для Backend розробників низька, але конференція в цілком важлива для індустрії.
Сьогоднішній рецепт присвячений #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
Attention 📢 9 липня Fwdays проводитиме онлайн конференцію— JS + React fwdays'22 😍 

Тому, вони активно шукають доповіді з JavaScript на основний день конференції🙌🏻

Якщо ви розробник(-ця), хочете виступити, щоб поділитися своїми знаннями і досвідом, а також прокачати свій speaking skill, заповнюйте форму до 13 червня 👉 https://bit.ly/3PVS695

Якщо ви знаєте кому це буде цікаво, будь ласка, поділіться цим дописом😌

Також, окрім основного дня конференції, вони проведуть стрім, де будуть збирати донейти на ЗСУ. 10% від вартості квитка перераховують на гуманітарну допомогу українцям та на ЗСУ, щоб наблизити день нашої перемоги💙💛
В рамках JS + React fwdays'22 яку з моїх тем вам було б найцікавіше послухати?
Final Results
33%
Protocols comparison for React App: Rest, GraphQL, WS, SSE, Binary
20%
How Design System can speedup delivery?
36%
Monorepo structure for Node.js + React app
10%
TypeScript for React Developers
Що таке 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 клієнти вміють із ними працювати.