@nodejs_ru

Страница 1113 из 2748
Дмитрий
20.08.2017
15:02:46
10 000 * 1 000 000

Vladimir
20.08.2017
15:02:51
В первую очеред тарантул - это lua рантайм, что делает его непривлектальным для большой части населения

KlonD90
20.08.2017
15:02:57
да даже так

Дмитрий
20.08.2017
15:03:30
Я в курсе ну, поэтому это и нечто большее)

Google
KlonD90
20.08.2017
15:03:33
В первую очеред тарантул - это lua рантайм, что делает его непривлектальным для большой части населения
Да. Я все еще надеюсь что в 1.9 прикрутят v8 или как изучу rust таки до конца сам прикручу

Vladimir
20.08.2017
15:04:00
Я в курсе ну, поэтому это и нечто большее)
node.js это нечто большее чем tarantool, тогда

Дмитрий
20.08.2017
15:04:36
Ну если вы так хотите это сравнить то пжлст)

для меня это пустой диалог, прошу прощения если что-то не так сказал)

Vladimir
20.08.2017
15:05:07
Я не хочу, я говорю что это несвязанные вещи

Дмитрий
20.08.2017
15:05:26
Как скажете)

KlonD90
20.08.2017
15:05:30
ну почему пустой. прикрутите плиз v8 к tarantool

Fedir
20.08.2017
15:06:23
parrot норм)0)0)

Vladimir
20.08.2017
15:07:00
KlonD90
20.08.2017
15:07:26
поздняк слегка
да был опрос меньше года назад. типа что делать sql этот или перенести с lua на v8

Nikolay
20.08.2017
15:07:27
ну почему пустой. прикрутите плиз v8 к tarantool
Есть кстате js рантайм специально для встраивания написан на плюсах

KlonD90
20.08.2017
15:07:34
я не знаю зачем этот дурацкий sql (

Дмитрий
20.08.2017
15:07:34
Пустой по части споров кто, что, как и чем обозвал) V8 в тарантуле это видимо не цель разрабов, их устраивает lua и видимо на это есть причины

Google
KlonD90
20.08.2017
15:07:37
лучше бы к v8

Дмитрий
20.08.2017
15:07:54
Осипов вроде где то пояснил на одном из видосиков про тарантул почему они выбрали lua

KlonD90
20.08.2017
15:08:12
Осипов вроде где то пояснил на одном из видосиков про тарантул почему они выбрали lua
Ну тогда не было такого развития v8. Сейчас то понятно что это была одна из больших ошибок

Дмитрий
20.08.2017
15:12:53
Хз, сколько людей столько и мнений, и языков программирования тоже много.

Vlad
20.08.2017
15:13:00
Кто может помочь с такой штукой. Нужно из ноды запустить R-interpreter. Делаю это делаю так child = spawn('r', { stdio: [ 'pipe', 'pipe' ], shell: true }); После чего пытаюсь передать туда хоть что-нибудь, но увы. Передаю вот так child.stdin.write("console.log('Hello from R')\n"); child.stdin.end(); В output пусто.

Alexander
20.08.2017
16:01:53
Ребят, есть у кого-нибудь на freelance.ru бизнес-аккаунт? напишите в личку, пожалуйста, срочно нужно посмотреть заказчика одного проекта

Egoarka
20.08.2017
16:35:36
всем приветик, не понимаю в чем трабл, пишу тест на моке, поднимаю сервак, делаю запрос, на стороне сервера после некоторой логики возвращаю статус код 413, но на респонсе выкидывает исключение с ошибкой ECONNRESET в итоге 413 отследить не могу, чяднт

