TGViewer
Channel Public Channel
Node.js Backend | YeaHub

Node.js Backend | YeaHub

@yeahub_node_backend

Теория, подготовка к интервью и курсы для Node.js разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Subscribers
465
Photos
233
Videos
15
Links
590

Showing posts older than #435 · Back to latest

Older Posts 20 shown
Post #432 194
#Собес #sql #optimization #index
🤔 Как оптимизировать SQL-запрос, выбирающий все посты пользователей с >500 подписчиков (с джойнами и проверкой NULL)?

💬 Кратко:

- Добавить индексы на subscribers_count и user_id.
- Использовать INNER JOIN вместо LEFT JOIN, если NULL не нужны.
- Заменить подзапросы на JOIN.
- Применить покрывающий индекс.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
  • ❤ 1
Post #431 170
#Собес #сравнение #типы_данных #операторы
🤔 Как происходит сравнение типов?

💬 Кратко:

В JavaScript сравнение типов зависит от оператора. Оператор === (строгое равенство) требует, чтобы типы сравниваемых значений были одинаковыми. Оператор == (нестрогое равенство) автоматически приводит типы к общему значению перед сравнением. Поэтому при нестрогом сравнении, например, число и строка могут быть равны.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
  • ❤ 1
Post #430 202
🐱 DataLoader и проблема N+1

Когда ты делаешь запрос на список сущностей, а для каждой из них внутри цикла идёт ещё один запрос — поздравляю, ты поймал N+1 проблему

Например:
const users = await db.query('SELECT * FROM users');
for (const user of users) {
user.posts = await db.query('SELECT * FROM posts WHERE user_id = $1', [user.id]);
}

Результат — один запрос на юзеров и N запросов на посты. На 100 юзеров это уже 101 запрос.
Больно для БД 😱😱😱

⚙️ Решения:
1) JOIN — часто помогает, если нужно просто склеить данные
2) IN-запрос — SELECT * FROM posts WHERE user_id IN (...)
3) DataLoader — если у тебя GraphQL или сложные вложенные запросы

🧠 Как работает DataLoader
DataLoader — это умный батчер и кэшер от Facebook

Он не делает магии, а просто:
1) Копит ключи (например, userId), по которым нужно загрузить данные
2) Выполняет один общий запрос, вроде:
SELECT * FROM posts WHERE user_id IN (1,2,3,...)

3) Раскладывает результат обратно по пользователям

Почитать подробнее можно тут

🚀 Пост Guru Node.js: @DemetraIT
conf-talks DataLoader — правильно решаем проблему N+1 запросов GraphQL на русском — здесь много статей и видео об этой замечательной технологии.
  • ❤ 1
Post #429 150
#Собес #nan #number #isnan
🤔 Что такое NaN? Какого типа это значение? Как можно узнать, равно ли значение переменной NaN?

💬 Кратко:

NaN (Not-a-Number) — это специальное значение, представляющее результат нечисловой операции, которая должна возвращать число. NaN является типом number, но не равен ни одному значению, даже самому себе. Чтобы проверить, является ли значение NaN, используется функция isNaN() или Number.isNaN().

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
  • ❤ 2
Post #428 177
#Собес #git_push #git_pull
🤔 Что делают команды git push и git pull?

💬 Кратко:

Команда git push отправляет ваши локальные изменения в удаленный репозиторий. Команда git pull скачивает изменения из удаленного репозитория и объединяет их с вашей локальной версией.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
  • ❤ 1
Post #427 161
#Собес #proto #прототип
🤔 Для чего нужен прототип?

💬 Кратко:

Прототип — это объект, от которого другой объект может наследовать свойства и методы. В JavaScript каждый объект имеет скрытое свойство [[Prototype]], которое указывает на его прототип. Это позволяет организовать наследование, чтобы не дублировать код и переиспользовать общие методы. Например, если метод не найден в объекте, JavaScript ищет его в прототипе.

Пример:
const animal = { eats: true };
const dog = Object.create(animal);
console.log(dog.eats); // true


📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Post #425 189
Что такое DLQ в микросервисах 🙃

