Node.JS [ru] | Серверный JavaScript
10.6K subscribers
384 photos
18 videos
25 files
3.81K links
Node.js, backend и AI-разработка: статьи, новости, вайбкодинг, автоматизация и работа с ИИ-агентами.

Личный блог автора - @just_genych
По вопросам рекламы или разработки: @g_abashkin

РКН: https://vk.cc/cJPGOP
Download Telegram
👩‍💻 Проблемы экспорта по умолчанию в JavaScript модулях

JavaScript модули позволяют организовывать код для повторного использования. Существует два метода экспорта: по умолчанию и именованный. В этой статье разбираем экспорт по умолчанию и причины, почему его стоит избегать.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1😁1
👩‍💻 Как реализовать обмен сообщениями между процессами в Node.js?

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

➡️ В этом примере мы используем встроенный модуль child_process для создания дочернего процесса и организации обмена сообщениями.

const { fork } = require('child_process');

// Запускаем дочерний процесс
const child = fork('child.js');

// Отправляем сообщение дочернему процессу
child.send({ msg: 'Привет, дочерний процесс!' });

// Обрабатываем сообщения от дочернего процесса
child.on('message', (message) => {
console.log('Родитель получил:', message);
});

// Код дочернего процесса (child.js)
process.on('message', (message) => {
console.log('Дочерний процесс получил:', message);
// Отправляем ответ родительскому процессу
process.send({ msg: 'Привет, родительский процесс!' });
});


🗣️ Использование сообщений между процессами полезно для разделения вычислений и повышения производительности.
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Всё о циклах в JavaScript

В каждом языке программирования есть циклы. Циклы выполняют операцию (т. е. часть работы) несколько раз, обычно по одному разу для каждого элемента массива или списка, или просто повторяют операцию до тех пор, пока не будет выполнено определённое условие.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Задачка по NodeJS

Создайте приложение на Node.js, которое принимает путь к текстовому файлу в качестве аргумента командной строки, подсчитывает количество строк, слов и символов в файле, а затем сохраняет результат в stats.json. Программа также должна уметь выводить статистику в консоль.

Программа должна уметь выводить статистику по папке в консоль и сохранять её в файл.

➡️ Пример:

• node app.js report /path/to/file.txt — создает файл stats.json с количеством строк, слов и символов в файле.
• node app.js print /path/to/file.txt — выводит статистику по файлу в консоль.

Решение задачи ⬇️

const fs = require('fs');
const path = require('path');
const { promisify } = require('util');
const readFile = promisify(fs.readFile);

const action = process.argv[2];
const filePath = process.argv[3];
const reportFile = 'stats.json';

if (!action || !filePath) {
console.log('Используйте: node app.js <report|print> <путь к файлу>');
process.exit(1);
}

async function analyzeFile(file) {
const content = await readFile(file, 'utf8');
const lines = content.split('\n').length;
const words = content.split(/\s+/).filter(Boolean).length;
const chars = content.length;

return { lines, words, chars };
}

async function generateReport(file) {
const stats = await analyzeFile(file);
fs.writeFile(reportFile, JSON.stringify(stats, null, 2), (err) => {
if (err) {
console.error('Ошибка при записи отчета:', err);
process.exit(1);
}
console.log(`Отчет сохранен в ${reportFile}`);
});
}

async function printReport(file) {
const stats = await analyzeFile(file);
console.log(`Файл: ${file}`);
console.log(`Количество строк: ${stats.lines}`);
console.log(`Количество слов: ${stats.words}`);
console.log(`Количество символов: ${stats.chars}`);
}

