Pull to refresh
6
0
slayerhabr @slayerhabr

Пользователь

Send message
...
  let exported = js.runInNewContext(sandbox, { timeout: 1000});
...

parse: 1ms
{ a: 1, age: [Function] }
call age(): 2753ms

Вы не прошибаемый. Мне жаль Ваших работодателей и Ваших студентов.
Я бы Вам не доверил проектировать и HelloWorld.
ВОТ:

"use strict"

const vm = require('vm');

var jstp = {}
jstp.parse = (s) => {
  let sandbox = vm.createContext({});
  let js = new vm.Script('(' + s + ')', { timeout: 1000} );
  let exported = js.runInNewContext(sandbox);
  for (let key in exported) {
    sandbox[key] = exported[key];
  }
  return exported;
};


let code = "{ a: 1, age: () => { for(var i=0; i<9999999; i++){new String('jstp is sh*t')}; return a; }}"

console.time("parse")
var o = jstp.parse(code)
console.timeEnd("parse")

console.dir(o)

console.time("call age()")
o.age()
console.timeEnd("call age()")

/tmp $ node jstp.js 
parse: 2ms
{ a: 1, age: [Function] }
call age(): 2782ms



Если Вы до сих пор не уловили в чем прикол — у Вас ни малейшего понимания JS
Не, Вы серьёзно???????????

/tmp $ cat jstp.js 
"use strict"

const vm = require('vm');

var jstp = {}
jstp.parse = (s) => {
  let sandbox = vm.createContext({});
  let js = vm.createScript('(' + s + ')');
  let exported = js.runInNewContext(sandbox);
  for (let key in exported) {
    sandbox[key] = exported[key];
  }
  return exported;
};


let code = "{ a: 1, age: () => { for(var i=0; i<9999999; i++){new String('jstp is sh*t')}; return a; }}"

console.time("parse")
var o = jstp.parse(code)
console.timeEnd("parse")

console.dir(o)

console.time("call age()")
o.age()
console.timeEnd("call age()")


node jstp.js
parse: 1ms
{ a: 1, age: [Function] }
call age(): 2703ms


Картинка из Вашего профиля как бы намекает

image
Вы серьезно??

ДА Вы еще и JS не знаете!!!!111
в данном случае timeout Вам не поможет — зависнет функция в основном потоке, а не в
vm.Script


Я был не прав, у Вас не большие проблемы в образовании, а очень большие.
Очень умно:
{
...
  age: () => {
    let difference = new Date() - birth.date;
    while(true){new String("jstp is sh*t")};
    return Math.floor(difference / 31536000000);
  },
...
Исходя из Вашей статьи очевидно, что Вы не знаете и не понимаете принципы HTTP.

Императивные инструкции в протоколе, жестко завязанные на реализацию какого либо языка ??
Почерк архитектора! че…
> Потому, что в HTTP нет нумерации запросов, просто обычной, примитивной, самой простой нумерации нет и открытое соединение ожидает.

А Вы точно архитектор? Преподаватель?
У Вас определенно большие проблемы в образовании.
Через год:
— А что насчет React?
— Фу
— Фу??
— ФУУ!!!
Я так понимаю Вы из Сколково?
Яндекс не навязывает агрессивно свои продукты? Таки не делайте мне смешно.
Тот момент, когда комментарий достоен поста.
И да, ждем отдельную, подробную статью
В ближайшие пару-тройку лет сможем расширятся вертиально. Память и диск сейчас достаточно дешевые. Потом будем думать.
influxdb не подходит по тем же причинам (кастомные индексы насколько я знаю должны появится в 0.9).
pg справился хорошо — одна большая таблица и несколько индексов.
Да, но rrd/carbon не подходил — выборки не только по time индексу, в К держал двойную-тройную копию данных под разные запросы. influxdb на тот момент был еще слишком молод.
Дело в том, что задача — накопление данных скажем по датчикам, чтото типа timeseries (что как раз хорошо ложится в идею К). Можно решить реляционными БД? Конечно, но хотелось использовать чтото заточенное под накопление данных. После сравнительных тестов мускль, К (4 ноды в кластере) и простой постгрес. Победил постгрес по всем показателям.
Подтверждаю, со многим столкнулся. И в моем случае postgresql показал лучшие результаты по скорости выборки. И вместо mysql+C* просто перешел на postgres.

Information

Rating
Does not participate
Location
Артек, Украина, Украина
Date of birth
Registered
Activity