Статья объясняет, как создать невероятно быстрый многопоточный Data Grid на 1 000 000 строк с использованием Vanilla JavaScript. Рассматриваются нюансы работы с DOM для повышения производительности.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
✍5👍1
IPC в Node.js — мощный инструмент, но даже у него бывают сюрпризы. В версии 12.16.0 появился режим advanced serialization, но с ним иногда зависают сообщения. Разбираем, почему это происходит и как мы решили проблему.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2
Создайте Node.js сервер, который предоставляет API для конвертации валют с фиксированными курсами. Запрос включает исходную валюту, целевую валюту и сумму для конвертации, а сервер возвращает результат.
Требования:
•
GET /convert
:
•
Параметры: from
, to
, amount
.
•
Возвращает результат конвертации.•
Фиксированные курсы валют (например, USD → EUR = 0.85).•
Обработка ошибок: некорректные параметры или неподдерживаемая валюта.Решение задачи
const express = require('express');
const app = express();
const PORT = 3000;
// Фиксированные курсы
const rates = { USD: { EUR: 0.85 }, EUR: { USD: 1.18 } };
app.get('/convert', (req, res) => {
const { from, to, amount } = req.query;
if (!from || !to || !amount || isNaN(amount)) {
return res.status(400).json({ error: 'Некорректные параметры' });
}
const rate = rates[from]?.[to];
if (!rate) return res.status(400).json({ error: 'Валюта не поддерживается' });
const converted = (amount * rate).toFixed(2);
res.json({ from, to, amount: parseFloat(amount), converted });
});
app.listen(PORT, () => console.log(`Сервер: http://localhost:${PORT}`));
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3
• Стили, темы и адаптивная верстка в React Native
• Переводчик текста для терминала
• Элегантная реализация Long Press обработчика с помощью CSS анимации
• Как пересылать сообщения из Telegram в SMS с помощью бота
• Как найти работу мечты системному аналитику?
Please open Telegram to view this post
VIEW IN TELEGRAM
В статье рассказывается, как запустить Pong одновременно в 240 вкладках браузера. Разбираем, как работает синхронизация анимации между окнами, и делимся кодом на GitHub.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Напишите HTTP-сервер на Node.js, который записывает информацию о каждом входящем запросе (метод, URL, время) в текстовый файл
requests.log
. Сервер должен возвращать "Запрос обработан"
на любой запрос.Пример:
node server.js
curl http://localhost:3000/test
curl -X POST http://localhost:3000/api
[2024-11-11T12:00:00Z] GET /test
[2024-11-11T12:00:05Z] POST /api
Решение задачи
const http = require('http');
const fs = require('fs');
const logFile = 'requests.log';
// Создание HTTP-сервера
const server = http.createServer((req, res) => {
const logEntry = `[${new Date().toISOString()}] ${req.method} ${req.url}\n`;
// Записываем лог в файл
fs.appendFile(logFile, logEntry, (err) => {
if (err) {
console.error('Ошибка записи лога:', err.message);
}
});
// Отправляем ответ
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Запрос обработан');
});
// Запуск сервера на порту 3000
server.listen(3000, () => {
console.log('Сервер запущен на http://localhost:3000');
});
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Junior Node.js разработчик
Junior fullstack разработчик (Node.js + React)
Web-Developer (Fullstack Node.js)
Please open Telegram to view this post
VIEW IN TELEGRAM
Laravel Fusion — это инструмент, который позволяет передавать данные напрямую в JavaScript-компоненты без сложных манипуляций с контроллерами. Разбираем его принципы и ключевые особенности.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3❤1👎1
Streams
в Node.js и зачем они нужны?В Node.js Streams (потоки) позволяют эффективно работать с большими объёмами данных, обрабатывая их постепенно, вместо загрузки всего файла в память. Это значительно снижает нагрузку на сервер и ускоряет обработку данных.
const fs = require('fs');
const stream = fs.createReadStream('large-file.txt', { encoding: 'utf-8' });
stream.on('data', (chunk) => {
console.log('Получена часть данных:', chunk);
});
stream.on('end', () => {
console.log('Чтение завершено');
});
stream.on('error', (err) => {
console.error('Ошибка:', err);
});
🗣️ fs.createReadStream() читает файл постепенно, не загружая его целиком в память. data – срабатывает при получении нового куска данных. end – сигнализирует, что весь файл обработан.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
Middle Node.js разработчик в музыкальный стартап
•
TypeScript, Node.js, REST API, OAuth 2.0, PostgreSQL, Redis, RabbitMQ, Docker, Git•
от 220 000 ₽ | от 2 летFullstack разработчик (React.js / React Native / Node.js)
•
React.js, React Native, Node.js, Express, SQL, NestJS, ERD, AWS, MongoDB, CI/CD•
от 130 000 до 200 000 ₽ | от 3 летБэкенд-разработчик Node.js
•
Node.js, PostgreSQL, Linux, MongoDB, Redis, RabbitMQ, Git, ООП, TypeScript, Apache Kafka•
Уровень дохода не указан | от 3 летPlease open Telegram to view this post
VIEW IN TELEGRAM
👍3
Немногие знают истинную ценность Map. Между тем, применение этой структуры данных позволяет повысить производительность и улучшить пользовательский опыт. Особенно она полезна при работе со сложными структурами данных или при необходимости получить быстрый доступ к данным.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Напишите скрипт, который принимает путь к папке и выводит количество файлов каждого расширения в этой папке.
Пример:
node fileExtensions.js ./example-folder
txt: 3
js: 5
json: 2
Решение задачи
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 extensionCount = files.reduce((acc, file) => {
const ext = path.extname(file).slice(1); // Получаем расширение без точки
if (ext) {
acc[ext] = (acc[ext] || 0) + 1;
}
return acc;
}, {});
console.log('Расширения файлов:');
for (const [ext, count] of Object.entries(extensionCount)) {
console.log(`${ext}: ${count}`);
}
});
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
В этом гайде пользователь объясняет, как можно написать простого Telegram чат-бота на NodeJS, который будет пересылать все входящие сообщения в SMS, используя Exolve SMS API.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Как Hikasami ускорил загрузку страниц и видео с помощью Next.js 15? В статье разбор SSR с кешированием, динамического обновления API, Edge Functions и адаптации Gravity UI для максимальной скорости.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
😱2
Senior Node.js Engineer
•
TypeScript, Node.js, Next.js, Inngest, PostgreSQL, Prisma ORM, socket.io•
до 5000 $ | от 3–4 летSenior Tools Engineer
•
JavaScript, Node.js, React, MongoDB, serverless platforms, OpenAI/LLM•
от 4500 до 6500 $ | более 5 летSenior FullStack Engineer (Angular, Node.js)
•
Angular, Express, NestJS, TypeScript, PostgreSQL, GCP•
от 2500 до 4000 $ | опыт не указанPlease open Telegram to view this post
VIEW IN TELEGRAM
Реактивное программирование — это ключ к созданию приложений, мгновенно реагирующих на события. В статье разбираются основы этой парадигмы, реализация на JavaScript/TypeScript в Node.js и её универсальное применение.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Cluster — это модуль Node.js, позволяющий создавать несколько процессов (воркеров) для выполнения кода параллельно. Это полезно для улучшения производительности на многопроцессорных системах, так как Node.js работает в однопоточном режиме.
const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
// Создание воркеров на основе числа ядер процессора
console.log(`Master ${process.pid} is running`);
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('exit', (worker, code, signal) => {
console.log(`Worker ${worker.process.pid} died`);
});
} else {
// Каждый воркер будет запускать сервер
http.createServer((req, res) => {
res.writeHead(200);
res.end(`Hello from worker ${process.pid}\n`);
}).listen(8000);
console.log(`Worker ${process.pid} started`);
}
➡️ Cluster позволяет создавать несколько экземпляров сервера на каждом ядре процессора, увеличивая масштабируемость и производительность приложений на Node.js.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🤯3👎1🔥1
Статья объясняет, как с помощью Proxy в ванильном JavaScript реализовать реактивные сигналы, упрощая управление состоянием. Рассматриваются основные принципы и примеры применения.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья объясняет, как gRPC упрощает переход от монолита к микросервисам в приложениях на основе Domain Driven Design. Рассматриваются преимущества: прямые вызовы, типизация, децентрализация и автоматизация методов.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3