Задать вопрос
Ответы пользователя по тегу Node.js
  • Есть ли в node.js многопоточность?

    dummyman
    @dummyman
    диссидент-схизматик
    stream - это поток данных,
    tread - это поток управляющих конструкций (операторов).
    Читай почти одно и тоже. Разница межу ними:
    stream - информация, tread - подрограмма (алгоритм).
    К сожалению, v8 может работать только в один поток.
    Если необходимо увеличить производительность на многопроцессорных станциях, можно запускать алгоритм в несколько процессов, при этом каждый процесс будет жрать свою отдельную память и отсутствует какая-либо возможность задать/использовать общие блоки памяти. При этом, все фичи доступны в сявых апи ноды - вы можете спрограммировать критичный к системе код отдельно на сях, вкомпилировать модуль в ноду и использовать его из яваскрипта.
    Ответ написан
  • Как сделать выборку?

    dummyman
    @dummyman
    диссидент-схизматик
    Если речь идет о сферических координатах (не на плоскости), одновременно самым простым и лучшим по производительности решением на сегодняшний момент - использование postgis. А там уже ищите как настраивать ваш фреймворк под хранение данных в существующих моделях и таблицах postgres.
    Ответ написан
    Комментировать
  • Как правильно настроить пути к файлам в nodejs backend?

    dummyman
    @dummyman
    диссидент-схизматик
    Сразу видно, в своей разработке вы не пользуетесь тестами.
    Прописывать конфиги в исходниках неправильно. Изучайте TDD.
    Environment из системы читается автоматически в объект process.env.
    Для всего остального есть некие машины состояния.
    Как они работают хорошо на пальцах разжеванно в видосике.
    Ответ написан
    Комментировать
  • Сколько Nodejs сервер должен есть памяти сервера?

    dummyman
    @dummyman
    диссидент-схизматик
    У меня на сервере стоит MySQL база данных, на ней висят 2 сайта с маленькой посещалкой (500-700 человек в сутки), так вот эта база съедает 500-600 мб памяти сервера и как мне объяснили, это слишком много и мне необходимо базу оптимизировать.

    Небось сайты Wordpress. Отключайте плагины, господа. И да прибудит вам производительность БД.
    Но вот я поднял Nodejs сервер с самым стандартным api c CRUD на борту. Посмотрел сколько съедается памяти и обомлел, больше 1000 мб занимает Nodejs сервер, которые в данный момент даже запросы не обрабатывает, он просто запущен для личного использования.

    Ищите утечки. Когда сервер запускается, сколько он весит? Каждый запрос увеличивает аппетиты? - Вы что-то сделали не правильно!
    Ответ написан
    4 комментария
  • Почему список файлов в директории и поддиректориях выводится не так как ожидается?

    dummyman
    @dummyman
    диссидент-схизматик
    Ответ логичен. Так как не задаешь порядок в котором тебе нужны папки - получай беспорядок.
    Хотя на самом деле, содержимое будет отсортировано в порядке их создания на локальном жестком диске.
    let files = fs.readdirSync(base).sort();   // Получаешь отсортированный список по имени

    let files = fs.readdirSync(base).reverse();   // Получаешь отсортированный 
                                                   // список по имени в обратном порядке
    Ответ написан
  • Как проверить существование файла?

    dummyman
    @dummyman
    диссидент-схизматик
    До Node v0.10 были рабочими fs.exists() и path.exists()

    var path = require('path'); 
    
    path.exists('foo.txt', function(exists) { 
      if (exists) { 
        // do something 
      } 
    }); 
    
    
    if (path.existsSync('foo.txt')) { 
      // do something 
    }


    После, Node >= v0.12

    fs.stat('foo.txt', function(err, stat) {
        if(err == null) {
            console.log('File exists');
        } else if(err.code == 'ENOENT') {
            // file does not exist
            fs.writeFile('log.txt', 'Some log\n');
        } else {
            console.log('Some other error: ', err.code);
        }
    });

    stackoverflow
    Ответ написан
    9 комментариев
  • Как автоматически подключать стили скрипты шрифты из node_modules?

    dummyman
    @dummyman
    диссидент-схизматик
    Может быть, я устарел и webpack стал универсальным средством, но поначалу его использавали для desktop-ных задач, например, совместно с electron, который многим не подходил или был просто неудобен из-за большого количества мелких файлов в node_modules. А уже после, вроде даже совсем недавно, весь bower ставли перетаскивать на npm.
    Ответ написан
    Комментировать
  • Angular 2 как переопределить сервер с nodejs на apache(openServer) и прокомментируйте подвопрос?

    dummyman
    @dummyman
    диссидент-схизматик
    По сути вам нужно внедрить прокси внутрь вашего node-сервера.
    Отдельно это делается как-то так:
    var http = require('http');
    
    http.createServer(onRequest).listen(3000);
    
    function onRequest(client_req, client_res) {
      console.log('serve: ' + client_req.url);
    
      var options = {
        hostname: 'www.google.com',
        port: 80,
        path: client_req.url,
        method: 'GET'
      };
    
      var proxy = http.request(options, function (res) {
        res.pipe(client_res, {
          end: true
        });
      });
    
      client_req.pipe(proxy, {
        end: true
      });
    }

    Код взят отсюда.
    По сути заходя http://127.0.0.1:3000/ получаешь работоспособный google.
    Правда, код не проверял. Но выглядит рабочим.
    Ответ написан
    Комментировать
  • Как выйти из обработчика сообщений в telegram bot?

    dummyman
    @dummyman
    диссидент-схизматик
    Необходимо обозначить регулярку как значение переменной чтобы использовать несколько раз. Каждое последующее использование метода onText() с тем же параметром регулярки отменяет прошлый обработчик.
    var rx=/(.+)/;
    var emptyFn=function(){};
    bot.sendMessage(this.userId, 'Where do you want to know the weather forecast?')
       .then(() => {
           this.onText(rx, msg => {
                 console.log(msg);
                 this.onText(rx, emptyFn);
           });
      });
    Ответ написан
    3 комментария
  • Как делать бота для посещения сайта 1 раз минуту?

    dummyman
    @dummyman
    диссидент-схизматик
    Тут может помочь каспер
    docs.casperjs.org/en/latest/quickstart.html#now-le...

    var links = [];
    var casper = require('casper').create();
    
    function getLinks() {
        var links = document.querySelectorAll('h3.r a');
        return Array.prototype.map.call(links, function(e) {
            return e.getAttribute('href');
        });
    }
    
    casper.start('http://google.fr/', function() {
       // Wait for the page to be loaded
       this.waitForSelector('form[action="/search"]');
    });
    
    casper.then(function() {
       // search for 'casperjs' from google form
       this.fill('form[action="/search"]', { q: 'casperjs' }, true);
    });
    
    casper.then(function() {
        // aggregate results for the 'casperjs' search
        links = this.evaluate(getLinks);
        // now search for 'phantomjs' by filling the form again
        this.fill('form[action="/search"]', { q: 'phantomjs' }, true);
    });
    
    casper.then(function() {
        // aggregate results for the 'phantomjs' search
        links = links.concat(this.evaluate(getLinks));
    });
    
    casper.run(function() {
        // echo results in some pretty fashion
        this.echo(links.length + ' links found:');
        this.echo(' - ' + links.join('\n - ')).exit();
    });


    Запускаем
    $ casperjs googlelinks.js

    Получаем
    20 links found:
     - https://github.com/casperjs/casperjs
     - https://github.com/casperjs/casperjs/issues/2
     - https://github.com/casperjs/casperjs/tree/master/samples
     - https://github.com/casperjs/casperjs/commits/master/
     - http://www.facebook.com/people/Casper-Js/100000337260665
     - http://www.facebook.com/public/Casper-Js
     - http://hashtags.org/tag/CasperJS/
     - http://www.zerotohundred.com/newforums/members/casper-js.html
     - http://www.yellowpages.com/casper-wy/j-s-enterprises
     - http://local.trib.com/casper+wy/j+s+chinese+restaurant.zq.html
     - http://www.phantomjs.org/
     - http://code.google.com/p/phantomjs/
     - http://code.google.com/p/phantomjs/wiki/QuickStart
     - http://svay.com/blog/index/post/2011/08/31/Paris-JS-10-%3A-Introduction-%C3%A0-PhantomJS
     - https://github.com/ariya/phantomjs
     - http://dailyjs.com/2011/01/28/phantoms/
     - http://css.dzone.com/articles/phantom-js-alternative
     - http://pilvee.com/blog/tag/phantom-js/
     - http://ariya.blogspot.com/2011/01/phantomjs-minimalistic-headless-webkit.html
     - http://www.readwriteweb.com/hack/2011/03/phantomjs-the-power-of-webkit.php
    Ответ написан
    Комментировать
  • Как правильно передать socketIo в express?

    dummyman
    @dummyman
    диссидент-схизматик
    есть доступный повсеместно app.locals и res.locals, который формируется по каждой паре запрос-ответ
    Ответ написан
  • Почему после extends в jade основной контент вставляется после закрытия тегов body/html?

    dummyman
    @dummyman
    диссидент-схизматик
    потому что block head в header.jade стоит на уровне за html. добавьте пару табуляций
    Ответ написан
    4 комментария
  • Почему выдаёт "Could not resolve host: deb.nodesource.com"?

    dummyman
    @dummyman
    диссидент-схизматик
    Да там странный домен какой-то. А почему, например, не использовать NVM?
    Ответ написан
    2 комментария
  • Как руссифицировать админку cms keystone js?

    dummyman
    @dummyman
    диссидент-схизматик
    На сколько я помню, там используется или есть возможность использовать i18next
    Ответ написан
    Комментировать
  • Что за ограничение на объём передаваемых данных в Electron через ipcRenderer?

    dummyman
    @dummyman
    диссидент-схизматик
    Не знаю, никаких ограничений быть не должно.
    Попробуйте запустить без отладчика.
    Если не помогает, установите export NODE_ENV=production.
    Может быть, неполностью, но морозить должно раз в 5-10 поменьше.
    Ответ написан
  • Как в node правильно хранить промежуточные данные?

    dummyman
    @dummyman
    диссидент-схизматик
    под данные о текущих боях (расположение кораблей, ходы) сделал просто глобальный объект с массивами

    Я бы так не делал. Во первых, по хорошему, на каждый бой должен запускаться отдельный процесс. Чтобы процесс боя падая не убивал с собой весь стек сервисов. Хранить данные можно в памяти, можно файлом на разделе tmpfs.
    Не забывайте, важно не допускать race conditions.
    Если у вас используется express/connect, сведите к минимуму обращения middleware к глобальным объектам, и ни в коем случае не сохраняйте ничего в глобальных из middleware. Есть объекты для общих данных, например, app.locals, res.locals; есть много реализаций сессий.

    Позже заметил
    matrix[i] = Array('','','','','','','','','','');
    наверное, правильнее так
    matrix[i] = ['','','','','','','','','',''];

    Да и еще один тонкий момент. Здесь по коду у вас этого нет, но про это вам никто не скажет. Но вы обязательно посчитаете должным так делать. Во избежание утечек не изменяйте структуру объектов после их создания. Вся структура, прототип, все параметры объектов должны определяться до создания и в конструкторе.
    Ответ написан
    Комментировать
  • Почему у xls документов такой mimetype?

    dummyman
    @dummyman
    диссидент-схизматик
    xlsx - сжатый xml, по dtd которого можно его конкретно идентифицировать
    а xls не имеет markup-структуры
    Ответ написан
    Комментировать
  • Как вернуть из базы данных юзеров, где заполнено определенное поле в mongoose?

    dummyman
    @dummyman
    диссидент-схизматик
    mongoosejs.com/docs/api.html#query_Query-exists

    Не оно?

    // { name: { $exists: true }}
    Thing.where('name').exists()
    Thing.where('name').exists(true)
    Thing.find().exists('name')
    
    // { name: { $exists: false }}
    Thing.where('name').exists(false);
    Thing.find().exists('name', false);
    Ответ написан
    Комментировать
  • Node.js(как вариант для хранения временных данных)?

    dummyman
    @dummyman
    диссидент-схизматик
    Есть вариант быстрее БД - это файлы записанные в раздел с tmpfs.
    При загрузке сервера создаешь временный диск на N гигабайт.
    Сохраняешь туда все что нужно. И не будет страшны падения ноды и серва БД.
    Можно даже со всей статикой сервиса, если речь идет о web, хуже не будет.
    Но важно следить за переполнением памяти и стабильностью ОС.
    Лично у меня куча серверов в обслуживании с приложениями node, где uptime больше 365 дней. Полет нормальный.
    Ответ написан
    Комментировать
  • Крестики нолики 5x5 с непобедимым искусственным интеллектом?

    dummyman
    @dummyman
    диссидент-схизматик
    https://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B5%D...
    https://ru.wikipedia.org/wiki/%D0%93%D0%BE%D0%BC%D...

    Просто выберите для себя версию правил, а игруху с исходными кодами найдете на любую платформу

    Есть еще турнир AI по гомоку
    Ответ написан
    Комментировать