• Как скачать jpg на сайте с защитой node js?

    wisgest
    @wisgest
    Не ИТ-специалист
    Ответ написан
    Комментировать
  • Node Cron слетают ли задачи при перезапуске/обновлении сервиса?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Слетают или нет - это вы можете проверить минут за 10-15 сами.

    Работать с cron напрямую вы можете через запуск внешнего процесса https://nodejs.org/api/child_process.html#child_pr...
    делайте там что хотите.

    Из нормальных шедулеров есть https://github.com/agenda/agenda, хранит все в монго - перезапуск не страшен. У них же в ридми в сравнении еще 3 штуки других вариантов
    Ответ написан
    Комментировать
  • Могу ли я запустить несколько React приложений?

    @Dasslier
    FrontEnd Developer
    А зачем извращаться с разными доменами? Делаешь одно приложение, но роутинг делаешь с динамическим импортом. Дальше отслеживаешь под кем зашел пользователь и направляешь его на ту страницу, которая ему доступна. Бандл будет загружаться только тот, который нужен пользователю, ничего лишнего не попадет.
    Подробнее тут Разделение кода
    Ответ написан
    Комментировать
  • Могу ли я запустить несколько React приложений?

    Если по итогу будет 4 разных js-бандла, по одному на каждое приложение, то просто сделать 4 стартовых html-страницы, каждая из которых будет подключать свой бандл. На уровне веб-сервера (nginx/apache) для разных урлов/доменов выдаем нужную страницу.

    Если делаете в связке React + Express, то каждое приложение Express'а можно навесить на разные порты, и веб-сервером проксировать разные домены/урлы на нужный экземпляр Express.
    Ответ написан
    1 комментарий
  • Полностью ли nodejs асинхронен?

    MvcBox
    @MvcBox
    Software Developer [C/C++/JS(for Node.js)/etc]
    Для начала неплохо было бы уточнить что значит для Вас "Полностью".

    Asynchronous TCP and UDP sockets
    Asynchronous DNS resolution
    Asynchronous file and file system operations


    Но не стоит забывать, что код выполняется всего в одном потоке.
    Ответ написан
    2 комментария
  • Как ограничить максимальное количество параллельных запросов?

    @Bapen1k
    Работает!!!!))
    Пришлось писать свой Promise.race, который возвращает индекс решенного промиса в массиве.

    В конструктор передается лимит одновременных запросов, который не будет превышать функция. Функция делает сразу N запросов, где N это лимит, как только разрешается один промис делается еще один запрос.

    const promiseRace = promises => (
      new Promise((fulfil, reject) => {
        promises.forEach((promise, index) => {
          promise.then(data => fulfil({ data, index }), reject);
        });
      })
    );
    
    class Fetcher {
      constructor(maxConnections = 20) {
        this.maxConnections = maxConnections;
      }
    
      async request(urls, options = {}) {
        const responsePromises = [];
    
        for (const url of urls) {
          if (responsePromises.length >= this.maxConnections) {
            const { data: response, index } = await promiseRace(responsePromises);
            responsePromises.splice(index, 1);
          }
          responsePromises.push(fetch(url, options));
        }
    
        return Promise.all(responsePromises);
      }
    }
    
    // test
    (async () => {
      try {
        const fetcher = new Fetcher(2); // лимит 2
        const urls = [];
    
        for (let i = 0; i < 200; i++) {
          urls.push(`/api/user/${i}`);
        }
    
        const responses = await fetcher.request(urls);
        console.log('end');
      } catch (e) {
        console.error(e);
      }
    })();
    Ответ написан
    Комментировать
  • Вебсокеты вместо обычных соединений?

    Stalker_RED
    @Stalker_RED
    Кеширование? Не, не слышал.

    Вы конечно на своем проекте можете использовать что угодно, хоть дымовые сигналы одеялом отправлять. Никто вам не запретит.
    Может однажды вам скажут: а чойто у нас конверсия не очень, и гугл оценивает в 29 баллов из ста? И тогда вы переделаете.
    А может вам никто ничего не скажет, и оно так и проработает до закрытия.

    Ну и ajax чуточку проще разрабатывать, отлаживать, и поддерживать.
    Ответ написан
    Комментировать
  • Как обновлять nodejs приложение, чтобы не потерять данные?

    GreyCrew
    @GreyCrew
    Full-stack developer
    Сохраняют в отдельное место.
    К примеру, если не хотите отдельную базу поднимать, то можно локально помечать данные, которые не ушли вам в базу.
    Если локальные данные равны данным в базе, то локальные данные чистить, а если нет, то подгружать к себе, а потом чистить.
    Ответ написан
    Комментировать
  • Как подключить модуль?

    @acrades
    Попробуйте вместо import использовать require.

    А тут не export, а module.export
    export const divByDOT
    Ответ написан
    Комментировать
  • Как работает асинхронный код?

    hzzzzl
    @hzzzzl
    javascript подчиняется модели Event Loop, скрипт выполняется "в одном потоке", в каждом цикле (tick) этого цикла проверяются все отложенные таймеры, все обработчики событий итд

    5d3ea7f4c055b225593400.png

    // Создаётся объект promise
    // не происходит ничего, просто сохраняется объект
    let promise = new Promise((resolve, reject) => {
    // МЕТКА №1 (см.ниже)
    // выполняется setTimeout()
    // цифра 1 на картинке, код сейчас здесь
        setTimeout(() => {
            // цифра 2 на картинке, через секунду (или когда у процессора будет время)
            // интерпретатор JS будет разбирать timer queue и выполнит коллбек resolve()
            // тем самым "разрешит" промис
            resolve("result");
        }, 1000);
    
    });
    
    // promise.then навешивает обработчики на успешный результат или ошибку
    promise
    // GOTO метка №1
        .then(
            result => {
                // первая функция-обработчик - запустится при вызове resolve
                // в Timer Queue (возможно) будет ссылка на эту функцию, и она вызовется с аргументом result
                alert("Fulfilled: " + result); // result - аргумент resolve
            },
            error => {
                // вторая функция - запустится при вызове reject
                // в Timer Queue (возможно) будет ссылка на эту функцию, и она вызовется с аргументом result
                alert("Rejected: " + error); // error - аргумент reject
            }
        );
    Ответ написан
    Комментировать
  • Пара вопросов по neo4j?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    3) есть, ArangoDB круче, см. их сайт, но по Neo больше материалов и как бы стандарт для графовых баз
    2) блокчейн легко запихнуть, корешей подруги остлеживать, * * * (сорри, бизнес-кейс) отслеживать
    1) https://www.arangodb.com/2018/02/nosql-performance...
    Ответ написан
    Комментировать
  • Пара вопросов по neo4j?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Neo4j
    Седой и строгий
    1. На задачах работы с графами заруливает реляционные, документоориентированные и key-value СУБД на порядки.
    2. Возможность хранения и обработки графов.
    3. Слишком общий вопрос. Хорошие и плохие практики описаны в документации.
    Ответ написан
    Комментировать
  • Как лучше организовать колекцию данных в mongose?

    hzzzzl
    @hzzzzl
    наверное что-то типа сделать каждый заказ массивом объектов
    order: [{
      product: ObjectId,
      quantity: Number
    }]

    ну и чтобы с фронта приходил ObjectId выбранного товара, а сами товары лежат в своей отдельной таблице

    потом можно долго мучаться с разными $lookup $aggregate итд итп, и в итоге собрать непростую и неочевидную query которая объединит несколько таблиц БД воедино, а заодно и проклясть всю эту монгу, но тут я уже пас :/

    https://docs.mongodb.com/manual/reference/operator...
    Ответ написан
    1 комментарий
  • Как организовать файловую структуру проекта со стеком MERN?

    theobroma
    @theobroma
    javascript developer (ReactJS)
    Создайте третий package.json в основании проекта. Подробнее тут.
    Вот пример содержания package.json
    "scripts": {
            "dev": "concurrently \"cd server && npm start\" \"cd client && npm start \"",
            "build": "cd client && npm run build",
            "install": "(cd server && npm install) && (cd client && npm install)",
            "start:prod": "cd server && npm run start:prod",
            "heroku-postbuild": "npm run build"
        },
        "dependencies": {
            "concurrently": "^3.5.1"
        }
    }
    Ответ написан
    Комментировать
  • PHP NODEJS откуда такая ощутимая разница в скорости работы?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    А вы сравнивали код на node.js с кодом на PHP в стиле request-response-death или Event Loop?
    Потому что в node.js-то у вас, скорее всего, код был написан по другой парадигме.
    Ответ написан
    Комментировать
  • PHP NODEJS откуда такая ощутимая разница в скорости работы?

    riky
    @riky
    Laravel
    в пхп на каждый запрос каждый раз происходит бутстрапинг, то есть каждый раз стартует новый процесс и инициализируется. а нода запускается один раз и запускает свой вебсервер.
    тестируете на локалке - может быть еще xdebug включен - он тоже будет тормозить.
    в третьих на ссд диске рез-ты у php могут быть лучше (если еще не используется).
    Ответ написан
    4 комментария
  • Как должна работать pagination у SPA приложения?(REST)?

    @kacheleff
    fullstack developer
    с фронта передавайте на бэк номер страницы, а на бэкенде отдавайте результаты относительно этого номера. в MySQL, насколько помню, для этого есть OFFSET
    Ответ написан
    Комментировать
  • Websocket почему работают быстрее чем http?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    No silver bullet in this world.

    Это абсолютно разные протоколы с разными целями назначения. Одно - синхронный протокол, другое событийный. Одно инициируется только клиентом, а другое двунаправленное. Используйте применимо к задаче решение, лучше подходящее.

    Ну, и отвечая на вопрос про скорость - в http протоколе при каждом запросе открывается новое соединение, а в вебсокет - один раз. В итоге убирается потеря на этой точке
    Ответ написан
    Комментировать