Max
20.08.2017
16:45:18
Камрады, вопрос такой созрел. Как наиболее эффективно хранить One-to-Many связи ооочень большого количества элементов. К примеру, 10000 групп по 1000000 объектов (строк, чисел, etc.). Варианты: 1). Тупо стандартное решение на SQL. Конечно БД пережуёт 10 млрд строк, но чёт мне подсказывает, что будут проблемс, в том числе и с маштабированием) 2). Array of * в PostgreSQL - список должен влезть в 1gb 3). Массивы в MongoDB - тут уже в 64 мб и как это будет работать при решардинге - непонятно 4). List в Cassandra (2^31 элементов) Задачи стандртные: 1). Получить список кусками 2). Добавить элемент в список (с проверкой на уникальность) 3). Удалить 4). Проверить существование в списке В качестве данных DWORD (16 бит) или строки < 30 символов. Хотелось бы услышать ваше мнение по поводу этих вариантов или рекомендации на какие-то другие БД.
Интересная задачка. Предположу что решение специально написанное под эту задачу окажется более эффективным чем решения предназначены для широкого круга задач вроде sql. И в качестве варианта я бы предположил бы рассмотреть ноду и хранение данных либо полностью в оперативке либо с использованием виртуальной памяти (своп) когда ос будет вытеснять на диск память которая не влезает в оперативку. А для сохранения данных записывать на диск только append-лог операций по данным. Но для начала нужно провести расчеты сколько места будут занимать эти данные. В ноде массив из ста групп где у каждой массив из миллиона 64 битных чисел у меня на маке занял 780 мегабайт. Соотвественно потребуется где-то 78 гигабайт оперативки если хранить все данные в памяти. Да это много но сейчас вполне возможно найти сервера и с большим количеством оперативки. При хранении данных ста групп в оперативке у меня 10k чтений из случайной группы случайного элемента заняло 1.5 миллисекунды. А в случае с виртуальной памятью эти 10k рандомных чтений занимают примерно 5 секунд что в 5 тысяч раз дольше. Но даже тысячу чтений за полсекунды тоже неплохой результат. Сомневаюсь что sql и большинство no-sql баз данных покажут такую скорость. Вот скрипт которым я проводил замеры var k = 100; var n = 1000000; var arr = new Array(k); for(var j = 0; j < k; j++){ arr[j] = new Array(n); for(var i = 0; i < n; i++){ arr[j][i] = Math.random(); } } setTimeout(bench,1000); function bench(){ var value = 0; var time = Date.now(); for(var i = 0; i < 10000; i++){ var index1 = Math.random()*k|0; var index2 = Math.random()*n|0; value+=arr[index1][index2]; } console.log(value, Date.now()-time); setTimeout(bench,1000) }

Egoarka
20.08.2017
17:14:59
не, нифига, но вот наткнулся на этот ишью, пишут, что трабла в ноде https://github.com/nodejs/node/issues/947#issue-58838888

KlonD90
20.08.2017
17:54:15
Бред

Не вижу никакого индекса да и редис тот же 1лям операций в секунду выдаст, это на уровне ноды будет тупняк. Тарантул тоже спокойно выдаст 200к транзакций(или миллион если писать на c операции)

Ҫѐҏӗѫӑ
20.08.2017
18:26:10
@vkurchatkin драма с esm — ?

нахрен лодаш из citgm надо, все верно

Vladimir
20.08.2017
18:26:44
Да этот тип конченный

Помнится давно былая какая то драма со слиянием с андерскором

И уже тогда с ним стало все понятно

Ҫѐҏӗѫӑ
20.08.2017
18:27:36
да, было дело

Google
Ҫѐҏӗѫӑ
20.08.2017
18:27:49
да и вообще его поведение в репке лодаша сомнительное

по отношению к контрибьюторам

Vladimir
20.08.2017
18:29:06
Ну это его дело, как бы

Я вообще не понимаю людей которые используют лодаш и подобное

