11232
Все о разработке backend части на JavaScript (Node JS). А так же: Express JS, Next JS, Nest, Socket.IO Канал на бирже - https://telega.in/c/we_use_js По вопросам рекламы или разработки: @g_abashkin РКН: https://vk.cc/cJPGOP
⚙️ Что такое Promise.finally в JavaScript и зачем он используется?Promise.finally — это метод, который выполняется после завершения промиса (успешного или с ошибкой), независимо от его результата. Это полезно для очистки ресурсов или выполнения финальных действий.
➡️ Пример:
const promise = new Promise((resolve, reject) => {
setTimeout(() => resolve('Успех!'), 1000);
});
promise
.then(result => console.log(result)) // 'Успех!'
.catch(error => console.error(error))
.finally(() => console.log('Завершено!'));🗣️ В этом примере finally вызывается после завершения промиса, независимо от того, был он успешно выполнен или отклонён. Это удобно для задач, таких как закрытие соединений или очистка.
📈 Подборка статей для вашей карьеры
• Центральный Университет: взгляд магистра изнутри (1 семестр)
• Стартап vs корпорации vs предпринимательство: кому, куда и зачем?
• Почему соискателям не стоит постить нюдсы, что такое culture fit и чем IT-индустрия напоминает подростка
• Лидерами рождаются или становятся? Откуда берутся управленцы и лидеры в IT
• Работать или переработать: как победить в себе заядлого удаленщика
⚡️ @asouei/safe-fetch — всего 3kb, но решает все боли с fetch:
Один из подписчиков написал либу которая сильно упрощает работу с запросами. Думаю вам будет интересно.
Было:
try {
const res = await fetch('/api/users');
if (!res.ok) throw new Error(res.status);
const data = await res.json();
} catch (e) {
// непонятно, что за ошибка
}const res = await safeFetch.get('/api/users');
if (res.ok) {
console.log(res.data);
} else {
console.error(res.error.name); // NetworkError | TimeoutError | HttpError
}{ok: true/false} Retry-Afternpm i @asouei/safe-fetch
👩💻 API для конвертации валют
Создайте 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}`));
👩💻 Запись данных в файл
Создайте Node.js скрипт, который принимает текст через стандартный ввод и сохраняет его в файл output.txt. Если файл уже существует, новые данные должны добавляться в конец файла.
Решение задачи🔽
const fs = require('fs');Читать полностью…
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.question('Введите текст для записи: ', (input) => {
fs.appendFile('output.txt', input + '\n', (err) => {
if (err) {
console.error('Ошибка записи в файл:', err);
} else {
console.log('Текст успешно сохранён в output.txt');
}
rl.close();
});
});
➡️ Бесплатное обучение фулстек-разработке веб-сервиса с нуля по видео-урокам с исходным кодом и поддержкой
Статья представляет курс по созданию IT-продуктов: от выбора архитектуры до радости от разработки. Обучение включает 141 урок, доступный бесплатно, с акцентом на качество, масштабируемость и удобство работы.
Читать...
👩💻 Изучение Символов JavaScript
Глубокое погружение в JavaScript Символы — что это такое, чем они важны и как их эффективно использо3вать
Читать...
⚙️ Интернационализация (i18n) бэкенда в Express с использованием Intlayer
Недавно мне понадобилось добавить поддержку нескольких языков в API на базе Express. Я решил поделиться кратким руководством для тех, кто хочет сделать свой бэкенд отвечающим переведенным контентом в зависимости от предпочтительного языка пользователя.
Читать...
⚙️ Как мы создали микросервисное приложение для анализа вакансий с hh.ru: Docker, Kafka, Elasticsearch и ещё немного магии
Создание распределённого приложения для анализа вакансий hh.ru: микросервисы, контейнеры, брокеры сообщений и визуализация данных в действии. Полезно для аналитиков, компаний и соискателей.
Читать...
Как стать востребованным Fullstack-разработчиком?
Fullstack-разработчик — это универсальный специалист, способный создавать веб-приложения от интерфейса до серверной логики. Он работает с фронтендом (HTML, CSS, JavaScript, React) и бэкендом (базы данных, API, серверные технологии), что делает его ключевым звеном в разработке.
Почему это перспективно?
— Высокий спрос: компании вроде Сбера, Авито и VK активно набирают fullstack-специалистов.
— Доход: от 70 000 ₽ на старте до 300 000+ ₽ с опытом.
— Гибкость: половина вакансий — удалённые.
С чего начать?
Освойте основы HTML, CSS и JavaScript, затем переходите к серверным технологиям. Чтобы двигаться эффективно, нужен чёткий план развития.
Получите бесплатную Skill-map — карту навыков Fullstack-разработчика — и начните свой путь в IT уже сегодня.
Зарегистрируйтесь и скачайте гайд → https://vk.cc/cP1kJf
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
⚙️ Интеграция и сохранение выбранного языка пользователя в базу данных в фулстек-приложении на «Angular» и «NestJS»
Пример миграции базы данных для нового поля и добавления функционала на бэкенде и фронтенде. Пошаговый разбор: обновление схемы, логика на сервере и интерфейс для изменения данных.
Читать...
➡️ Пишем Realtime для Multiple-page application в микросервисной архитектуре
Статья рассказывает, как в MPA на микросервисной архитектуре избежать потерь сообщений при перезагрузке страницы. Рассматривается метод повторной отправки пропущенных WebSocket-сообщений.
Читать...
👩💻 Создание простого сервера для статических файлов
Создайте HTTP-сервер на Node.js, который раздаёт статические файлы из указанной папки. По умолчанию сервер должен обслуживать файлы из папки public и работать на порту 3000.
Создайте структуру папок:
project/
├── server.js
└── public/
└── index.html
Файл server.js:Читать полностью…
const http = require('http');
const fs = require('fs');
const path = require('path');
const PORT = 3000;
const PUBLIC_DIR = path.join(__dirname, 'public');
const server = http.createServer((req, res) => {
let filePath = path.join(PUBLIC_DIR, req.url === '/' ? 'index.html' : req.url);
fs.readFile(filePath, (err, data) => {
if (err) {
res.writeHead(404, { 'Content-Type': 'text/plain' });
res.end('404 Not Found');
} else {
res.writeHead(200, { 'Content-Type': 'text/html' });
res.end(data);
}
});
});
server.listen(PORT, () => {
console.log(`Сервер запущен на http://localhost:${PORT}`);
});
Файл public/index.html (пример содержимого):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Static Server</title>
</head>
<body>
<h1>Добро пожаловать на мой сервер!</h1>
</body>
</html>
node server.js
👩💻 Паттерны для эффективного манипулирования DOM с ванильным JavaScript
В руководстве рассматриваются такие шаблоны работы с DOM на JavaScript, как выбор правильного querySelector, кэширование элементов и улучшение обработки событий.
Читать...
⚡️ Микрооптимизации мышления > микрооптимизаций кода
Ты можешь неделями гоняться за лишними миллисекундами, а при этом терять часы на поиск файлов или повторяющиеся действия.
👉 Совет: настрой IDE, выучи горячие клавиши, автоматизируй рутину. Ускорение твоего мышления даёт в разы больше эффекта, чем погоня за условным «+5%» скорости выполнения кода.
🛡 Парольная защита статичной HTML-страницы на JS
Как защитить веб-страницы паролем без серверной поддержки? Инструменты StatiCrypt и Portable Secret помогут зашифровать HTML с использованием AES-256. Статические страницы остаются безопасными даже на публичном хостинге.
Читать...
👩💻 Как работать с потоками в JavaScript: оптимизация асинхронных запросов
В статье объясняется асинхронное программирование в JavaScript. Разбираются основы работы с промисами, async/await и методы управления параллельными операциями для повышения читаемости и эффективности кода.
Читать...
👩💻 Работа с JavaScript Scheduler API
Откройте для себя возможности управления приоритетами и контроля выполнения задач в JavaScript с помощью нового Scheduler API. Новый подход поможет вам стать более продуктивными и эффективными в своей работе.
Читать...
👩💻 WeakMap и WeakSet в JavaScript
Какие структуры данных помогут избежать утечек памяти в JavaScript? Статья раскрывает особенности WeakMap и WeakSet: слабые ссылки, автоматическое управление памятью и неожиданные сценарии их применения.
Читать...
⚙️ PHP Typed: Маленький Composer пакет, который нарушает PHP правила ради вас
Звучит слишком громко? Давайте уточним, чтобы избежать обманутых ожиданий: этот пакет использует немного магии вне Хогвартса, и будет действительно полезен любителям строгой типизации в PHP.
Читать...
👩💻 Проверка сбалансированных скобок
Напишите функцию, которая принимает строку, содержащую различные типы скобок ((), {}, []), и проверяет, являются ли они сбалансированными. Строка считается сбалансированной, если каждая открывающая скобка имеет соответствующую закрывающую в правильном порядке.
Пример: Для строки "{[()]}" функция должна вернуть true, а для строки "{[(])}" — false.
Решение задачи🔽
function isBalanced(str) {Читать полностью…
const stack = [];
const pairs = { ')': '(', '}': '{', ']': '[' };
for (let char of str) {
if (['(', '{', '['].includes(char)) {
stack.push(char);
} else if ([')', '}', ']'].includes(char)) {
if (stack.pop() !== pairs[char]) return false;
}
}
return stack.length === 0;
}
// Пример использования
console.log(isBalanced("{[()]}")); // true
console.log(isBalanced("{[(])}")); // false
🧠 Прокачивай мышление через эксперименты
Давно работаешь с одним и тем же инструментом или подходом? Это удобно, но затормаживает рост.
👉 Совет: хотя бы раз в месяц попробуй решить задачу нестандартным способом. Используй новую библиотеку, напиши код на языке, который почти не знаешь, или придумай другой алгоритм. Такие эксперименты ломают шаблоны и учат думать шире.
⚙️ Что такое fs.promises в Node.js и как его использовать?fs.promises — это API для работы с файловой системой с использованием промисов, что позволяет писать асинхронный код без коллбеков.
➡️ Пример:
const fs = require('fs').promises;
async function readFile() {
try {
const data = await fs.readFile('example.txt', 'utf8');
console.log('Содержимое файла:', data);
} catch (err) {
console.error('Ошибка чтения файла:', err.message);
}
}
readFile();🗣️ В этом примере fs.promises.readFile используется для чтения файла асинхронно, делая код чище и проще для обработки ошибок через try-catch.
⚙️ Хост директивы: ключ к декомпозиции
Directive Composition API в Angular 15: hostDirectives в @Component/@Directive позволяет автоматически добавлять standalone-директивы, упрощая декомпозицию логики и внедряя новые подходы.
Читать...
⚙️ Что читали на Хабре в 2024 году: анализ статей с Node.js, Google Sheets и каплей ChatGPT
Рассматриваем анализ данных Хабра за 2024 год: популярные статьи, скрытые тренды и интересные находки. Node.js, нейросети и Google Таблицы в деле!
Читать...
➡️ Самые интересные статьи за последние дни:
• Без головы — лучше! Разворачиваем собственную Headless CMS Directus в облаке
• Пишем Realtime для Multiple-page application в микросервисной архитектуре
• Как написать Google Calendar на коленке? Обзор FullCallendar
• Как внедрить наблюдаемость в микросервисное приложение с помощью OpenTelemetry, Jaeger и Prometheus
• Поддержка временных зон в фулстек-приложении на основе NestJS и Angular: работа с REST и WebSockets
➡️ Как внедрить наблюдаемость в микросервисное приложение с помощью OpenTelemetry, Jaeger и Prometheus
Статья рассказывает, как наблюдаемость помогает выявлять проблемы в микросервисных приложениях. Описаны метрики, логи, трассировки и инструменты для анализа производительности системы.
Читать...
➡️ HTTP-запросы: структура, методы, строка статуса и коды состояния
Статья объясняет базовые элементы HTTP: структуру запросов, методы для выполнения операций, строку статуса и коды состояния, помогающие понять результат взаимодействия с сервером.
Читать...
➡️ HTTP-запросы: структура, методы, строка статуса и коды состояния
Статья объясняет базовые элементы HTTP: структуру запросов, методы для выполнения операций, строку статуса и коды состояния, помогающие понять результат взаимодействия с сервером.
Читать...
👩💻 Array.filter() под микроскопом: секреты работы с массивами
В статье подробно разбирается метод Array.prototype.filter() в JavaScript. Поговорим о его внутреннем механизме, особенностях работы и нюансах, которые могут быть полезны разработчикам.
Читать...