Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2020 September 04

M

Miseo in NodeUA - JavaScript and Node.js in Ukraine
Dmytro Drachov
если вкользь то у тебя есть инпут X,Y
потом у тебя появляеться множество Z=X+Y -> память 2x
потом у тебя появляеться множество K, 0 <= k <= X+Y т.е. в худшем случае снова копия.

Итого у тебя инпут в функцию увеличиваеться внутри функции в 3 раза в худшем случае.


А вообще раз уж ты спрашиваешь про память то было бы не плохо знать что за тип данных в allS и newD и что делает groupedFunc.
Функция groupedFunc должна получить на вход массив и если в нём есть одинаковые значения ключей, то надо над ними провести расчёты. в данном случае параметром является ключ price. Сама функция такая.

const groupedFunc = (array, groupParam) => {

// используется структура Map - ключ-значение, которое в конце преобразуется в массив
   const groupedData = [
       ...array.reduce(
           (map, item) => {
               // для каждого элемента item в массиве:
               // берем значение поле, которое будем суммировать
               const { size, count } = item;
               // берем значение ключа (поля по которому группируем)
               const key = item[groupParam]
               // находим существующий єлемент в мапе
               const prev = map.get(key);

        if (prev) {
           prev.size = size; // если нашли существующий заменяем на новый
           prev.count += count; // суммируем количество
        } else {
           map.set(key, Object.assign({}, item)); // если не нашли, то добавляем элемент в мап
        };

     return map;
    }, new Map() // в начале пустой Map
  ).values() // возвращает итератор объектов, поэтому вначале поставили деструктуризацию - чтобы превратить все в красивый массив
];
   return groupedData;
};


структура данных такая:

[
{
  "price": 12389,
   "size": 4.235825,
   "timestamp": "1597583868074",
   "count": 2
 },
]


Таких объектов обычно не больше тысячи. Но новые данные приходят очень часто. У меня даже были мысли может надо на С++ писать отдельную математику?

А где мне еще накапливать актуальное состояние данных? Только в памяти. Мне же дальше над ними в этом же блоке работать. Вернее после того как данные обновились я их сразу в Редис скидываю.

А можно поподробнее про дамп? Если есть может статью какую то. Чтобы я быстро сделал нужные дейстия.
источник
2020 September 05

OB

