Telegram Web Link
👩‍💻 Пользовательские события CustomEvent

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

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

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

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

Создайте приложение на Node.js, которое принимает URL в качестве аргумента командной строки, загружает HTML-контент по этому URL и сохраняет его в файл page.html. Программа должна также уметь выводить размер загруженного HTML-контента в байтах.

➡️ Пример:

node app.js download "https://example.com" — загружает страницу по указанному URL и сохраняет в файл page.html.
node app.js size "https://example.com" — выводит размер HTML-контента, загруженного по URL.

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

const fs = require('fs');
const https = require('https');
const url = process.argv[3];
const action = process.argv[2];
const filePath = 'page.html';

if (!action || !url) {
console.log('Используйте: node app.js <download|size> <URL>');
process.exit(1);
}

function downloadPage(url) {
https.get(url, (res) => {
let data = '';
res.on('data', (chunk) => {
data += chunk;
});

res.on('end', () => {
fs.writeFile(filePath, data, (err) => {
if (err) {
console.error('Ошибка при сохранении страницы:', err);
process.exit(1);
}
console.log('Страница загружена и сохранена в page.html');
});
});
}).on('error', (err) => {
console.error('Ошибка загрузки страницы:', err);
process.exit(1);
});
}

function getPageSize(url) {
https.get(url, (res) => {
let data = '';
res.on('data', (chunk) => {
data += chunk;
});

res.on('end', () => {
console.log(`Размер HTML-контента: ${Buffer.byteLength(data, 'utf8')} байт`);
});
}).on('error', (err) => {
console.error('Ошибка загрузки страницы:', err);
process.exit(1);
});
}

if (action === 'download') {
downloadPage(url);
} else if (action === 'size') {
getPageSize(url);
} else {
console.log('Неизвестное действие. Используйте "download" или "size".');
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👎2
👩‍💻 Дата и время в JavaScript

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

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

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
1👀1
👩‍💻 Как реализовать ограничение параллельных асинхронных задач в Node.js?

При работе с асинхронными операциями, такими как запросы к API или чтение файлов, иногда нужно ограничить количество одновременно выполняемых задач, чтобы не перегружать систему. Для этого в Node.js можно использовать семафоры или библиотеки, такие как p-limit.

➡️ В этом примере мы используем библиотеку p-limit для управления количеством параллельных асинхронных задач.

const pLimit = require('p-limit');

// Создаем ограничение на 2 параллельные задачи
const limit = pLimit(2);

const asyncTask = (num) => {
return new Promise((resolve) => {
setTimeout(() => {
console.log(`Задача ${num} завершена`);
resolve();
}, 1000);
});
};

// Запускаем 5 задач с ограничением на параллельность
const tasks = [1, 2, 3, 4, 5].map((num) =>
limit(() => asyncTask(num))
);

Promise.all(tasks).then(() => {
console.log('Все задачи завершены');
});


🗣️ Ограничение параллельных задач полезно для контроля нагрузки на ресурсы. Библиотека p-limit упрощает этот процесс, предоставляя гибкое управление количеством одновременно выполняемых операций.


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
👩‍💻 10 концепций JavaScript, которыми должен овладеть каждый разработчик Node.js

Статья объяснит 10 важных концепций JavaScript, которые помогут разработчикам Node.js писать эффективный и масштабируемый код. Включает темы области видимости, асинхронности и риски рекурсии.

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

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
👩‍💻 Переменные среды/окружения в Node.js: Как правильно их установить

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

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

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

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

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

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

Создайте приложение на Node.js, которое принимает путь к папке в качестве аргумента командной строки и создает файл report.json, содержащий статистику по этой папке: количество файлов, количество папок, и общий размер всех файлов.

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

➡️ Пример:

node app.js report /path/to/folder — создает файл report.json с данными о содержимом папки.
node app.js print /path/to/folder — выводит статистику о папке в консоль.

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

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

const action = process.argv[2];
const folderPath = process.argv[3];
const reportFile = 'report.json';

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

async function analyzeFolder(folder) {
const entries = await readdir(folder, { withFileTypes: true });
let totalSize = 0;
let fileCount = 0;
let folderCount = 0;

for (const entry of entries) {
const fullPath = path.join(folder,
entry.name);
if (entry.isDirectory()) {
folderCount++;
const { totalSize: folderSize, fileCount: folderFiles, folderCount: subFolderCount } = await analyzeFolder(fullPath);
totalSize += folderSize;
fileCount += folderFiles;
folderCount += subFolderCount;
} else if (entry.isFile()) {
const fileStats = await stat(fullPath);
fileCount++;
totalSize += fileStats.size;
}
}

return { totalSize, fileCount, folderCount };
}

async function generateReport(folder) {
const stats = await analyzeFolder(folder);
const reportData = {
folder: folder,
files: stats.fileCount,
folders: stats.folderCount,
totalSize: stats.totalSize,
};

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

async function printReport(folder) {
const stats = await analyzeFolder(folder);
console.log(`Папка: ${folder}`);
console.log(`Количество файлов: ${stats.fileCount}`);
console.log(`Количество папок: ${stats.folderCount}`);
console.log(`Общий размер файлов: ${stats.totalSize} байт`);
}

if (action === 'report') {
generateReport(folderPath);
} else if (action === 'print') {
printReport(folderPath);
} else {
console.log('Неизвестное действие. Используйте "report" или "print".');
}
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1
➡️ Создание конфигурируемого Webhook-модуля для NestJS-приложении

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
👩‍💻 Проблемы экспорта по умолчанию в JavaScript модулях

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31🥱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
👍21
👩‍💻 Всё о циклах в JavaScript

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41
👩‍💻 Задачка по 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
👍41🤗1
👩‍💻 В чём разница между exports и module.exports

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
👩‍💻 Якорные ссылки и как их сделать потрясающими

Якорные ссылки — простой способ создать навигацию по странице. Например, в оглавлении можно использовать якорные ссылки для перехода к различным разделам страницы.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👎2
2025/07/13 14:34:48
Back to Top
HTML Embed Code: