Node.JS [ru] | Серверный JavaScript
11.6K subscribers
96 photos
5 videos
25 files
3.12K 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
👩‍💻 Задачка по NodeJS

Напишите скрипт, который принимает путь к папке, считывает все файлы в этой папке и записывает их имена, размеры (в байтах) и дату последнего изменения в JSON-файл.

Пример использования:

node generateFileInfo.js ./example-folder

"name": "file1.txt",
"size": 1234,
"lastModified": "2023-09-01T12:34:56.789Z"

"name": "file2.js",
"size": 456,
"lastModified": "2023-09-02T14:56:23.123Z"


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

const fs = require('fs');
const path = require('path');

const folderPath = process.argv[2];

if (!folderPath) {
console.error('Пожалуйста, укажите путь к папке.');
process.exit(1);
}

fs.readdir(folderPath, (err, files) => {
if (err) {
console.error('Ошибка чтения папки:', err.message);
return;
}

const fileInfo =
files.map(file => {
const filePath = path.join(folderPath, file);
const stats = fs.statSync(filePath);

return {
name: file,
size: stats.size,
lastModified: stats.mtime.toISOString(),
};
});

fs.writeFile('files.json', JSON.stringify(fileInfo, null, 2), err => {
if (err) {
console.error('Ошибка записи файла:', err.message);
return;
}
console.log('Информация о файлах сохранена в files.json');
});
});
Please open Telegram to view this post
VIEW IN TELEGRAM
👎21
🤘 Пройди хардкорный тест по JavaScript+Angular

✔️ Ответь на 20 вопросов и проверь свои знания. Сможешь сдать — пройдёшь на продвинутый курс "Angular Developer".

⛔️ТЕСТ СМОГЛИ ПРОЙТИ ТОЛЬКО 40% УЧАСТНИКОВ

Время прохождения теста ограничено 25 минут

✍️ПРОЙТИ ТЕСТ: https://vk.cc/cNHR6Q

💣 Пройдете тест и получите:
✔️ Живое общение с экспертами
✔️ Лучшие открытые уроки прошлых наборов курса
✔️ Продвинутые темы и практика на «боевых» задачах уровня Middle+

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Как работает worker_threads в Node.js и зачем он нужен?

worker_threads — это модуль в Node.js, который позволяет создавать дополнительные потоки для выполнения задач параллельно с основным потоком. Он особенно полезен для вычислительно затратных операций, которые могут блокировать выполнение кода в основном потоке событий.

➡️ Пример:

const { Worker, isMainThread, parentPort } = require('worker_threads');

if (isMainThread) {
// Главный поток
console.log('Главный поток запущен');

const worker = new Worker(__filename); // Создаем воркер

worker.on('message', (msg) => {
console.log('Результат от воркера:', msg);
});

worker.postMessage('Начать расчет'); // Передаем сообщение воркеру
} else {
// Воркер
parentPort.on('message', (msg) => {
console.log('Сообщение от главного потока:', msg);
// Выполняем тяжелый расчет
const result = Array(1e6).fill(0).reduce((acc, _, i) => acc + i, 0);
parentPort.postMessage(result); // Отправляем результат обратно
});
}


🗣️ В этом примере главный поток создает воркер, который выполняет вычисление суммы чисел, не блокируя основной поток. Это позволяет использовать многопоточность в JavaScript для высоконагруженных операций.


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
💬 Различные (и современные) способы переключения контента

Давайте уделим немного времени рассмотрению Dialog API, Popover API и остальных. Рассмотрим, когда лучше использовать каждый из них в зависимости от требований. Модальные или немодальные? JavaScript или чистый HTML/CSS? Не уверены? Не волнуйтесь, мы разберёмся во всём этом.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
💬 Создаем чат на Vue с WebSocket: интерактив в реальном времени 🚀

🔥21 июля в 20:00 мск. приглашаем на открытый вебинар в OTUS, на котором разберем:
- Почему WebSocket — это не просто альтернатива HTTP, а ключевая технология для приложений в реальном времени.
- Как Vue делает интерфейсы реактивными и позволяет обновлять их без перезагрузки.
- Подключение WebSocket к Vue-приложению для отправки и получения сообщений.
- Создание интерфейса чата с автофокусом, прокруткой вниз и другими полезными функциями.
- Погружение в ключевые концепции Vue: ref, watch, v-for, v-model.

Что узнаете:
- Как настроить WebSocket-соединение во Vue.
- Как мгновенно обновлять интерфейс при получении новых данных.
- Как собрать реальный чат за 1 час.

👉 Регистрируйтесь по ссылке: https://vk.cc/cNJtGZ

Бесплатное занятие приурочено к старту курса “Vue.js разработчик”, на котором можно глубже погрузиться в особенности фреймворка, научиться работать с его инструментами и создавать реальные проекты.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍2
👩‍💻 Ментальная модель потоков в Node.js

