Ответы пользователя по тегу Node.js
  • Чат на Node.js. Какую БД использовать?

    @kazmiruk
    Собственно смущает только как она справится с объемом данных.

    И вот решил в целях самообразования сделать чат


    Что-то Вы темните )
    А по сабжу - в целях самообразования возьмите монгу. Узнаете что это такое и как это работает. Для поставленной задачи она вполне подходит (как и все остальные СУБД, в принципе)
    Ответ написан
  • Как объективно протестировать производительность node.js и PHP в запросах к mysql БД?

    @kazmiruk
    Как уже писали выше нода асинхронна, поэтому получилось и быстрее. Но это не значит, что она быстрее. Просто Вы не учли эту особенность при написании теста. Как работает тест в php:
    цикл - (отправить запрос - подождать результат) - вывести время работы; как работает Ваш тест на ноде - цикл - (отправить запрос) - вывести время отправки всех запросов - начать получать результаты. Т. е. function(error, result, fields){} не попадает в замер.
    Ответ написан
  • Как заставить приложение на heroku работало вечно, т.е. как не дать серверу уснуть?

    @kazmiruk
    Я так подозреваю пинговать надо приложение извне, чтобы создать видимость запросов к нему. Ну или заплатить таки
    Ответ написан
    1 комментарий
  • Как передать на клиент статические ресурсы?

    @kazmiruk
    Вы не говорите, что завершен ответ. Нужно вызвать response.end(); в конце, а у Вас response.end;
    Ответ написан
    1 комментарий
  • Почему не возможно прочесть данные из req.body?

    @kazmiruk
    Странно, что работало раньше и "вдруг" перестало работать. Вообще судя по коду вы используете expressjs. В документации есть такое expressjs.com/4x/api.html#req.body:
    "req.body
    Contains key-value pairs of data submitted in the request body. By default, it is undefined, and is populated when you use body-parsing middleware such as body-parser and multer."
    Т. е. body по умолчанию undefined и его надо заполнить чем-то вроде body-parser.
    Ответ написан
    2 комментария
  • Как передать на клиент массив строк?

    @kazmiruk
    Переделайте
    response.write(cities);
    на
    response.write(JSON.stringify(cities));
    так как response.write принимает только строки и буфер. Т. е. данные необходимо сначала сериализовать.
    Ну и Content-type в данном случае лучше поменять с application/x-javascript на application/json
    Ответ написан
    Комментировать
  • Как правильнее организовать хранение списка чего либо к примеру idшников?

    @kazmiruk
    В данном контексте самый правильный вариант. User с полем friends, у которого тип list. Только не обязательно на каждого юзера слать отдельный запрос. Можно управится 2мя запросами (выбрать текущего пользователя, а затем выбрать всех юзеров с идами в списке user.friends). Ну или даже одним через аггрегирование.
    Ответ написан
  • Почему не находит параметры запроса в данной ситуации req,res в NodeJs?

    @kazmiruk
    А что Вы хотите сделать этой строчкой res.json('response':req.body.response);?
    Ошибка вполне справедлива: req.body undefined по умолчанию и наполнить его можно body-parser'ом (expressjs.com/4x/api.html#req.body). Но даже после наполнения он не должен содержать response (если Вы его туда сами не запихаете), response должен содержаться в response переменной (в Вашем случае res), передающейся в обработчик. Плюс у вас в res.json передается невалидный json, нужно res.json({ключ: значение}). И последнее - Ваш код не понятно что делает. Вы пытаетесь в response вывести response. Это как минимум нелогичное действие )
    Ответ написан
    Комментировать
  • Как передать управление из routes в node js?

    @kazmiruk
    req.params содержит динамические параметры, которых у Вас судя по урл /users/login для данного запроса попросту нет. Если Вы хотите выводить там то, что после ? (/users/login?q=1), то для этого нужно использовать res.query
    Ответ написан
  • Node.js, socket.io, cluster. Как организовать архитектуру multiplayer-игры?

    @kazmiruk
    Вообще Вы сами ответили на свой вопрос: используем кластер, мастер и несколько воркеров (обычно по количеству ядер). Данные, которые необходимы всем храним или на мастере, или в носкл, как указали выше. Воркеры спрашивают разрешение на обновление данных и если текущая запись сейчас заблокирована кем-то, то ожидают. Если не заблокирована, то блокируют и обновляют, а затем освобождают. По крайней мере сам делал именно так.
    Ответ написан
    Комментировать
  • Бывает ли синхронный Node.JS (для начального обучения веб-разработке на сервере)?

    @kazmiruk
    Хоть Вы и просили не давать такой ответ, но для синхронного программирования не стоит использовать технологию, главный принцип которой асинхронность, так как Вы научите студентов плохому и их будет ждать много боли после окончания учебы и выхода в жестокий мир (до сих пор вспоминаю некоторых своих преподавателей тихим матерным словом). Да и не вижу проблем в асинхронном подходе для обучения. По сути "классический подход"
    также асинхронен, но достигается это набором тридов, которые выполняют несколько запросов одновременно.
    По сути вопроса: можно сделать код на ноде полностью синхронным используя синхронизирующую либу (waitsync, например).
    Ответ написан
    Комментировать
  • Может ли NodeJS использоваться как основа для крупного проекта?

    @kazmiruk
    @d00mko видимо не потрудился прочитать статью, прежде чем посоветовать ее Вам. В статье как раз пытаются избавиться от мифов вокруг ноды.
    По сути вопроса - нода вполне подходит для проекта любого размера и сложности (как и пхп, раби, питон, ява и т.п.) Никогда в жизни не сталкивался с ситуацией, что язык становился узким местом в веб приложении. Если Вы с этим столкнетесь, то значит Ваша архитектура уже идеальна, у вас миллионы пользователей и у Вас миллиарды денег, чтобы взять и переписать все с нуля где-нибудь на побережье океана попивая мохито, принесенное личным барменом.
    Ява - готовьтесь к тому, что Вам надо МНОГО оперативной памяти. Разработка будет вестись долго, но большинство глупых ошибок Вы избежите в силу особенностей языка.
    ПХП - готовьтесь к тому, что в Вашем коде будут появляться какашки, так как из всех пхп кодеров лишь доли процента могут написать хороший код. Это действительно очень трудно, когда язык сам манит писать все больше и больше какашек ) Лишь просветленные могут удержаться )
    Нода - Вас ждет мир непонятного асинхронного кода, но как только наступит просветление, то Вы будете писать намного более эффективные приложения, чем Ваши товарищи пхпщники ) Наилучшее применение - чаты, кометы и т.п. Но и в качестве веб-сервера чувствует себя замечательно.
    Питон - можно использовать и асинхронный подход и синхронный. Памяти жрет намного меньше, чем Java (личный опыт. разница была почти в 7 раз). По скорости работы практически не уступает яве. По скорости разработки разрывает ее в клочья
    Раби - ничего не могу сказать дельного, но синтаксис мне не нравится.
    Эрланг - если Вы действительно суровы и Вам нужна максимальная производительность - это Ваш выбор. Столько боли и страдания Вам не доставит ни один язык. Вы можете часами сидеть и тупить над одной строчкой кода, но каждый раз после написания такой строчки Вы будете впадать в экстаз ) Да и пока вы часами тупили над одной строчкой в эрланге на другом языке вам бы пришлось написать 200 строчек. Хардкор вариант, есть много тестов, уроков и примеров, но сам бы я не рискнул начинать проект на нем, так как моих знаний не достаточно, а найти разработчика - нереально.
    Вообще, не пишите серьезные проекты на том, что хотите изучить или то, что модно. Пишите на языке, который лучше всего знаете.
    Ответ написан
    7 комментариев
  • Структура и архитектура приложения

    @kazmiruk
    1. Лучше сокет, так как не надо будет впустую теребить сервер каждые 3 секунды. Но надо помнить про поддержку сокета браузерами
    2. Номер заявки. Применял похожу схему - относительно медленно работает передача из пхп через сокет, особенно если много данных. Достать из мускуля по PK очень дешевая операция.
    Ответ написан
    Комментировать