Dead Letter Queue — это “очередь для неудачных сообщений”
Когда микросервис не может обработать сообщение после нескольких попыток, оно не удаляется и не крутится бесконечно, а попадает в DLQ

😐 Зачем это нужно
— чтобы не блокировать основную очередь
— чтобы можно было позже разобраться, почему сообщение не обработалось
— чтобы при необходимости повторно отправить сообщение вручную или автоматически

📦 Пример
Допустим, у тебя есть очередь orders, и воркер обрабатывает заказы.
Если из-за ошибки воркер несколько раз подряд не смог обработать заказ, сообщение попадёт в orders.DLQ.
Туда можно подключить отдельный обработчик или просто просматривать ошибки

Еще советую добавить Alert на метрику, когда сообщений в очереди больше одного 😇

🚀 Пост Guru Node.js: @DemetraIT
  • ❤ 2
Post #424 165
#полезное
😴 Window Mode: Погружение в 3D мир через веб-камеру

Window Mode — это демонстрация 3D-камерного контроллера, который создает иллюзию окна в виртуальный мир. С помощью отслеживания положения лица пользователя, проектируется 3D-сцена, создавая эффект присутствия. Работает с любыми 3D-видео и не требует специального оборудования.

Основные моменты:
🟠 Эмуляция окна в 3D пространстве.
🟠 Использует MediaPipe для отслеживания лица.
🟠 Поддержка форматов .vv и .splv для 3D-сцен.
🟠 Реализация на NextJS с использованием веб-воркеров.
🟠 Ожидается открытие исходников библиотек.

GitHub: https://github.com/True3DLabs/WindowMode

👉Новости 👉База вопросов
Post #423 161
#Собес #git
🤔 Как вы разрешаете конфликты в Git?

💬 Кратко:
Конфликты возникают, когда изменения из удаленного и локального репозиториев пересекаются. Чтобы разрешить конфликт, нужно вручную отредактировать проблемные файлы, выбрать правильную версию, а затем зафиксировать изменения.

📌 Полный разбор + примеры использования — на платформе:
👉
Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Post #422 191
Разбор Promise

Promise — это встроенный в JavaScript объект, который описывает результат асинхронной операции. Асинхронной считается операция, которая выполняется не сразу, а через какое-то время. Чем полезен promise – узнаешь из этого видео.

👀Смотреть видео

#видео
  • ❤ 1
Post #421 146
#полезное
😊 Чистая архитектура фронтенд-приложений

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

👉Новости 👉База вопросов
Хабр Чистая архитектура фронтенд приложений. Часть вторая Предисловие В первой части я говорил общими терминами и больше рассуждал про бизнес-процессы (почитать можно тут ). Далее я буду более детально углубляться в структуру проекта и частные случаи,...
Post #420 149
#полезное
🛞 AI-генератор бесконечных карт

Nano Banana Infinimap — экспериментальный генератор карт, использующий ИИ для создания бесшовных тайлов. Проект демонстрирует возможности модели Nano Banana, позволяя генерировать огромные карты с учетом соседних тайлов.

Основные моменты:
🔵 Бесконечные карты с навигацией на базе Leaflet
🔵 Генерация тайлов с использованием модели Google Nano Banana
🔵 Учет соседних тайлов для плавных краев
🔵 Локальное хранение данных

GitHub: https://github.com/seezatnap/nano-banana-infinimap

👉Новости 👉База вопросов
Post #419 138
#Собес #nodejs
🤔 Что такое V8? Как это работает?

💬 Кратко:
V8 - это движок JavaScript с открытым исходным кодом, разработанный Google для браузера Chrome. Он компилирует JavaScript-код в машинный код для быстрого выполнения. В Node.js V8 позволяет запускать JavaScript на сервере.

📌 Полный разбор + примеры использования — на платформе:
👉
Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
YeaHub YeaHub — тренажер собеседований по IT 5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
Post #418 150
#статьи
👋 Как за 10 минут создать тестировщик нагрузки для API на Node.js