if (action === 'report') {
generateReport(filePath);
} else if (action === 'print') {
printReport(filePath);
} else {
console.log('Неизвестное действие. Используйте "report" или "print".');
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
👩‍💻 В чём разница между exports и module.exports

Вы знаете в чём разница между exports и module.exports в Node.js? Для начала рассмотрим, что представляет собой объект модуля.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Освоение безопасной для типов JSON-сериализации в TypeScript

Предлагаем руководство по использованию TypeScript для безопасной для типов сериализации и десериализации данных в формате JSON. Освоение этой стратегии позволит своевременно обнаруживать потенциальные ошибки во время разработки приложения.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 База, которую нужно знать про JSON Schema

Сегодня мы рассмотрим одну из тем, которая, как ни странно, остаётся недооценённой — JSON Schema. Если ты аналитик (или хочешь им быть) и в твоей работе часто мелькают JSON-файлы, то наверняка знаешь, как сложно порой бывает держать всё это под контролем. В этой статье мы разберём всё, что тебе нужно знать про JSON Schema.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Инфраструктурный мониторинг продолжает уходить в сторону глубокой observability — и новый шаг в этом направлении сделала Yandex B2B Tech, запустив платформу Monium. Решение, разработанное командой Yandex Infrastructure, уже доступно для внешних пользователей и изначально создавалось для контроля критичных внутренних сервисов компании.

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

Техническая сторона решения рассчитана на высокие нагрузки: до 3 млрд семплов метрик в секунду, около 44 млн спанов трассировки и порядка 60 ГБ логов ежесекундно. Для инженеров важна поддержка Prometheus и OpenTelemetry, позволяющая встроить систему в существующие DevOps-процессы без жесткой привязки к инструментам.

Среди первых внешних пользователей платформы — ОТП Банк. В целом запуск отражает общий тренд роста рынка observability, который отмечает Gartner.
👩‍💻 Твой JavaScript должен быть проще: 10 приемов современного разработчика

Советы по написанию короткого, лаконичного и чистого кода на JavaScript

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
📂 Названия — твой первый UX

Файл utils2.js, функция handleData, переменная x. Ты и сам не понимаешь, что это значит.

👉 Совет: относись к названиям как к первому уровню документации. Пусть код читается без контекста. Если ты тратишь больше 3 секунд на попытку «вспомнить, что это», — переименуй. Название должно работать вместо комментария.
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Циклические импорты на фронтенде

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
📍 Авторский канал про вайбкодинг и разработку ИИ-агентов

➡️ Геныч.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🐳1
Forwarded from xCode Journal
😭 Гендерный разрыв в IT никуда не делся

Исследование Selecty и hh․ru показало: >200 тыс. рублей в месяц получают 51,5% мужчин и только 34,8% женщин. В тестировании этот порог пробивают 60% парней и 45% девушек, а в бэкенде высокие доходы лишь у 26,5% разработчиц.

Почему так? Мужчины чаще забирают руководящие посты и сеньорские грейды.

✖️ xCode Journal
Please open Telegram to view this post
VIEW IN TELEGRAM
👎5🔥2😁2👍1🐳1
👩‍💻 Как обнаружить изменение атрибутов веб-компонента

Сегодня мы рассмотрим, как обнаружить и реагировать на изменение атрибутов веб-компонента.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Глубокое погружение в V8: что нужно знать Node.js разработчику

Введение в V8
V8 — это высокопроизводительный JavaScript и WebAssembly движок, разработанный Google на C++. Он используется в браузере Chrome и в среде выполнения Node.js. V8 компилирует JavaScript в машинный код, обеспечивая быструю и эффективную работу приложений. (v8.dev)

Роль V8 в Node.js
В Node.js V8 отвечает за выполнение JavaScript-кода на сервере. Благодаря V8, Node.js может обрабатывать множество одновременных соединений, используя неблокирующую модель ввода-вывода и событийно-ориентированную архитектуру. (nodejs.org)

Оптимизация производительности с помощью V8
V8 использует JIT-компиляцию для преобразования JavaScript в машинный код во время выполнения, что значительно ускоряет выполнение кода. Также V8 поддерживает современные функции ECMAScript, такие как оператор возведения в степень (**) и методы Object.values/Object.entries, что позволяет разработчикам использовать новые возможности языка. (nodejs.org)

Управление памятью и сборка мусора
V8 оснащен продвинутым сборщиком мусора Orinoco, который автоматически управляет выделением и освобождением памяти. Это снижает вероятность утечек памяти и повышает стабильность приложений, особенно длительно работающих. (arunangshudas.medium.com)

Инструменты мониторинга V8 в Node.js
Node.js предоставляет модуль v8, который позволяет получать статистику о состоянии кучи памяти и пространствах кучи. Это полезно для мониторинга и оптимизации использования памяти в приложениях. (nodejs.org)

Примеры кода:

Базовый пример использования модуля v8 для получения статистики кучи:
const v8 = require('v8');
console.log(v8.getHeapStatistics());


Практическое использование метода Object.entries для итерации по объекту:
const obj = { a: 1, b: 2, c: 3 };
for (const [key, value] of Object.entries(obj)) {
console.log(`${key}: ${value}`);
}


Типичная ошибка: блокирующая операция, замедляющая выполнение:
const fs = require('fs');
const data = fs.readFileSync('/file.md'); // Блокирующая операция
console.log(data);


Факты:
👉 V8 компилирует JavaScript в машинный код во время выполнения, обеспечивая высокую производительность.
👉 Сборщик мусора Orinoco в V8 автоматически управляет памятью, снижая вероятность утечек.
👉 Node.js предоставляет модуль v8 для мониторинга состояния памяти и оптимизации приложений.

❗️Понимание работы V8 критично для эффективной разработки на Node.js. Знание его механизмов компиляции, управления памятью и доступных инструментов позволяет создавать более производительные и стабильные серверные приложения.

Источники
V8 JavaScript engine.
Node.js — The V8 JavaScript Engine.
Node.js v7 has updated V8 to 5.4.
6 Reasons to Use V8 with Node.js for JavaScript.
V8 | Node.js v11.2.0 Documentation.
❤5🔥5
Node.JS [ru] | Серверный JavaScript pinned «📍 Авторский канал про вайбкодинг и разработку ИИ-агентов ➡️ Геныч.»
👩‍💻 Новые альтернативы innerHTML

Статья объясняет появление метода setHTMLUnsafe для работы с HTML в браузерах. Разбираются особенности безопасности, отличия от setHTML и innerHTML, а также поддержка в разных браузерах и значение нового подхода к именованию методов.

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