В этом гайде пользователь объясняет, как можно написать простого Telegram чат-бота на NodeJS, который будет пересылать все входящие сообщения в SMS, используя Exolve SMS API.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Реактивное программирование — это ключ к созданию приложений, мгновенно реагирующих на события. В статье разбираются основы этой парадигмы, реализация на JavaScript/TypeScript в Node.js и её универсальное применение.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Fullstack TypeScript разработчик [Senior]
•
TypeScript, Node.js, React, PostgreSQL, Docker, Kubernetes, Git, Linux•
Уровень дохода не указан | Senior уровеньBackend Developer (Node.js)
•
Node.js, TypeScript, MongoDB, NestJS, Kafka, Redis, Docker•
от 3 800 до 5 500 $ | 5 лет опытаSenior Fullstack/Backend Developer (Node.js, TypeScript, Postgres, Web3)
•
Node.js, TypeScript, PostgreSQL, Svelte.js, AWS, Linux, Git, функциональное программирование, Web3•
от 4 000 до 6 000 $ | 6 лет опытаPlease open Telegram to view this post
VIEW IN TELEGRAM
Статья объясняет, как с помощью Proxy в ванильном JavaScript реализовать реактивные сигналы, упрощая управление состоянием. Рассматриваются основные принципы и примеры применения.
Читать...
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
👍7🤝2
Senior Node.js Developer в стартап (Nest.js)
Senior Fullstack Developer
Lead JavaScript - Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья объясняет появление метода setHTMLUnsafe для работы с HTML в браузерах. Разбираются особенности безопасности, отличия от setHTML и innerHTML, а также поддержка в разных браузерах и значение нового подхода к именованию методов.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Каждый день осваивать что-то новое — звучит круто, но мозг так не работает. Выбирая направление для развития, многие пытаются изучить всё подряд, но это неэффективно.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Senior Node.js developer
Backend Engineer (Node.js)
Middle+ NodeJS backend developer
Please open Telegram to view this post
VIEW IN TELEGRAM
💩7🤮3👍1🖕1
Статья объясняет использование модульных CSS-архитектур, таких как BEM, SMACSS и OOCSS, в проектах на Next.js. Рассматриваются подходы к созданию масштабируемой и организованной структуры стилей.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Напишите скрипт, который принимает путь к папке, считывает все файлы в этой папке и записывает их имена, размеры (в байтах) и дату последнего изменения в 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
👍10
• Интеграция внешнего файлового сервера https://min.io в фулстек приложение на NestJS и Angular
• Разработка Telegram Mini App с помощью React
• Почему мы выбрали gRPC вместо tRPC?
• Разворачиваем приложение Next.js с базой данных PostgreSQL и задачей Cron на облачном сервере Ubuntu Linux
• Создаём современные npm-пакеты и преодолеваем трудности совместимости ESM и CJS
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Представь, что ты отправляешь сообщение в мессенджере, а оно доходит с задержкой в минуту. Бесит? А теперь представь, что у тебя сервис с миллионами пользователей, и каждое их действие должно мгновенно отражаться везде. Звучит как кошмар? Спокойно, есть четыре проверенных способа решить эту головоломку, и они реально работают.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Создайте сервер на Node.js, который логирует все входящие запросы с указанием времени и метода запроса (GET, POST и т. д.). Логи должны сохраняться в файл
requests.log
. Каждая запись должна добавляться в файл с новой строки, а файл логов должен автоматически очищаться каждый день в полночь.• При получении запроса сервер записывает его метод и время в файл
requests.log
. Каждый день в полночь файл логов очищается.Решение задачи
const http = require('http');
const fs = require('fs');
const path = require('path');
// Путь к файлу логов
const logFilePath = path.join(__dirname, 'requests.log');
// Функция для записи лога
function logRequest(method) {
const timestamp = new Date().toISOString();
const logEntry = `${timestamp} - ${method}\n`;
fs.appendFile(logFilePath, logEntry, (err) => {
if (err) console.error('Ошибка записи в лог:', err);
});
}
// Создание сервера
const server = http.createServer((req, res) => {
logRequest(req.method);
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Запрос логирован!\n');
});
// Очистка файла логов в полночь
function clearLogDaily() {
const now = new Date();
const timeToMidnight = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1) - now;
setTimeout(() => {
fs.writeFile(logFilePath, '', (err) => {
if (err) console.error('Ошибка очистки логов:', err);
console.log('Файл логов очищен.');
});
clearLogDaily();
}, timeToMidnight);
}
// Запуск очистки логов
clearLogDaily();
// Запуск сервера
server.listen(3000, () => {
console.log('Сервер запущен на порту 3000');
});
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👎1🔥1
Node.js backend developer
Node.js Developer
Web-программист Node.js (Junior) удаленно
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6🔥2
Статья объясняет, как gRPC упрощает переход от монолита к микросервисам в приложениях на основе Domain Driven Design. Рассматриваются преимущества: прямые вызовы, типизация, децентрализация и автоматизация методов.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
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
👍9
Бэкэнд-разработчик JavaScript
•
JavaScript, Node.js, React, Angular, RESTful API, PostgreSQL, MongoDB, RabbitMQ, Git•
от 250 000 до 400 000 ₽ | от 3 лет опытаBackend (Node.js) разработчик
•
Node.js, TypeScript, JavaScript, MoleculerJS, PostgreSQL, Unit-тестирование, Git•
Уровень дохода не указан | от 4 лет опытаMiddle+ NodeJS backend developer (Удаленно)
•
Node.js, TypeScript, GraphQL, PostgreSQL, Websockets, Redis, GitLab•
от 2 000 до 4 500 $ | Требуемый опыт не указанPlease open Telegram to view this post
VIEW IN TELEGRAM
Статья исследует, как обеспечить стабильность и доступность сервиса по всему миру. Рассмотрены методы контроля скорости работы сайта и мониторинга проблем маршрутизации и цензуры, выходящие за рамки стандартных аналитических решений.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1