Статья исследует концепцию потоков в Node.js, объясняя их ключевую роль в модулях, таких как fs и http. Рассматриваются основные концепции и ментальная модель, помогающая понять и эффективно использовать потоки.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
👩‍💻 Улучшение производительности с делегированием событий

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
💬 Как пересылать сообщения из Telegram в SMS с помощью бота

В этом гайде пользователь объясняет, как можно написать простого Telegram чат-бота на NodeJS, который будет пересылать все входящие сообщения в SMS, используя Exolve SMS API.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
⚙️ Кэширование информации в Redis на NestJS

Статья показывает, как подключить Redis к проекту и настроить кэширование данных с помощью @nestjs-mod/cache-manager. Рассматриваются примеры работы с Docker Compose и Kubernetes для оптимизации запросов.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
📈 Отслеживание позиций торгового робота Московской биржи через CSV файл

Статья посвящена созданию кроссплатформенного торгового робота для Московской биржи через API брокера. Рассматриваются проблемы готовых решений, таких как QUIK, и преимущества разработки легкого и гибкого инструмента.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🧠 Память важна, но мышление важнее

Ты не обязан помнить все методы API или команды CLI. Но ты обязан понимать, как это всё устроено.

👉 Совет: тренируй мышление, а не запоминание. Если ты понимаешь, почему система работает так, ты найдёшь решение быстрее любого «гуглера», даже не зная точной команды.
Please open Telegram to view this post
VIEW IN TELEGRAM
142👍2🔥1😁1
👩‍💻 Обзор наследования в JavaScript

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
👩‍💻 Как спрятать любые данные в PNG

Статья объясняет, как спрятать данные в PNG-изображении, используя младшие биты (LSB) пикселей. Рассматривается структура PNG, каналы R, G, B и альфа, а также методы внедрения данных без заметного изменения картинки.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🚀 Реактивное программирование в Angular

Современный Angular предоставляет два подхода к реактивному программированию: RxJS и Signals. На открытом уроке мы разберём оба подхода, покажем, в чём их различия, как они дополняют друг друга, и как выбрать правильный инструмент под задачу.

👉 Какие ключевые темы и вопросы будут рассмотрены на вебинаре?
- Что такое реактивное программирование в контексте Angular
- Observable и Signals: в чём разница, когда что использовать
- Операторы RxJS
- Создание и управление сигналами (signal, computed, effect)
- Как внедрить сигналы в компоненты, шаблоны и сервисы
- Связь между RxJS и Signals через rxjs-interop
Бесплатный вебинар проходит в рамках курса “Angular Developer“

Регистрация и подробнее о курсе Angular Developer - https://vk.cc/cNReWM

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
📆 Как я создал Vanilla Calendar Pro — легкий и гибкий календарь на JavaScript с использованием TypeScript

Статья рассказывает о создании Vanilla Calendar Pro — датапикера, собравшего 480+ звезд на GitHub. Описывается путь от первого опыта в open source до популярного инструмента, востребованного разработчиками.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
👩‍💻 Чтение и подсчёт строк в текстовом файле

Напишите скрипт, который принимает путь к текстовому файлу и подсчитывает количество строк в этом файле. Если файл отсутствует, скрипт должен выводить сообщение об ошибке.

Ожидаемое поведение:

При указании пути к существующему файлу скрипт выводит количество строк в нём.
Если файл не найден, выводится сообщение об ошибке.
Скрипт обрабатывает ошибки корректно.

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

const fs = require('fs');
const path = process.argv[2];

if (!path) {
console.error('Ошибка: Укажите путь к файлу.');
process.exit(1);
}

fs.readFile(path, 'utf8', (err, data) => {
if (err) {
if (err.code === 'ENOENT') {
console.error('Ошибка: Файл не найден.');
} else {
console.error('Ошибка при чтении файла:', err.message);
}
return;
}

const lines = data.split('\n').length;
console.log(`Количество строк: ${lines}`);
});
Please open Telegram to view this post
VIEW IN TELEGRAM
👎6👍1
⚙️ Что такое os модуль в Node.js и как он используется?

os — это встроенный модуль в Node.js, который предоставляет информацию о операционной системе, включая архитектуру, платформу, память и данные о процессорах. Он полезен для написания кросс-платформенных приложений и мониторинга системы.

➡️ Пример:

const os = require('os');

console.log('Платформа:', os.platform()); // Выводит платформу, например 'linux'
console.log('Архитектура:', os.arch()); // Выводит архитектуру, например 'x64'
console.log('Свободная память:', os.freemem()); // Количество свободной памяти


🗣️ В этом примере модуль os используется для получения базовой информации об операционной системе. Это удобно для настройки приложений под конкретные системные параметры.


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
👩‍💻 Когда не стоит использовать метод find() в JavaScript

Немногие знают истинную ценность Map. Между тем, применение этой структуры данных позволяет повысить производительность и улучшить пользовательский опыт. Особенно она полезна при работе со сложными структурами данных или при необходимости получить быстрый доступ к данным.

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