Child Processes — это модуль в Node.js, который позволяет запускать дочерние процессы для выполнения команд в операционной системе. Это полезно для выполнения многозадачных операций, таких как запуск команд оболочки или параллельные вычисления.
ls
в терминале и вывода результата в консоль.const { exec } = require('child_process');
exec('ls', (error, stdout, stderr) => {
if (error) {
console.error(`Ошибка: ${error.message}`);
return;
}
if (stderr) {
console.error(`stderr: ${stderr}`);
return;
}
console.log(`Результат команды:\n${stdout}`);
});
🗣️ Child Processes позволяет запускать системные команды и выполнять параллельные операции вне основного потока Node.js.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤2
Способность понимать Node по-прежнему остаётся важным навыком, если вы фронтэнд разработчик. Deno появился как ещё один способ запуска JavaScript вне браузера, но огромная экосистема инструментов и программного обеспечения Node, означают, что в ближайшее время он никуда не денется.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
Предположим, что мы сделали обновление, но
npm publish
выдаёт ошибку. Как исправить ошибку: "You cannot publish over the previously published versions"Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Создайте приложение на Node.js, которое эмулирует систему регистрации и входа пользователей. Программа должна принимать два аргумента командной строки: "register" или "login" и имя пользователя. Если пользователь регистрируется, программа должна сохранить его в текстовый файл (
users.txt
). Если пользователь пытается войти в систему, программа должна проверить, зарегистрирован ли этот пользователь в файле, и вывести соответствующее сообщение.•
node app.js register Alice
— добавляет пользователя Alice в файл.•
node app.js login Alice
— проверяет, существует ли Alice в файле, и выводит сообщение об успешном входе или ошибке.Решение задачи
const fs = require('fs');
const action = process.argv[2];
const username = process.argv[3];
const filePath = 'users.txt';
if (!action || !username) {
console.log('Используйте: node app.js <register|login> <username>');
process.exit(1);
}
// Функция для регистрации пользователя
function registerUser(username) {
fs.appendFile(filePath, `${username}\n`, (err) => {
if (err) {
console.error('Ошибка регистрации:', err);
process.exit(1);
}
console.log(`Пользователь ${username} зарегистрирован.`);
});
}
// Функция для входа пользователя
function loginUser(username) {
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
console.error('Ошибка чтения файла:', err);
process.exit(1);
}
const users = data.split('\n').map(user => user.trim());
if (users.includes(username)) {
console.log(`Пользователь ${username} успешно вошёл в систему.`);
} else {
console.log(`Пользователь ${username} не найден.`);
}
});
}
// Логика обработки команд
if (action === 'register') {
registerUser(username);
} else if (action === 'login') {
loginUser(username);
} else {
console.log('Неизвестное действие. Используйте "register" или "login".');
}
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8
Объект URL в JavaScript представляет URL-адрес и предоставляет удобные методы для работы с ним. Он позволяет анализировать, конструировать и декодировать URL-адреса.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍1
Когда начинаешь изучать JavaScript, сначала чувствуешь эйфорию: очень легко работать с переменными, не нужно следить за типами, просто назвал и пользуешься. Но с великой свободой приходит великая ответственность.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
process.hrtime()
в Node.js?process.hrtime()
— это метод, который возвращает высокоточное время в виде массива из двух чисел: секунд и наносекунд. Он используется для точного измерения времени выполнения кода или определенных операций, так как имеет более высокую точность, чем Date.now().process.hrtime()
.// Начальное время
const startTime = process.hrtime();
// Выполняем код, время выполнения которого нужно измерить
for (let i = 0; i < 1e6; i++) {}
// Измеряем конечное время
const diff = process.hrtime(startTime);
console.log(`Время выполнения: ${diff[0]} сек, ${diff[1] / 1e6} мс`);
🗣️ process.hrtime() позволяет измерять временные интервалы с высокой точностью, что полезно для оптимизации производительности в приложениях Node.js.
Please open Telegram to view this post
VIEW IN TELEGRAM
• Пишем свой плагин для Webpack
• Как использовать Google Sheets в качестве базы данных
• Как мы полностью обновили VK Мессенджер: переписать нельзя рефакторить
• Object.freeze и Object.seal в JS
• Как выжить под руководством микроменеджера и откуда берется гиперконтроль — личный опыт и полезные советы
Please open Telegram to view this post
VIEW IN TELEGRAM
Как оптимизировать производительность приложения NodeJS, чтобы максимально улучшить пользовательский опыт? Это один из самых частых вопросов на собеседовании. Ответить на него правильно помогут советы опытного бэкенд-инженера.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👎1
"Чему равно this в данном случае?" - этот вопрос часто сбивает с толку новичков в JavaScript-программировании. Предлагаем четкий алгоритм, который поможет быстро определить значение ключевого слова this.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Создайте небольшое приложение на Node.js, которое управляет списком задач. Программа должна принимать три аргумента командной строки: действие (
add
, list
или remove
), название задачи и опционально индекс задачи для удаления. Программа должна хранить задачи в текстовом файле (tasks.txt
) и уметь добавлять новые задачи, выводить список всех задач и удалять задачу по индексу.•
node app.js add "Сделать уборку"
— добавляет задачу "Сделать уборку" в файл.•
node app.js list
— выводит все задачи из файла с их индексами.•
node app.js remove 1
— удаляет задачу с индексом 1 из файла.Решение задачи
const fs = require('fs');
const action = process.argv[2];
const task = process.argv[3];
const filePath = 'tasks.txt';
if (!action) {
console.log('Используйте: node app.js <add|list|remove> [task|index]');
process.exit(1);
}
// Функция для добавления новой задачи
function addTask(task) {
fs.appendFile(filePath, `${task}\n`, (err) => {
if (err) {
console.error('Ошибка при добавлении задачи:', err);
process.exit(1);
}
console.log(`Задача "${task}" добавлена.`);
});
}
// Функция для вывода всех задач
function listTasks() {
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
console.error('Ошибка чтения файла:', err);
process.exit(1);
}
const tasks = data.trim().split('\n');
if (tasks.length === 0 || (tasks.length === 1 && tasks[0] === '')) {
console.log('Список задач пуст.');
} else {
console.log('Список задач:');
tasks.forEach((task, index) => {
console.log(`${index + 1}. ${task}`);
});
}
});
}
// Функция для удаления задачи по индексу
function removeTask(index) {
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
console.error('Ошибка чтения файла:', err);
process.exit(1);
}
const tasks = data.trim().split('\n');
if (index < 1 || index > tasks.length) {
console.log('Некорректный индекс задачи.');
return;
}
tasks.splice(index - 1, 1);
fs.writeFile(filePath, tasks.join('\n'), (err) => {
if (err) {
console.error('Ошибка при удалении задачи:', err);
process.exit(1);
}
console.log(`Задача под номером ${index} удалена.`);
});
});
}
// Логика обработки команд
if (action === 'add') {
if (!task) {
console.log('Введите название задачи для добавления.');
} else {
addTask(task);
}
} else if (action === 'list') {
listTasks();
} else if (action === 'remove') {
const index = parseInt(task, 10);
if (isNaN(index)) {
console.log('Введите корректный номер задачи для удаления.');
} else {
removeTask(index);
}
} else {
console.log('Неизвестное действие. Используйте "add", "list" или "remove".');
}
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Разница между
export default xxx
и export { xxx as default }
в JavaScript может показаться малозаметной, но может повлиять на поведение кода.Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
❓ Как сделать чат в React?
😎 Ответ — на бесплатном вебинаре 29 сентября!
WebSocket — это не сложно. Покажем на практике, как связать React-приложение с сервером для обмена сообщениями в реальном времени.
Соберем работающий прототип мессенджера с авторизацией и интерфейсом. Идеальный проект для портфолио.
Присоединяйтесь к бесплатному вебинару курса «JavaScript Developer. Professional».
👉 Пишите код вместе с экспертом: https://vk.cc/cPR2Aj
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
😎 Ответ — на бесплатном вебинаре 29 сентября!
WebSocket — это не сложно. Покажем на практике, как связать React-приложение с сервером для обмена сообщениями в реальном времени.
Соберем работающий прототип мессенджера с авторизацией и интерфейсом. Идеальный проект для портфолио.
Присоединяйтесь к бесплатному вебинару курса «JavaScript Developer. Professional».
👉 Пишите код вместе с экспертом: https://vk.cc/cPR2Aj
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👎3
В этом руководстве рассказывается о преимуществах запуска приложений Node.js в контейнерах Docker и о том, как создать практичный рабочий процесс разработки.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
В последнее время браузеры стремительно обретают довольно важные возможности. Возможности, для реализации которых могло потребоваться несколько библиотек JavaScript (или CSS), теперь доступны в браузерах из коробки.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Хочешь узнать, как обрабатывать миллионы событий в секунду и почему такие гиганты, как Netflix и Uber, без ума от Kafka? Давай разберемся, как этот инструмент может превратить поток данных в золотую жилу для твоего проекта.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Как избавиться от ненужных файлов в образе докера? Выполним контейнеризацию приложения и простую оптимизацию размеров образа Docker.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM