Node.JS [ru] | Серверный JavaScript
11.5K subscribers
91 photos
6 videos
25 files
3.16K links
Все о разработке backend части на JavaScript (Node JS).
А так же: Express JS, Next JS, Nest, Socket.IO

Канал на бирже - https://telega.in/c/we_use_js

По вопросам рекламы или разработки: @g_abashkin

РКН: https://vk.cc/cJPGOP
Download Telegram
🔊 Определение bpm (beats per minute) в браузере

Расскажу, как я сделал браузерный сервис на React для определения bpm по микрофону. Без тапов и сторонних приложений — только звук и алгоритмы.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔐 Делай внутренние инструменты с внешним качеством

Раз работаешь только ты, значит, можно «и так сойдёт»? А потом этот скрипт ломается в самый важный момент.

👉 Совет: относись к своим внутренним тулзам как к продукту. Добавь ошибки, валидацию, минимальный UX. Тебе же потом их запускать в спешке, лучше если они не подведут.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
⚙️ React vs Vue – подробное сравнение и перспективы

Разберём, как изменились React и Vue за 5 лет, оценим их экосистемы и перспективы на фоне развития LLM и AI-агентов. Будет много сравнений, фактов и личных выводов.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5👎4
⚙️ CI/CD для чайников — разберитесь, и начните автоматизировать рутину в разработке. Часть 3. Его величество, деплой

Расскажу, как максимально просто организовать автоматический деплой React-приложения через CI/CD: что нужно, какие инструменты понадобятся и как сделать так, чтобы сайт был доступен в интернете.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
⚙️ Пробуем Junie от JetBrains на реальной задаче (или как я попал в рассказ Азимова)

В этой статье проверяю, как справляется новый AI-ассистент Junie от JetBrains с реальной задачей, и случайно оказываюсь в ситуации из рассказа Азимова.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Что такое fs.promises в Node.js и зачем он нужен?

Модуль fs в Node.js позволяет работать с файловой системой. Начиная с Node 10+, появился fs.promises, который возвращает Promise вместо использования колбэков.

Это делает код чище и позволяет писать асинхронные операции через async/await

➡️ Пример:

const fs = require('fs/promises');

async function readFile() {
try {
const data = await fs.readFile('example.txt', 'utf8');
console.log(data);
} catch (err) {
console.error('Ошибка чтения файла:', err);
}
}

readFile();


🗣️ В этом примере файл example.txt читается асинхронно. Ошибки обрабатываются через try/catch, код становится линейным и легко читаемым.


Это современный способ работы с файлами в Node.js без "адских вложенных колбэков".

🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
👩‍💻 4 типичные ошибки разработчиков Node.js

Растущее комьюнити Node.js - свидетельство надежности и эффективности этого инструмента. Однако не всем удается извлечь из него максимальную выгоду. Рассмотрим самые распространенные ошибки разработчиков Node.js.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
👩‍💻 Пользовательские события CustomEvent

JavaScript CustomEvent расширяют функциональность встроенной системы событий. Проще говоря, они позволяют программистам создавать и обрабатывать события, уникальные для их приложения, и в этой статье мы расскажем о них всё.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
👩‍💻 Как преобразовать Node.js Buffer в String

При преобразовании между Buffer и String может быть указана кодировка символов. Если кодировка не указана, по умолчанию будет использоваться UTF-8

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3
👩‍💻 Дата и время в JavaScript

Учимся работать с датой и временем в JavaScript: разбираемся с определением и способом создания объекта Data, его методами и форматами вывода.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👎21👍1
👩‍💻 Как запустить несколько приложений React на одном порту Nginx с Docker

Разместим на одном порту два приложения React с Nginx и Docker. Настроим Docker, добавим конфигурацию Nginx глобально и файл docker-compose.yml.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ PostgreSQL Antipatterns: валим «слона» — highload на ровном месте

Сегодняшняя тема посвящена нелегким взаимоотношениям клиентского приложения и сервера PostgreSQL: как на ровном месте, неудачной архитектурой приложения, можно обеспечить себе хронические проблемы производительности.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍1
🔬 Тестируй даже то, что кажется надёжным

«Это никогда не ломается» — последняя фраза перед катастрофой. Особенно в частях кода, которые трогают редко.

👉 Совет: пиши тесты для стабильных участков кода. Именно они чаще всего становятся ловушкой, когда всё вокруг уже поменялось, а эти куски — нет. Спокойствие в проде начинается с паранойи в деве.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
👩‍💻 Переменные среды/окружения в Node.js: Как правильно их установить

В этой статье мы погрузимся в мир переменных среды в Node.js, рассмотрим их преимущества, примеры использования и лучшие практики эффективного управления ими.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
👩‍💻 Управляйте промисами используя Promise.withResolvers()

Метод Promise.withResolvers() повышает гибкость, позволяя удалённо разрешать или отклонять промисы, упрощая и оптимизируя асинхронный код.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
📊 Обзор лучших библиотек для визуализации данных

Визуализация данных — важная часть любого проекта, связанного с аналитикой и обработкой данных. Мы рассмотрим 7 библиотек: Plotly, D3.js, Nivo, Latitude, Apache ECharts, Victory и Chart.js.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👎2👍1
👩‍💻 Мини-сервер с авто-ограничением запросов по IP

Реализуйте простой HTTP-сервер на Node.js (без фреймворков), который обрабатывает GET-запросы и возвращает "Hello, client!".

Но с одним условием: если IP-адрес клиента делает больше 5 запросов за 10 секунд, сервер должен временно блокировать этот IP на 30 секунд и отвечать ему "429 Too Many Requests".

Решение задачи🔽

const http = require('http');
const PORT = 3000;

const requestLog = {}; // { ip: [timestamps] }
const bannedIPs = {}; // { ip: unblockTimestamp }

function cleanupOldRequests(ip) {
const now =
Date.now();
requestLog[ip] = (requestLog[ip] || []).filter(ts => now - ts < 10000);
}

const server = http.createServer((req, res) => {
const ip = req.socket.remoteAddress;

if (bannedIPs[ip] &&
Date.now() < bannedIPs[ip]) {
res.writeHead(429, { 'Content-Type': 'text/plain' });
return res.end('429 Too Many Requests');
}

cleanupOldRequests(ip);
requestLog[ip].push(
Date.now());

if (requestLog[ip].length > 5) {
bannedIPs[ip] =
Date.now() + 30000; // блок на 30 сек
requestLog[ip] = [];
res.writeHead(429, { 'Content-Type': 'text/plain' });
return res.end('429 Too Many Requests');
}

res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello, client!');
});

server.listen(PORT, () => {
console.log(`Server listening on https://localhost:${PORT}`);
});
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
➡️ Создание конфигурируемого Webhook-модуля для NestJS-приложении

В рамках этой статьи я опишу создание двух NestJS-модулей с различным способом конфигурирования: утилитарный модуль и бизнес-модуль со своей базой данных.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM