Рубрика «Node»

в 12:16, , рубрики: Node, perfomance, Rust, ssr, vps

Дело было вечером... Сидел я, развлекался переписыванием фронта маркетплейса с React на Preact с Brotli и нативным CSS, чтобы протестировать максимальную оптимизацию. В попытках добиться предельной производительности и скорости решил провести эксперимент по переписыванию бэка на Rust с сжатием БД в Redis — но это совсем другая история. В общем, эксперименты привели меня к идее сделать SSR на Rust, и по бенчмаркам вышел на 95,000+ RPS на M4. Это уже само по себе неплохо, ниже расскажу подробнее.

Архитектура Rusty-SSR

Читать полностью »

Привет! Сегодня хочу поговорить о проблеме, с которой сталкивается каждый фулстек-разработчик, и о том, как её можно элегантно решить.

Проблема, которая всех бесит

Представьте: пишете форму регистрации. На фронте описываете типы для полей формы. На бэке — те же самые типы для валидации. Меняете одно поле — нужно помнить, что надо поменять в двух местах. Забыли обновить на бэке? Получите баг в продакшене.

А теперь добавьте сюда:

  • Константы (статусы заказов, роли пользователей)

  • Схемы валидации (Zod, Yup)

  • Утилитные функции (форматирование дат, работа со строками)

  • Читать полностью »

Инициализация проекта на express и установка требуемых библиотек::

npm init -y
npm i express body-parser jsonwebtoken nodemon dotenv pg argon2 cookie-parser

Меняем в package.json: нужно добавить type и скрипт dev

  "main": "index.js",
  "type": "module",
  "scripts": {
    "dev": "nodemon app.js"
  },

Создаем app.js в корневой папке

Содержание

  1. Введение

  2. Установка и настройка проекта

  3. Создание модуля и сущности

  4. Создание DTO и валидация

  5. Создание сервиса и контроллера

  6. Реализация CRUD операций

  7. Тестирование API

  8. Заключение

Введение

NestJS — это прогрессивный фреймворк для построения эффективных и масштабируемых серверных приложений на Node.js. Он использует современные возможности JavaScript и TypeScript, вдохновлен архитектурными паттернами Angular и поддерживает модульность, инъекцию зависимостей и другие современные подходы.

TypeORMЧитать полностью »

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

В один прекрасный день боевое сопровождение приходит с ужасной проблемой — память в контейнерах Node.js течет, сервисы падают с OOM каждый день, все пропало!

Untitled

Читать полностью »

Призыв писать компактное ПО, версия 2024 года (с примером кода) - 1

Этот пост посвящён памяти Никлауса Вирта, первопроходца в сфере вычислительных наук, ушедшего от нас 1 января этого года. В 1995 году он написал важную статью A Plea for Lean SoftwareЧитать полностью »

Данная статья будет разбита на несколько частей. 

Часть 1 - Вступление

Часть 2 - Делаем клиент на TypeScript для Tinkoff эквайринг

Часть 3 - Работа с картами МИР и иными картами поддерживающими 3DS V2

Предистория

В рамках разработки нашего SaaS решения для автоматизации процессов кар-шерингов и авто-ренталов CarSense, перед нами стояла задача реализации системы рекуррентных платежей (Добавление карт пользователями для дальнейшего безакцептного списания). 

Читать полностью »

В этой статье рассмотрим использование компилятора для js-кода облачных функций.

Используем SWC с Firebase функциями - 1

Проблема

Создаем проект. Добавляем Firebase функцию.

// index.js
export const helloWorld = https.onRequest(/** … */);

Через некоторое время добавляем ещё несколько.

// index.js
export const helloWorld = https.onRequest(/** … */);
export const lol = https.onRequest(/** … */);
export const pirojok = https.onRequest(/** … */);

Ещё через некоторое время ещё и ещё.Читать полностью »

Холивар...

Одни умные люди говорят: "эксепшены - это зло, используйте монады!", другие кричат: "коды ошибок ещё никто не отменял!", а третьи включают механизм исключений в языки программирования.. Однако, у большинства статей, который попадались мне на глаза, есть (при всём уважении к авторам!) два проблемных момента:

  • Некоторая... академичность. Разобрано много и интересно, но заканчивается всё стандартным: "ваш выбор зависит от вашей ситуации".

  • Абсолютно отсутствуют упоминания о бюджете. Никто же не будет спорить, что теоретически мерседес лучше, чем восьмёрка по всем показателям кроме.. цены.

Читать полностью »

Безопасность npm-проектов, часть 2

Всем привет! В прошлых постах мы поговорили о том, как команда npm обеспечивает безопасность, а также начали рассматривать инструменты, помогающие нам повысить безопасность проектов. Я хочу продолжить разговор и рассмотреть следующий набор полезных инструментов.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js