Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2020 June 01

AZ

Alexander Zakharov in NodeUA - JavaScript and Node.js in Ukraine
Нет никакого смысла держать в памяти приложения столько данных. И речь не только про Ноду. Для этого есть БД, в которых Бинарный поиск с сортировкой уже встроены. Для каждой задачи есть свой инструмент.
источник

AZ

Alexander Zakharov in NodeUA - JavaScript and Node.js in Ukraine
Приложение наоборот должно стремиться как можно меньше памяти использовать. Для этого есть Stream & Generator / Async Generator
источник

В

Вадим in NodeUA - JavaScript and Node.js in Ukraine
Alexander Zakharov
Нет никакого смысла держать в памяти приложения столько данных. И речь не только про Ноду. Для этого есть БД, в которых Бинарный поиск с сортировкой уже встроены. Для каждой задачи есть свой инструмент.
Да, согласен. У меня это был учебный эксперимент всего лишь)
источник
2020 June 02

D

Danil in NodeUA - JavaScript and Node.js in Ukraine
Здравствуйте! Кто знает, как проверять состояние подключения к базе при использовании модуля mysql2? Сразу после подключения, например. Гуглил гуглил, не нашел. В офф. документации тоже найти не могу ничего.
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Danil
Здравствуйте! Кто знает, как проверять состояние подключения к базе при использовании модуля mysql2? Сразу после подключения, например. Гуглил гуглил, не нашел. В офф. документации тоже найти не могу ничего.
должно быть событие
источник

D

Danil in NodeUA - JavaScript and Node.js in Ukraine
Timur Shemsedinov
должно быть событие
А оно отработает в случае если приложение только запускается, и я подключаюсь к базе? Только что нашел ответ на данный вопрос от разработчика этой библиотеки, где он советует делать тестовый запрос к базе или использовать метод ping()
источник

SK

Sergey Kochetkov in NodeUA - JavaScript and Node.js in Ukraine
Доброго дня. А не подскажете ли проверенную систему миграций БД, может сталкивались? В идеале без привязки к фреймворку. P.S> Бд, конечно, PostgreSQL ))
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
С миграциями все просто. Можно просто писать sql файлы и их выполнять попутно заипсывая в таблицу с выполненными.
Либо можно слегка усложнить задачу и написать штуку, которая будет поочередно запускать файлы из нужной директории.
В самих файлах - 2 функции up и down, в которые передается коннекшн (чтобы не поднимать его по 100 раз).

Для себя писал вот такую штуку, но для монги. https://github.com/SkeLLLa/yammy/blob/master/src/index.ts
Но по сути написать такое же для постгреса будет даже проще.
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Общий алгоритм:
1. Создаем таблицу где будет храниться история миграций
2. Пишем обработчик, который идет в нужную директорию и сверяет с таблицей какие миграции надо сделать (или откатить)
3. Дергаем нужную функцию из файла.
4. Записываем результат в таблицу с историей
источник

AL

Andrey Listochkin in NodeUA - JavaScript and Node.js in Ukraine
Danil
Здравствуйте! Кто знает, как проверять состояние подключения к базе при использовании модуля mysql2? Сразу после подключения, например. Гуглил гуглил, не нашел. В офф. документации тоже найти не могу ничего.
TypeOrm имеет миграции из коробки
источник

AL

Andrey Listochkin in NodeUA - JavaScript and Node.js in Ukraine
Я пользуюсь, очень доволен. Принцип как Саша выше написал. Не обязательно использовать TypeORM, чтобы использовать миграции, но если использовать, то он сможет по изменениям в структуре entities генерить их
источник

БД

Богдан Деревяга... in NodeUA - JavaScript and Node.js in Ukraine
Вадим
В процессе тестирования алгоритма бинарного поиска мне стало любопытно как будет работать алгоритм на массиве чисел размером 4 миллиарда. Ожидаемо, при попытке создать такой массив, nodejs говорит нам, что места в куче больше нет:

<--- Last few GCs --->

