Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #2101 (permalink)  
Старый 13.05.2017, 00:41
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

так напиши
exec('node myscript.js > /dev/null 2>&1');

таким образом запустишь скрипт в отдельном потоке
https://habrahabr.ru/post/138591/
возможные проблемы
использовать nohup (nohup node myscript.js)
использовать полный путь к бинарнику node

Последний раз редактировалось Vlasenko Fedor, 13.05.2017 в 00:58.
Ответить с цитированием
  #2102 (permalink)  
Старый 13.05.2017, 13:23
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Poznakomlus, ну если так подходить к делу то лучше использовать fork. Но мне я думал о чем то типо kue только без редис
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #2103 (permalink)  
Старый 17.05.2017, 23:17
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

async / await
как же мы раньше без этой прелести жили

const fs = require('fs')
const path = require('path')


let rootDir = path.join(__dirname, '..')


// [url]https://github.com/nervgh/koa-architect[/url]
exports.get = {
  'index': async function (ctx) {
    ctx.state.root = await readRoutesRecursive(rootDir, new Node('', 'admin'))
    ctx.render(__dirname, 'views/index')
  }
}


// TODO: Should we move this code to a standalone package?
class Node {
  /**
   * @param {String} prefix
   * @param {String} name
   */
  constructor(prefix, name) {
    this.name = name
    this.path = `${prefix}/${name}`
    this.children = []
  }
  /**
   * @return {Object}
   */
  toJSON() {
    return Object.assign({}, this)
  }
}
/**
 * A few promisified fs methods
 * @type {Object}
 */
const fsp = {
  lstat: promisify(fs.lstat),
  readdir: promisify(fs.readdir)
}
/**
 * @param {String} dir
 * @param {Node} node
 * @return {Promise.<Node>}
 */
async function readRoutesRecursive(dir, node) {
  for(let name of await fsp.readdir(dir)) {
    if (await isDirectory(path.join(dir, name))) {
      let tryMiddleware = path.join(dir, name, 'middleware')
      if (await isDirectory(tryMiddleware)) {
        node.children.push(await readRoutesRecursive(tryMiddleware, new Node(node.path, name)))
      } else {
        node.children.push(new Node(node.path, name))
      }
    }
  }
  return node
}
/**
 * @param {String} pathString
 * @return {Promise.<Boolean>}
 */
async function isDirectory(pathString) {
  try {
    let stat = await fsp.lstat(pathString)
    return stat.isDirectory()
  } catch (err) {
    return false
  }
}
/**
 * @param {Function} fn
 * @param {*} ctx
 * @return {Function}
 */
function promisify(fn, ctx) {
  return (...args) => {
    return new Promise((resolve, reject) => {
      args.push((err, data) => err ? reject(err) : resolve(data))
      fn.apply(ctx, args)
    })
  }
}
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #2104 (permalink)  
Старый 17.05.2017, 23:37
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

nerv_, мне тоже нравится async/await с koa получается не плохо и + мои декораторы)
@Controller("/test")
export default class {

    @RequestMapping({value: "add", method: RequestMethod.POST})
    async add(ctx) {
        await service.doAction(ctx.request.body.files);
        ctx.redirect("/plugin/list");
    }

    @RequestMapping("/")// by default method GET
    async uploadPageView({render}, params) {
        await render("upload.html");
    }

    @RequestMapping("list")
    async list(ctx) {
        return service.getList();
    }
}
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.

Последний раз редактировалось cyber, 19.05.2017 в 09:33.
Ответить с цитированием
  #2105 (permalink)  