Gleb
20.08.2017
18:47:21
Интересная задачка. Предположу что решение специально написанное под эту задачу окажется более эффективным чем решения предназначены для широкого круга задач вроде sql. И в качестве варианта я бы предположил бы рассмотреть ноду и хранение данных либо полностью в оперативке либо с использованием виртуальной памяти (своп) когда ос будет вытеснять на диск память которая не влезает в оперативку. А для сохранения данных записывать на диск только append-лог операций по данным. Но для начала нужно провести расчеты сколько места будут занимать эти данные. В ноде массив из ста групп где у каждой массив из миллиона 64 битных чисел у меня на маке занял 780 мегабайт. Соотвественно потребуется где-то 78 гигабайт оперативки если хранить все данные в памяти. Да это много но сейчас вполне возможно найти сервера и с большим количеством оперативки. При хранении данных ста групп в оперативке у меня 10k чтений из случайной группы случайного элемента заняло 1.5 миллисекунды. А в случае с виртуальной памятью эти 10k рандомных чтений занимают примерно 5 секунд что в 5 тысяч раз дольше. Но даже тысячу чтений за полсекунды тоже неплохой результат. Сомневаюсь что sql и большинство no-sql баз данных покажут такую скорость. Вот скрипт которым я проводил замеры var k = 100; var n = 1000000; var arr = new Array(k); for(var j = 0; j < k; j++){ arr[j] = new Array(n); for(var i = 0; i < n; i++){ arr[j][i] = Math.random(); } } setTimeout(bench,1000); function bench(){ var value = 0; var time = Date.now(); for(var i = 0; i < 10000; i++){ var index1 = Math.random()*k|0; var index2 = Math.random()*n|0; value+=arr[index1][index2]; } console.log(value, Date.now()-time); setTimeout(bench,1000) }
Да понятно что на NodeJS никто такое писать не будет, равно как и на любом другом языке с автоматизированной работой с памятью) К тому же у ограничение на Heap в 1.5Gb. Но мб на плюсах попробую накатать, не знаю даже...

Ҫѐҏӗѫӑ
20.08.2017
18:48:12
Я вообще не понимаю людей которые используют лодаш и подобное
ну это как раз понять можно. стдлиба скудная. и есть готовые утилити функции, уже типизированные

Vladimir
20.08.2017
18:48:52
настоящие разработчики сами пишут свои утилы

Gleb
20.08.2017
18:49:24
Ҫѐҏӗѫӑ
20.08.2017
18:50:16
аларм

KlonD90
20.08.2017
18:50:20
В каком плане?

Gleb
20.08.2017
18:50:21
Я вообще не понимаю людей которые используют лодаш и подобное
Его имело смысл использовать то введения ES5 методов типа map или reduce.

Ҫѐҏӗѫӑ
20.08.2017
18:50:23
айот и жс в одном предложении

Дмитрий
20.08.2017
18:51:05
Gleb
20.08.2017
18:52:29
Ну я имею ввиду решения с компилированием JS. Всё таки в БД динамическую типизацию не очень хорошо впихивать, как бы там V8 её не оптимизировал.

Дмитрий
20.08.2017
18:52:43
Там же просто по возможностям урезанные версии

Ҫѐҏӗѫӑ
20.08.2017
18:52:48
я вот только не понял bnoordhuis его идиотом назвал или нет?

или это такое тонкое

Vladimir
20.08.2017
18:53:24
я вот только не понял bnoordhuis его идиотом назвал или нет?
Не. Он намекает, что он либо идиот либо мудак, и вроде бы он не идиот

Ҫѐҏӗѫӑ
20.08.2017
18:54:13
ясненько

Google
Gleb
20.08.2017
18:54:39
Там же просто по возможностям урезанные версии
Ну в том отчасти и смысл) Вам же всё таки не нужен полный функционал какой-нибудь Node, верно?

Ҫѐҏӗѫӑ
20.08.2017
18:54:49


Дмитрий
20.08.2017
18:55:30
Ну я имею ввиду решения с компилированием JS. Всё таки в БД динамическую типизацию не очень хорошо впихивать, как бы там V8 её не оптимизировал.
Даже если обмазаться гидрой и оптимизировать всё-всё-всё, то это всё равно наверное из ряда фантастики

Антон
20.08.2017
18:55:52


Vladimir
20.08.2017
19:06:07


@chicoxyzzy понеслось

Ҫѐҏӗѫӑ
20.08.2017
19:06:58
это где?

Vladimir
20.08.2017
19:07:27
там же

Max
20.08.2017
19:59:02
Ну я имею ввиду решения с компилированием JS. Всё таки в БД динамическую типизацию не очень хорошо впихивать, как бы там V8 её не оптимизировал.
На самом деле после того как v8 оптимизирует функцию от динамической типизации не остается и следа - все объекты имеют строгий (скрытый внутри v8) тип, благодаря которому в скомпилированный ассемблер функция может загружать свойства прямо по смещению. В общем если не делать глупостей на js которые приводят к деоптимизациям или полиморфизму то быстродействие не сильно то и будет отличаться от кода написанного на плюсах, недаром есть статьи и доклады в которых сравнивают плюсы с жс и в некоторых случаях жс даже выигрывает. В итоге сравнивать с плюсами нужно больше по удобству разработки). И кстати есть еще другой момент - даже если в какие-то вещи мы выносим в с++ расширение к ноде то может даже оказаться что интероп(пересылка данных между с++ и js) окажется медленней чем работа с данными в самом джаваскрипте