O Bogdan in NodeUA - JavaScript and Node.js in Ukraine
Привет) Ребят, что со мной не так, вроде столько раз делал всё ок было, а сейчас не получается. У меня нода с ts и стандартный compare паролей в bcrypt и он возвращает false хотя они идентичные, я задебажил. Что со мной не так?(
источник

AA

Anna Alimova 👩‍💻... in NodeUA - JavaScript and Node.js in Ukraine
Раскодируй из юникода. Могут быть нечитаемые символы или что-то в этом роде
источник

OB

O Bogdan in NodeUA - JavaScript and Node.js in Ukraine
Спасибо, уже разобрался, я в тесте схэшеный пароль на проверку отправлял, а нужно оригинальный
источник

м

максим in NodeUA - JavaScript and Node.js in Ukraine
дайте пожалуйста ссылку на групу по реакту
источник

AS

Andrey Saenko in NodeUA - JavaScript and Node.js in Ukraine
максим
дайте пожалуйста ссылку на групу по реакту
тут фронт не в почете
источник

D

Dmytro in NodeUA - JavaScript and Node.js in Ukraine
максим
дайте пожалуйста ссылку на групу по реакту
источник

M

Mehannoying in NodeUA - JavaScript and Node.js in Ukraine
источник

OB

O Bogdan in NodeUA - JavaScript and Node.js in Ukraine
Ребят, а посоветуйте, вот есть у меня приложение на ресте, есть роут на логин, но я хочу подключить 2fa в виде one time password. Как можно сделать чтобы я одним запросом отправил на логин инфу и только потом на 2fa, но без него токены мне не выдаются?
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
O Bogdan
Ребят, а посоветуйте, вот есть у меня приложение на ресте, есть роут на логин, но я хочу подключить 2fa в виде one time password. Как можно сделать чтобы я одним запросом отправил на логин инфу и только потом на 2fa, но без него токены мне не выдаются?
Ниче не понял
источник

IG

Ivan Granat in NodeUA - JavaScript and Node.js in Ukraine
Подскажите пожалуйста как реализовать фильтрацию объектов по вложенным полям.
есть строка. есть объект, поля которого состоят из объектов, а те состоят из полей типа строка. (айпи, почта, имя, фамилия...)
нужно чтобы при вводе текста не важно какого оно искало его как подстроку.
у меня была идея сделать json.Stringify() для каждого объекта, и проверять регуляркой.
но что-то мне подсказывает что это не рациональное решение.
источник

IG

Ivan Granat in NodeUA - JavaScript and Node.js in Ukraine
решил, буду использовать Object.values() в цикле 🤷🏻‍♂️
если у кого-то есть другие идеи - милости прошу к обсуждению
источник

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
Ivan Granat
решил, буду использовать Object.values() в цикле 🤷🏻‍♂️
если у кого-то есть другие идеи - милости прошу к обсуждению
Заранее построить карту, чтобы не искать в цикле
источник

IG

Ivan Granat in NodeUA - JavaScript and Node.js in Ukraine
Алексей Попов
Заранее построить карту, чтобы не искать в цикле
построить карту?
это как ?
источник

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
Ivan Granat
построить карту?
это как ?
Тебе надо искать по полям объекта, как я понял. Это долго и неудобно
Если набор этих полей статичен, лучше сразу вытащить их и построить какой-нибудь map с ключами из этих строк
источник
2020 September 06

OB

O Bogdan in NodeUA - JavaScript and Node.js in Ukraine
Alexander
Ниче не понял
Смотри, другой пример. Вот представь, есть регистрация, я отправляю запрос на определенный роут(например, api/v1/user/create/) и отправляю первичные данные(email, password, username, phoneNumber) и чтобы продолжить работать в системе нужно сразу заполнить профиль, который будет на другом роуте(например, api/v1/user/fillProfile) и должен отправить туда вторичные данные(firstName, lastName, city, address). Понятно что можно как-то с фронта это агрегировать, но даже так, бекенд должен дать знать фронту что не заполненый профиль и нужно это доделать и не пускать дальше пользоваться апихой. Как можно архитектурно это решить?
источник

IH

Ilya Human in NodeUA - JavaScript and Node.js in Ukraine
O Bogdan
Смотри, другой пример. Вот представь, есть регистрация, я отправляю запрос на определенный роут(например, api/v1/user/create/) и отправляю первичные данные(email, password, username, phoneNumber) и чтобы продолжить работать в системе нужно сразу заполнить профиль, который будет на другом роуте(например, api/v1/user/fillProfile) и должен отправить туда вторичные данные(firstName, lastName, city, address). Понятно что можно как-то с фронта это агрегировать, но даже так, бекенд должен дать знать фронту что не заполненый профиль и нужно это доделать и не пускать дальше пользоваться апихой. Как можно архитектурно это решить?
Микросервисы ?
источник

OB

O Bogdan in NodeUA - JavaScript and Node.js in Ukraine
Ilya Human
Микросервисы ?
Можешь пожалуйста развернуть своё предложение? Мне кажется, крайне мало функционала для распила на микросервисы?)) Или это рофл
источник

IH

Ilya Human in NodeUA - JavaScript and Node.js in Ukraine
O Bogdan
Можешь пожалуйста развернуть своё предложение? Мне кажется, крайне мало функционала для распила на микросервисы?)) Или это рофл
Я не очень в этом, просто как возможное решение. Второй роут будет через event ждать первый, и когда первый обработает твоего юзера, то он скинет его на второй, тот что-то сделает и дальше передаст
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
O Bogdan
Смотри, другой пример. Вот представь, есть регистрация, я отправляю запрос на определенный роут(например, api/v1/user/create/) и отправляю первичные данные(email, password, username, phoneNumber) и чтобы продолжить работать в системе нужно сразу заполнить профиль, который будет на другом роуте(например, api/v1/user/fillProfile) и должен отправить туда вторичные данные(firstName, lastName, city, address). Понятно что можно как-то с фронта это агрегировать, но даже так, бекенд должен дать знать фронту что не заполненый профиль и нужно это доделать и не пускать дальше пользоваться апихой. Как можно архитектурно это решить?
Guard на роуты?
источник