Старый 25.05.2017, 21:10
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Не понимаю зачем некоторые люди пишут такую дичь и даже ее не коментируют (это java)
private void _write(byte a, byte b, byte c) throws IOException {
                out[0] = ENCODING_TABLE[(a>>2)&0x3F];
                out[1] = ENCODING_TABLE[((a<<4)&0x3F|(b>>4)&0x0F)];
                out[2] = ENCODING_TABLE[((b<<2)&0x3F|(c>>6)&0x03)];
                out[3] = ENCODING_TABLE[c&0x3F];
                super.out.write(out,0,4);
            }
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #2106 (permalink)  
Старый 04.06.2017, 20:40
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Инетерсует либа для очереди, что то похожее на https://github.com/Automattic/kue только без redis
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #2107 (permalink)  
Старый 21.06.2017, 12:51
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Кто-нибудь знает, как выстроить это всплывающее окно обратно в левую панель, рядом с "Favorites"?
Сейчас для достижения данного эффета приходится перезапускать IDE. Хотелось бы без перезапуска.
Изображения:
Тип файла: jpg Screenshot from 2017-06-21 12-44-58.jpg (5.0 Кб, 14 просмотров)
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #2108 (permalink)  
Старый 06.07.2017, 12:28
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Кто пишет на react, вы делали что то такое :
есть например root приложения redux,
ReactDOM.render(<App locale="en-US" userID={1} />, container);

и какой то внешний компонент который не зависит от основного приложения
ReactDOM.render(<OutsideComponent locale="en-US" userID={1} />, container);

?
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #2109 (permalink)  
Старый 09.07.2017, 22:37
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Обнаружил интересную такую багофичу в V8 касательно геттеров.

Изначально я пытался сравнить производительность вызова геттера с вызовом обычного метода. Тестировал в node.js v8.1.3, Ubuntu 16.04 LTS, Intel Core i3-5005U вот таким кодом:
let object1 = {
  hello() {
    return Math.random();
  }
}

let object2 = {
  get hello() {
    return Math.random();
  }
}

let heap1 = [];
let heap2 = [];

console.time("object1");
for (let i = 0; i < 1000000; i++) {
  heap1.push(object1.hello());
}
console.timeEnd("object1");

console.time("object2");
for (let i = 0; i < 1000000; i++) {
  heap2.push(object2.hello);
}
console.timeEnd("object2");


Результат получился довольно обидный - вызов геттера оказался почти в три раза медленней вызова метода (~275ms против ~95ms). Полез в гугл разбираться, почему так (по логике, особой разницы быть не должно, ведь правда?), оказалось вот что: при объявлении геттера в литерале объекта отключаются какие-то оптимизации из-за каких-то проблем с памятью (https://codereview.chromium.org/714883003, в подробностях не секу), и чтобы этого избежать, нужно устанавливать геттер через Object.defineProperty или, внезапно, литералом, но в прототип:

let object3 = {};
Object.defineProperty(object3, "hello", {
  get() {
    return Math.random();
  }
})

let object4 = {
  __proto__: {
      get hello() {
        return Math.random();
      }
  }
}

let heap3 = [];
let heap4 = [];

console.time("object3");
for (let i = 0; i < 1000000; i++) {
  heap3.push(object3.hello);
}
console.timeEnd("object3");

console.time("object4");
for (let i = 0; i < 1000000; i++) {
  heap4.push(object4.hello);
}
console.timeEnd("object4");


Тогда всё классно: и тот, и другой вариант одинаково исполняются за приемлимые ~93ms, что даже немного быстрее прямого вызова (там при повторных запусках наблюдается такой же разброс значений, но на три-четыре миллисекунды выше).

В фф результат одинаково хреновый везде) у меня ~160ms. Всё в порядке

В общем вот так вот. Может, кому-нибудь пригодится Судя по тикету на chromium.org штука эта довольно древняя и исправлять её не торопятся, так что в высоконагруженных проектах вполне может быть актуально.

Последний раз редактировалось Erolast, 09.07.2017 в 22:39.
Ответить с цитированием
  #2110 (permalink)  
Старый 15.07.2017, 19:29
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сегодня я понял как случайно можно удалить данные с сервера...
Сегодня вместо
rm *xsd

я написал
rm * xsd

Слава богам что без -r не удаляет подпапки
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смишных картинок тред megaupload Оффтопик 3448 03.07.2023 09:47
React'а тред melky Оффтопик 246 13.11.2016 08:07
Webpack'а тред nerv_ Сборка проекта, утилиты 58 07.05.2016 13:46
Смешных историй тред monolithed Оффтопик 11 04.03.2015 04:20
Смишных видео с намеком тред godofjavascript Оффтопик 4 30.12.2012 23:50