[133294:0x5da3760]     1203 ms: Scavenge 1148.2 (1181.1) -> 1148.2 (1181.1) MB, 42.9 / 0.0 ms  (average mu = 1.000, current mu = 1.000) allocation failure
[133294:0x5da3760]     2175 ms: Mark-sweep 1722.0 (1755.0) -> 1709.7 (1743.0) MB, 479.6 / 0.0 ms  (+ 37.7 ms in 11 steps since start of marking, biggest step 4.7 ms, walltime since start of marking 2099 ms) (average mu = 1.000, current mu = 1.000) allocat

<--- JS stacktrace --->

FATAL ERROR: invalid array length Allocation failed - JavaScript heap out of memory
1: 0xa295e0 node::Abort() [node]
2: 0x9782df node::FatalError(char const*, char const*) [node]
3: 0xb99c2e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [node]
4: 0xb99fa7 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [node]
5: 0xd3a3b5  [node]
6: 0xd1fe8d  [node]
7: 0xe7fc9e  [node]
8: 0xe837fa  [node]
9: 0x10243a3 v8::internal::Runtime_GrowArrayElements(int, unsigned long*, v8::internal::Isolate*) [node]
10: 0x13a5a99  [node]
[4]    133294 abort (core dumped)  node --heap-prof binarySearch.js


Возникает два вопроса:
1) В Javascript тип Number занимает 64 бита (альтернатив поменьше я не нашел). Соответственно, массив с 4 миллиардами таких элементов будет занимать 4 000 000 000 * 64 = 256000000000 бит или 32 гигабайта. Верно ли мое рассуждение?
2) Можно ли как-то решить данную проблему? Или только увеличение размера памяти и кучи поможет?
Як на рахунок того щоб виконати це все на C++ https://nodejs.org/api/addons.html
источник

БД

Богдан Деревяга... in NodeUA - JavaScript and Node.js in Ukraine
Sergey Kochetkov
Доброго дня. А не подскажете ли проверенную систему миграций БД, может сталкивались? В идеале без привязки к фреймворку. P.S> Бд, конечно, PostgreSQL ))
источник

SK

Sergey Kochetkov in NodeUA - JavaScript and Node.js in Ukraine
Спасибо, ребят! Буду смотреть.
источник

RK

Roman Kotenko in NodeUA - JavaScript and Node.js in Ukraine
Eduard Bondarenko
не увидел, что речь про сортировку. тогда стримы не подойдут.
тогда нужно смотреть в сторону https://en.wikipedia.org/wiki/External_sorting
Почему стрим не для сортировки? Проверить чанк, фолс => дропнуть. Не?
источник

ОР

Олексій Румянцев... in NodeUA - JavaScript and Node.js in Ukraine
Roman Kotenko
Почему стрим не для сортировки? Проверить чанк, фолс => дропнуть. Не?
Дропнуть, это про фильтрацию
источник

RK

Roman Kotenko in NodeUA - JavaScript and Node.js in Ukraine
Олексій Румянцев
Дропнуть, это про фильтрацию
Та да
источник

DD

Dmitry Dugin in NodeUA - JavaScript and Node.js in Ukraine
Здравствуйте. Недавно смотрел учебное видео для новичков. Там автор создал простой сервер. Потом в роуте указал на рут, отдавать html. Потом говорит смотрите у меня в html еще указан путь к css, браузер запросил, а ответа нет. И он написал в роутере по пути к css отдавать файл css. В реальности для сервера на ноде ведь, наверное, так не делается?
источник

K

Kostya in NodeUA - JavaScript and Node.js in Ukraine
Dmitry Dugin
Здравствуйте. Недавно смотрел учебное видео для новичков. Там автор создал простой сервер. Потом в роуте указал на рут, отдавать html. Потом говорит смотрите у меня в html еще указан путь к css, браузер запросил, а ответа нет. И он написал в роутере по пути к css отдавать файл css. В реальности для сервера на ноде ведь, наверное, так не делается?
А что есть реальность?
источник

DB

Dima Boginsky in NodeUA - JavaScript and Node.js in Ukraine
Законом не запрещено, но да, статические файлы никто нодой не отдает
источник