Почему разработка собственного инструмента для нагрузки на API иногда оказывается лучшим выбором? В статье обсуждается реальный кейс: задачи тестирования производительности, ограничения Postman и сложность JMeter. Узнайте, как и зачем был создан простой и эффективный API-лоадер на Node.js.
Читать...

👉Новости 👉База вопросов
Хабр Как за 10 минут создать тестировщик нагрузки для API на Node.js Вступительное слово Немного объясню, зачем я вообще написал код для нагрузки на API и не воспользовался готовыми инструментами. В своей работе я порой сталкиваюсь с задачами, которые, хоть и связаны с...
  • ❤ 1
  • 🔥 1
Post #417 138
#Собес #git
🤔 Какие различные стратегии ветвления вы знаете?

💬 Кратко:
Централизованный рабочий процесс (Centralized Workflow). Веткой разработки по умолчанию является main, и все изменения фиксируются в этой ветке. Этот рабочий процесс не требует других веток, кроме главной.

Рабочий процесс разветвления функций (Feature Branching Workflow). Основная идея рабочего процесса разветвления функций заключается в том, что разработка всех функций должна вестись в специальной ветке, а не в основной.

Рабочий процесс Gitflow. Gitflow определяет строгую модель ветвления, разработанную вокруг релиза проекта. Это обеспечивает надежную основу для управления большими проектами. Она назначает очень специфические роли различным веткам и определяет, как и когда они должны взаимодействовать. В дополнение к функциональным веткам используются отдельные ветки для подготовки, поддержки и записи релизов.

Рабочий процесс Forking. Forking Workflow принципиально отличается от других популярных рабочих процессов Git. Вместо того чтобы использовать единый серверный репозиторий в качестве "центральной" кодовой базы, он предоставляет каждому разработчику свой серверный репозиторий. Это означает, что каждый участник имеет не один, а два Git-репозитория: частный локальный и публичный серверный. Чаще всего Forking Workflow встречается в публичных проектах с открытым исходным кодом.

📌 Полный разбор + примеры использования — на платформе:
👉
Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
YeaHub YeaHub — тренажер собеседований по IT 5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
Post #416 146
🍴 Constraints в базах данных

⚙️ Что такое constraint

Constraint — это ограничение, которое накладывается на данные в таблице, чтобы они оставались корректными и логичными.
Он работает на уровне БД, а не приложения — то есть защищает данные даже если код на бэке с багулей

🫵 Основные типы

1. PRIMARY KEY и FOREIGN KEY
2. UNIQUE — не даёт вставить дубликат

💡 Пример:
email в таблице пользователей должен быть уникальным.

3. NOT NULL — запрещает NULL, гарантирует, что поле обязательно заполнено

4. CHECK — позволяет задать собственное логическое условие

💡 Пример:
CHECK (age >= 18) — в базу не попадёт несовершеннолетний.


🚀 Пост Guru Node.js: @DemetraIT
  • ❤ 3
  • 👍 2
  • 🔥 2
Post #415 136
#полезное
😬 Умный мост между LSP и GitHub Copilot

Расширение для Visual Studio Code, которое интегрирует возможности любого сервера языков (LSP) с инструментами Model Context Protocol (MCP) и GitHub Copilot. Это решение улучшает взаимодействие с кодом, позволяя Copilot более эффективно находить объекты и предоставлять контекстные подсказки.

Основные моменты:
🟢 Поддержка любого языка с активным LSP в VSCode
🟢 Интеллектуальная навигация по кодовой базе
🟢 Контекстные предложения и анализ кода
🟢 Автоматическое улучшение ответов GitHub Copilot
🟢 Интуитивно понятные инструменты для работы с кодом
GitHub: https://github.com/sehejjain/Language-Server-MCP-Bridge

👉Новости 👉База вопросов
Post #414 144
#полезное
😐 Как декораторы могут упростить разработку веб-форм

В статье я буду писать о подходе, использующем библиотеку MobX. Так что если вы в своих проектах её не используете, статья может быть не так полезна. Но вы можете рассматривать её, как возможный источник вдохновения по тому, как можно разрабатывать формы.
Читать статью

👉Новости 👉База вопросов
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →