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
➡️ Самые интересные статьи за последние дни:
• Сравнение Gitlab cache и Gitlab artifacts
• JavaScript: Удобство или Угроза? Размышления о Приватности и Вебе
• Как мы учили немонохромные SVG-логотипы краситься самостоятельно
• Разбираемся с цветами: пространства, иллюзии и квантование
• Как приготовить обфускацию в JavaScript и не сжечь лабораторию: AST, babel, плагины
🧠 Прокачивай мышление через эксперименты
Давно работаешь с одним и тем же инструментом или подходом? Это удобно, но затормаживает рост.
👉 Совет: хотя бы раз в месяц попробуй решить задачу нестандартным способом. Используй новую библиотеку, напиши код на языке, который почти не знаешь, или придумай другой алгоритм. Такие эксперименты ломают шаблоны и учат думать шире.
⚙️ Что такое 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.
⚙️ Что читали на Хабре в 2024 году: анализ статей с Node.js, Google Sheets и каплей ChatGPT
Рассматриваем анализ данных Хабра за 2024 год: популярные статьи, скрытые тренды и интересные находки. Node.js, нейросети и Google Таблицы в деле!
Читать...
➡️ Пишем Realtime для Multiple-page application в микросервисной архитектуре
Статья рассказывает, как в MPA на микросервисной архитектуре избежать потерь сообщений при перезагрузке страницы. Рассматривается метод повторной отправки пропущенных WebSocket-сообщений.
Читать...
➡️ HTTP-запросы: структура, методы, строка статуса и коды состояния
Статья объясняет базовые элементы HTTP: структуру запросов, методы для выполнения операций, строку статуса и коды состояния, помогающие понять результат взаимодействия с сервером.
Читать...
⚙️ Что бы я хотел знать о Postgres, когда начал его изучать
Я профессионально работаю над веб-приложениями уже более десяти лет, и за это время пришлось научиться использовать множество различных систем и инструментов. В процессе обучения я обнаружил, что официальная документация, как правило, оказывается наиболее полезной.
Читать...
📈 Подборка статей для вашей карьеры
• Как устроен Профсоюз работников IT
• Ёлочка, гори, айтишник, не гори
• Стоит ли идти в геймдев в 2025 году?
• Нам не нужны кодеры, нам нужны инженеры-разработчики
• Как мы разработали систему грейдинга для системных аналитиков
👩💻 Когда не стоит использовать метод find() в JavaScript
Немногие знают истинную ценность Map. Между тем, применение этой структуры данных позволяет повысить производительность и улучшить пользовательский опыт. Особенно она полезна при работе со сложными структурами данных или при необходимости получить быстрый доступ к данным.
Читать...
⚙️ Что такое path модуль в Node.js и как он используется?path — это встроенный модуль в Node.js для работы с файловыми путями. Он упрощает создание, объединение и нормализацию путей, обеспечивая кросс-платформенную совместимость.
➡️ Пример:
const path = require('path');
const fullPath = path.join(__dirname, 'files', 'example.txt'); // Объединение путей
console.log(fullPath); // Полный путь к файлу
console.log(path.basename(fullPath)); // example.txt (имя файла)
console.log(path.extname(fullPath)); // .txt (расширение файла)🗣️ В этом примере модуль path используется для создания и анализа путей к файлам, что упрощает работу с файловой системой в Node.js.
👩💻 Удаление объектов с дубликатами по ключу
Напишите функцию, которая принимает массив объектов и ключ. Функция должна возвращать новый массив, удаляя объекты с повторяющимися значениями указанного ключа. Сохраняйте порядок элементов.
Пример:
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);
👩💻 Обзор наследования в JavaScript
Статья изучает шаблоны наследования в JavaScript, основанные на прототипах. Рассматриваются их уникальные особенности и применение, чтобы выбрать наиболее подходящий подход для задач.
Читать...
📈 Отслеживание позиций торгового робота Московской биржи через CSV файл
Статья посвящена созданию кроссплатформенного торгового робота для Московской биржи через API брокера. Рассматриваются проблемы готовых решений, таких как QUIK, и преимущества разработки легкого и гибкого инструмента.
Читать...
🌎 Google не разрешает сотрудникам использовать свою же недавно выпущенную IDE Antigravity
И, видимо, не зря — реддитор рассказал, что ИИ-агент Antigravity случайно удалил весь его диск, пока пытался исправить баг:
«Я просматриваю журналы с предыдущего шага и с ужасом вижу, что команда, которую я выполнил для очистки кэша проекта (rmdir), по всей видимости, ошибочно указала на корень вашего диска D:, а не на конкретную папку проекта.
Мне очень, очень жаль.»
⚙️ Что такое process.env в Node.js и как использовать переменные окружения?process.env — это объект в Node.js, который содержит переменные окружения. Они используются для хранения конфиденциальной информации (например, ключей API, паролей) и настройки приложений в разных средах (разработка, тестирование, продакшен).
➡️ Пример:
// Установите переменные окружения (например, в .env файле или через терминал)
// В Linux/Mac: export API_KEY=12345
// В Windows (cmd): set API_KEY=12345
// Доступ к переменным окружения
console.log(`Ваш API ключ: ${process.env.API_KEY}`);
// Используем переменные окружения для конфигурации
if (process.env.NODE_ENV === 'production') {
console.log('Запущено в режиме продакшена');
} else {
console.log('Запущено в режиме разработки');
}
🗣️ Переменные окружения через process.env позволяют настраивать поведение приложения без изменения кода. Это важно для обеспечения безопасности и управления настройками.
👩💻 Как за 10 минут создать тестировщик нагрузки для API на Node.js
Почему разработка собственного инструмента для нагрузки на API иногда оказывается лучшим выбором? В статье обсуждается реальный кейс: задачи тестирования производительности, ограничения Postman и сложность JMeter. Узнайте, как и зачем был создан простой и эффективный API-лоадер на Node.js.
Читать...
⚙️ Интернационализация (i18n) бэкенда в Express с использованием Intlayer
Недавно мне понадобилось добавить поддержку нескольких языков в API на базе Express. Я решил поделиться кратким руководством для тех, кто хочет сделать свой бэкенд отвечающим переведенным контентом в зависимости от предпочтительного языка пользователя.
Читать...
⚙️ Хост директивы: ключ к декомпозиции
Directive Composition API в Angular 15: hostDirectives в @Component/@Directive позволяет автоматически добавлять standalone-директивы, упрощая декомпозицию логики и внедряя новые подходы.
Читать...
⚙️ Интеграция и сохранение выбранного языка пользователя в базу данных в фулстек-приложении на «Angular» и «NestJS»
Пример миграции базы данных для нового поля и добавления функционала на бэкенде и фронтенде. Пошаговый разбор: обновление схемы, логика на сервере и интерфейс для изменения данных.
Читать...
➡️ Как внедрить наблюдаемость в микросервисное приложение с помощью OpenTelemetry, Jaeger и Prometheus
Статья рассказывает, как наблюдаемость помогает выявлять проблемы в микросервисных приложениях. Описаны метрики, логи, трассировки и инструменты для анализа производительности системы.
Читать...
⚡️ Микрооптимизации мышления > микрооптимизаций кода
Ты можешь неделями гоняться за лишними миллисекундами, а при этом терять часы на поиск файлов или повторяющиеся действия.
👉 Совет: настрой IDE, выучи горячие клавиши, автоматизируй рутину. Ускорение твоего мышления даёт в разы больше эффекта, чем погоня за условным «+5%» скорости выполнения кода.
⚙️ Четыре пункта, как улучшить код Backend стажера
В статье разобраны распространенные проблемы в коде начинающих разработчиков с конкретными решениями: грамотная инъекция зависимостей, использование Scoped-сервисов, паттерн Generic Repository и создание Stateless-классов.
Читать...
💬 Добавление поддержки нескольких языков в NestJS и Angular приложениях
В этой статье я добавлю поддержку нескольких языков в NestJS и Angular приложениях, для сообщений в ошибках, уведомлениях и данных полученных из базы данных.
Читать...
📆 Как я создал Vanilla Calendar Pro — легкий и гибкий календарь на JavaScript с использованием TypeScript
Статья рассказывает о создании Vanilla Calendar Pro — датапикера, собравшего 480+ звезд на GitHub. Описывается путь от первого опыта в open source до популярного инструмента, востребованного разработчиками.
Читать...
🧠 Способ стабильного создания больших приложений с помощью ИИ
Покажу, как собрать «большое» приложение из независимых модулей (~200 строк) с помощью ИИ: стабильные промпты, чат вместо агентов, бэкенд в Yandex Cloud. Плюсы и грабли.
Читать...
👩💻 Как спрятать любые данные в PNG
Статья объясняет, как спрятать данные в PNG-изображении, используя младшие биты (LSB) пикселей. Рассматривается структура PNG, каналы R, G, B и альфа, а также методы внедрения данных без заметного изменения картинки.
Читать...
Критическая уязвимость в React Server Components (CVSS 10.0). Рекомендуется обновление
🚨 React-команда официально сообщила о серьёзной проблеме безопасности в React Server Components.
Уязвимость позволяет выполнить произвольный код на сервере без аутентификации — достаточно отправить специально сформированный HTTP-запрос.
Даже если вы не используете React Server Functions напрямую — вы всё равно можете быть уязвимы, если ваш проект поддерживает React Server Components.
Уязвимость получила идентификатор CVE-2025-55182, оценку CVSS 10.0, и затрагивает версии 19.0, 19.1.0, 19.1.1 и 19.2.0 следующих пакетов:
react-server-dom-webpack
react-server-dom-parcel
react-server-dom-turbopack
Патч уже опубликован. Нужно обновиться на версии: 19.0.1, 19.1.2, 19.2.1.
Если ваш React-код вообще не работает на сервере, или вы не используете фреймворки/бандлеры с поддержкой RSC, то вы не затронуты.
Некоторые экосистемы зависели от уязвимых пакетов. В зоне риска:
Next.js
React Router (нестабильные RSC-API)
Waku
@parcel/rsc
@vitejs/plugin-rsc
Redwood SDK
Команда React работает с хостинг-провайдерами, и временные смягчения уже включены.
Но на них рассчитывать нельзя — обновляться всё равно нужно.
React Server Functions позволяют клиенту вызывать функции на сервере. На стороне клиента вызов превращается в HTTP-запрос, который React затем десериализует и мапит на вызов серверной функции.
Проблема — в том, как React декодирует payload от клиента.
Атакующий может создать вредоносный HTTP-запрос, который при десериализации приводит к удалённому выполнению кода.
Подробности раскроют позже, когда обновления будут полностью раскатаны.
Установите патч в рамках вашей версии:
npm install next@15.0.5
npm install next@15.1.9
npm install next@15.2.6
npm install next@15.3.6
npm install next@15.4.8
npm install next@15.5.7
npm install next@16.0.7
Если вы сидите на 14.3.0-canary.77 или выше — откатитесь на стабильную 14.x:
npm install next@14
React Router (нестабильные RSC API)
Обновите зависимости:
npm install react@latest
npm install react-dom@latest
npm install react-server-dom-parcel@latest
npm install react-server-dom-webpack@latest
npm install @vitejs/plugin-rsc@latest
Expo
См. changelog на expo.dev.
Redwood SDK
npm install rwsdk@latest
npm install react@latest react-dom@latest react-server-dom-webpack@latest
Waku
npm install react@latest react-dom@latest react-server-dom-webpack@latest waku@latest
Vite RSC
npm install react@latest react-dom@latest @vitejs/plugin-rsc@latest
Parcel RSC
npm install react@latest react-dom@latest react-server-dom-parcel@latest
Turbopack RSC
npm install react@latest react-dom@latest react-server-dom-turbopack@latest
Webpack RSC
npm install react@latest react-dom@latest react-server-dom-webpack@latest
29 ноября — уязвимость найденa и отправленa в Meta Bug Bounty.
30 ноября — Meta подтвердила и начала работать над фиксом с командой React.
1 декабря — фикc готов, идёт работа с хостингами и OSS-проекта́ми над валидацией и mitigations.
3 декабря — патч опубликован, уязвимость раскрыта публично.
⏱️ Быстрые фиксы — самые дорогие
«Сейчас подкручу, потом нормально переделаем». А «потом» обычно не наступает, и костыль становится частью системы.
👉 Совет: если фиксишь быстро, оставляй заметку и создавай задачу на нормальное решение. Костыли допустимы, но только когда у них есть срок годности.
⚙️ Кэширование информации в Redis на NestJS
Статья показывает, как подключить Redis к проекту и настроить кэширование данных с помощью @nestjs-mod/cache-manager. Рассматриваются примеры работы с Docker Compose и Kubernetes для оптимизации запросов.
Читать...
💬 Как пересылать сообщения из Telegram в SMS с помощью бота
В этом гайде пользователь объясняет, как можно написать простого Telegram чат-бота на NodeJS, который будет пересылать все входящие сообщения в SMS, используя Exolve SMS API.
Читать...