Gleb
20.08.2017
20:04:15
На самом деле после того как v8 оптимизирует функцию от динамической типизации не остается и следа - все объекты имеют строгий (скрытый внутри v8) тип, благодаря которому в скомпилированный ассемблер функция может загружать свойства прямо по смещению. В общем если не делать глупостей на js которые приводят к деоптимизациям или полиморфизму то быстродействие не сильно то и будет отличаться от кода написанного на плюсах, недаром есть статьи и доклады в которых сравнивают плюсы с жс и в некоторых случаях жс даже выигрывает. В итоге сравнивать с плюсами нужно больше по удобству разработки). И кстати есть еще другой момент - даже если в какие-то вещи мы выносим в с++ расширение к ноде то может даже оказаться что интероп(пересылка данных между с++ и js) окажется медленней чем работа с данными в самом джаваскрипте
Да, он оптимизирует ваш hashmap в вектор, но он во первых хранит тип (в том числе для примитивов), а во вторых GC и heap в 1.4Gb

Max
20.08.2017
20:13:32
Да, он оптимизирует ваш hashmap в вектор, но он во первых хранит тип (в том числе для примитивов), а во вторых GC и heap в 1.4Gb
Если бы heap ограничивался бы 1.4 гигами то я бы не советовал бы ноду. Там просто дефолтные настройки такие, добавляем флаг --max_old_space_size и устанавливаем сколько угодно гигабайт. Насчет gs то во первых можно не создавать лишних объектов на каждый чих, а во вторых он достаточно быстр (по крайней мере где-то я читал что быстрее чем некоторые паттерны автоматического gs на плюсах вроде подсчета ссылок). Ясно что на плюсах есть все интрументы и можно все круто оптимизировать но стоят ли того затраты на удобства разработки (учитывая еще что нужно хорошо знать плюсы)

Sergey
20.08.2017
20:21:16
Проблема ещё в том что в js много неявного приведения типов, это сложно как то оптимизировать

Таймураз
20.08.2017
20:23:32
Если да, то хранить всех кусками на разных серверах, за нужным индексом обращаться в определенную базу

Max
20.08.2017
20:24:58
Да, он оптимизирует ваш hashmap в вектор, но он во первых хранит тип (в том числе для примитивов), а во вторых GC и heap в 1.4Gb
Насчет хранения типов для примитивом не совсем понятно. У v8 есть smi (типа int), флоаты и объекты и распознает он их там как-то по одному биту в значениии. Есть ситуации когда числа пакуются в объекты и тогда работа с ними медленная но это уже деоптимизация и таких ситуаций лучше избегать

Дмитрий
20.08.2017
22:13:25
А где почитать это?

Vladimir
20.08.2017
22:13:40
https://github.com/nodejs/CTC/issues/164

Дмитрий
20.08.2017
22:14:05
Благодарю)

Ilgiz
21.08.2017
04:51:17
если функция возвращяет обьект ошибки то try catch что не увидит его? функция моя вызывается через await functionname()

Google
Ilgiz
21.08.2017
04:51:53


он не выбрасывает ошибку

arts
21.08.2017
04:53:26
Не return, а throw.

Ilgiz
21.08.2017
04:54:50
Не return, а throw.
то есть всегда я должен вместо return использовать throw? так как везде надо обрабытывать ошибку

ZeroFQ
21.08.2017
04:57:30
то есть всегда я должен вместо return использовать throw? так как везде надо обрабытывать ошибку
Нет. Но в вашей функции ошибка не возникла, вы просто создали объект класса Error.

Ilgiz
21.08.2017
04:58:57
Нет. Но в вашей функции ошибка не возникла, вы просто создали объект класса Error.
да я понял, получается если я хочу обработать ошибку я должен не возвращять ошибку через return а через throw

ZeroFQ
21.08.2017
04:59:11
Да

Страница 1113 из 2748