Node.JS [ru] | Серверный JavaScript
11.5K subscribers
92 photos
6 videos
25 files
3.17K 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
👩‍💻 Улучшение производительности с делегированием событий

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

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

Напишите скрипт на Node.js, который считывает JSON-файл, фильтрует данные по указанному ключу и значению, и выводит результат в консоль.

➡️ Пример:

node filterJson.js data.json age 30

[
{ "name": "Bob", "age": 30 },
{ "name": "Charlie", "age": 30 }
]


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

const fs = require('fs');

const [,, filePath, key, value] = process.argv;

if (!filePath || !key || !value) {
console.error('Использование: node filterJson.js <filePath> <key> <value>');
process.exit(1);
}

fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
console.error('Ошибка чтения файла:', err.message);
process.exit(1);
}

try {
const jsonData = JSON.parse(data);
const filteredData = jsonData.filter(item => item[key] == value);
console.log(JSON.stringify(filteredData, null, 2));
} catch (parseErr) {
console.error('Ошибка парсинга JSON:', parseErr.message);
process.exit(1);
}
});
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1👎1👏1
👩‍💻 Как использовать npm без опаски

Статья предлагает использовать прокси и кэширование для реестра npm с помощью Verdaccio или Nexus, чтобы повысить безопасность и ускорить установку пакетов. Также обсуждаются риски скриптов жизненного цикла npm и способы их безопасного использования.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 Как избавиться от WebSockets и сэкономить $1 млн в год: неожиданные решения для оптимизации

Детальный разбор того, как простой анализ производительности помог обнаружить неэффективность WebSocket и оптимизировать передачу данных.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
⚠️ Ошибки, которые я совершил, пытаясь быть «слишком правильным» в разработке

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

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

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
👩‍💻 Как работают модули CommonJS и ES Modules в Node.js?

CommonJS и ES Modules (ESM) — два способа работы с модулями в Node.js. CommonJS является стандартом, который использовался с момента создания Node.js, в то время как ES Modules соответствуют стандарту JavaScript ES6 и обеспечивают более современный подход.

➡️ Отличия:

CommonJS:

Использует require() для импорта модулей и module.exports для экспорта.
Выполняется синхронно.

// commonjs-module.js
module.exports = function greet(name) {
return `Hello, ${name}!`;
};

// main.js
const greet = require('./commonjs-module');
console.log(greet('Alice')); // Hello, Alice!


ES Modules (ESM):

Использует import и export ключевые слова.
Выполняется асинхронно.

// esm-module.mjs
export function greet(name) {
return `Hello, ${name}!`;
}

// main.mjs
import { greet } from './esm-module.mjs';
console.log(greet('Alice')); // Hello, Alice!


🗣️ В современных приложениях рекомендуется использовать ES Modules благодаря их соответствию стандарту ES6 и поддержке асинхронности. Однако, CommonJS по-прежнему актуален для старых проектов.


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
📝 Подборка вакансий для сеньоров

Node.js Backend разработчик (удаленно)
Node.js, TypeScript, JavaScript, TCP/IP, PostgreSQL, ClickHouse, Google Pub/Sub, Kafka, RabbitMQ
от 180 000 до 660 000 ₽ | от 2 лет

Системный аналитик
BPMN, UML, SQL, OpenProject, Postman
от 200 000 до 300 000 ₽ | от 3 лет

Middle/Senior Node.js developer
Node.js, PostgreSQL, MongoDB, Redis, TypeScript, Docker, Kubernetes, RESTful API
Уровень дохода не указан | от 3 лет

Backend Developer (Node.js)
Node.js, Oracle DB, PostgreSQL, SQL, RabbitMQ, Kafka
Уровень дохода не указан | от 3 лет
Please open Telegram to view this post
VIEW IN TELEGRAM
📈 Отслеживание позиций торгового робота Московской биржи через CSV файл

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
📂 Разгружай голову, а не храните всё в ней

