Node.js Recipes – Telegram
Node.js Recipes
3.23K subscribers
167 photos
7 videos
1 file
611 links
По буднях нотатки по #Nodejs розробці, по вихідним огляди конференцій та доповідей (с) @galkin_nikita
Download Telegram
Напоминаю #conference nodecongress.com уже завтра!
🔥10👍2
В прошлом году я делал рецепт Как документировать логику? в котором рекомендовал использовать в коде и документации PlantUML. Его наиболее близкий конкурентом является Mermaid, который тоже позволяет описывать диаграммы в текстовом виде.

На этой неделе GitHub объявил о поддержке mermaid код блоков. Теперь вы можете использовать диаграммы в вашей документации и GitHub issues. Пример на картинке или по ссылке в GitHub блоге.
👍31🔥14
Какие вопросы задать, чтобы проверить понимание 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
Куда развивается Reactive Programming в Node.js?

TL;DR; С выходом 18-й LTS версии встроенные Node.js Streams станут альтернативой RxJS.

Начну с определения: реактивное программирование – это парадигма программирования ориентированная на потоки данных. Т.е. вместе операций над статическими данными, мы оперируем потоками. Упрощенно говоря, поток данных это массив, где каждый элемент имеет привязку к временной оси.

В javanoscript комьюнити основной тренд реализации реактивного программирования это RxJS. Основной драйвер это развития Angular. Nest.js, созданный на его основе, работает с RxJS из коробки. Так Interceptors построены именно на RxJS.

Реализовывать подходы реактивное программирования на чистых Node.js Streams требует много самописного кода или использование библиотек, которые не так развиты/поддерживаются как RxJS. Однако в 16.14.0 версии Node.js были добавлены filter и map для работы с Readable Streams. В экспериментальной ветке (17-ой) реактивных методов больше:
– readable.forEach(fn[, options])
– readable.toArray([options])
– readable.some(fn[, options])
– readable.find(fn[, options])
– readable.every(fn[, options])
– readable.flatMap(fn[, options])
– readable.drop(limit[, options])
– readable.take(limit[, options])
– readable.asIndexedPairs([options])
– readable.reduce(fn[, initial[, options]])

До выхода 18-й версии в LTS, что произойдет в октября 2022, их станет больше. Надеюсь, их Stability Index переведут из экспериментального в стабильный.
👍36🔥14👎1🤔1
Channel photo updated
Моя страна атакована, мой город атакован, не хочу делать вид, что этот канал вне политики.
👍9584👎6😢3
Forwarded from Good dev knows
Моя страна атакована, мой город атакован, не хочу делать вид, что этот канал вне политики.

Сегодня Путин объявил войну Украине, мотивируя свои действия идеями "денацификации". Это полная чушь и не имеет ничего общего с реальностью. Когда я жил в Украине я ездил в Донецк и отлично проводил там время. Я ездил во Львов, говорил там по-русски, и отлично проводит там время. Народ Украины и власть, которую украинцы выбрали в ходе демократических выборов, хочет одного — жить мирно и счастливо.

Никакого конфликта между украинцами и русскоговорящими нет и не было. Есть лишь клептократическая власть в России, которая преследует лишь свои интересы и борется со своими страхами. Борется ценой свободы других людей — украинцев, россиян, всего мира. Разрушая, вместо того, чтобы создавать и работать вместе.

Я знаю, что в этом канале много россиян. Посмотрите обращение президента Зеленского к россиянам (на русском с 02:03).

Всех призываю помочь фонду "Повернись живим". Это можно сделать тут:
* https://www.patreon.com/savelife_in_ua
* https://savelife.in.ua/donate/

Переживаю, но верю в будущее 🇺🇦
👍8472😢1
Я прошу прощения у тех из вас, кто ждет тут постов о разработке. Когда-нибудь они вернуться. Просто напомню, что авторский канал. Раньше у меня не было возможности написать развернутый пост о том, что происходит. Я просто сделал репост из дружественного канала. Вот то, что я думаю по этому поводу происходящего.

Я до последнего момента не верил, что Российская Федерация нападет на Украину, но это произошло. Я был не прав. Третий день в моей стране идет настоящая война.

Моя первая мысль была, что война будет быстро проиграна – я не верил в КВНщика Зеленского. Я был не прав. Я смотрю его пятиминутки в FB и горжусь им.

Вчера я был зол из-за слабости санкций. На их фоне мне было больно наблюдать, как российский фондовый рынок восстанавливается после падения. Я не хочу смертей: ни в Украине, ни в РФ. Я хочу экономических последствий.

Вчера я читал новости о войне и о санкциях я думал, что РФ снова все сойдет с рук. Но я снова был не прав. Прямо сейчас РФ отключают от SWIFT, перестают работать Visa и MasterCard выданные санкционными банками.

Возможно, я снова буду не прав, но сегодня я читаю новости и у меня есть надежда, что моя страна выстоит. Один из таких источников информации это @UkrainianWitness. Всех читателей прошу загляните в него. Как я понимаю, это канал от редакции DOU и проекта "Повернись живим".
140👍23🔥12👎4💩1
Когда 1% имеет значение?
#worth_seeing

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

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

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

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

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

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

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

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

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

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

Еще в блоге были Release Notes TypeScript 4.6.
👍69🤔4
Мой коллега Vitalii Ruban, с которым мы вместе были в программном комитете JSFest, делает Free React Course For Beginners. Подробности в канале @reactbeginners.
👍261👎1
​​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!
👍8🔥3💩1
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 залучено станом на зараз.

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

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

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

I will resume regular posting about Node.js in June. In what language? Я возобновлю регулярные публикации об Node.js в июне. На каком языке?
Final Results
59%
Українською мовою
42%
English
28%
Я против РФ, но читать мне быстрее на русском
👍8😁2👎1
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.

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

Я вже розповідав про Floating Promise. Вони створють Unhandled Promise Rejection. Щоб знаходити такі проблеми я використовую @typenoscript-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 не є обов'язковим.

Для мене це виглядає, як бага у @typenoscript-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 Велика подяка Віктору та Олексію за коментарі.
👍44🤔3
Я тільки вчора додався у waitlist, а сьогодні вже прилетіло запрошення на бета-тест. У кінці місяця поділюся враженнями.
GitHub Copilot це плагін для IDE (WebStorm/VSCode/etc) який за допомогою AI перетворю англомовні коментарі у код. Більше інформації та реєстрація на бета-тест за посиланням
👉 https://copilot.github.com/
🔥25🤔7👎2👍1