Держать в памяти всю структуру проекта, сроки задач и дедлайны? Это рецепт для выгорания.

👉 Совет: используй инструменты вроде Notion, Obsidian или Trello для сохранения идей, задач и технических заметок. Мозг лучше работает над задачей, если не перегружен рутиной.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
👩‍💻 Как спрятать любые данные в PNG

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
👩‍💻 Работа с JavaScript Scheduler API

Откройте для себя возможности управления приоритетами и контроля выполнения задач в JavaScript с помощью нового Scheduler API. Новый подход поможет вам стать более продуктивными и эффективными в своей работе.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
👩‍💻 Удаление объектов с дубликатами по ключу

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

Пример:

const data = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Alice' },
{ id: 4, name: 'Charlie' },
{ id: 5, name: 'Bob' }
];

const result = removeDuplicatesByKey(data, 'name');
console.log(result);
// Ожидаемый результат:
// [
// { id: 1, name: 'Alice' },
// { id: 2, name: 'Bob' },
// { id: 4, name: 'Charlie' }
// ]


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

function removeDuplicatesByKey(array, key) {
const seen = new Set();
return array.filter(item => {
const value = item[key];
if (seen.has(value)) {
return false;
}
seen.add(value);
return true;
});
}

// Пример использования:
const data = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Alice' },
{ id: 4, name: 'Charlie' },
{ id: 5, name: 'Bob' }
];

const result = removeDuplicatesByKey(data, 'name');
console.log(result);
Please open Telegram to view this post
VIEW IN TELEGRAM
👎6👍2
➡️ Как и для чего мы делали симуляцию курьерской доставки

Статья рассказывает о создании симуляционной модели для тестирования комбинаций фичей в алгоритмах курьерки. Это позволило анализировать влияние наборов фичей на метрики для разных регионов без долгих А/Б тестов, ускоряя внедрение идей.

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

Напишите функцию, которая принимает путь к файлу и возвращает Promise. Функция должна читать файл построчно с использованием потоков (streams), подсчитывать количество строк и возвращать объект с количеством строк и содержанием первой строки.

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

const filePath = "./example.txt";

processFile(filePath)
.then(result => {
console.log(result);
// Ожидаемый результат (пример):
// { linesCount: 10, firstLine: "This is the first line of the file." }
})
.catch(error => {
console.error("Error:", error);
});


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

const fs = require("fs");
const readline = require("readline");

function processFile(filePath) {
return new Promise((resolve, reject) => {
const stream = fs.createReadStream(filePath, { encoding: "utf8" });
const rl = readline.createInterface({ input: stream });

let linesCount = 0;
let firstLine = null;

rl.on("line", line => {
if (linesCount === 0) {
firstLine = line;
}
linesCount++;
});

rl.on("close", () => {
resolve({ linesCount, firstLine });
});

rl.on("error", error => {
reject(error);
});
});
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🔎 Подборка вакансий для джунов

Backend разработчик NODE.JS
🟢Node.JS, JavaScript, Vue.js, Docker, MongoDB, Redis, REST API, GitHub
🟢от 600 до 1 700 $ | 1–3 года

Node.js backend developer
🟢Node.js, TypeScript, React.js, Vue.js, Docker, PHP, Python, JavaScript
🟢до 1 000 $ | 1–3 года

Backend Developer (JS, OpenAI API)
🟢Node.js, Express, OpenAI API, PostgreSQL, JavaScript
🟢до 1 500 $ | 1–3 года
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ По мотивам windows заставки «Ленты». Кроссплатформенный скринсейвер на JS и Electron

В статье рассказывается о создании аналога знаменитого скринсейвера «Ленты» из Windows 7 для Linux с помощью Electron. Автор делится опытом адаптации найденного на GitHub JS-скрипта для создания полноценного кроссплатформенного настольного приложения.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥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
👍4