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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    json - это удобный формат сериализации данных. Возможность сериализации/десериализации в json есть буквально во всех языках программирования что делает этот формат довольно универсальным.

    Если вы не будете его использовать - вам придется реализовывать что-то другое. Это могут быть другие форматы сериализации, например messagepack, или если хотите, запаковывайте данные сами так как хотите, в зависимости от задачи. Но в этом случае вам придется реализовывать сериализацию самостоятельно, а это время. А время это деньги. Потому это должно окупаться (например что бы увеличить пропускную способность использовать свой бинарный формат сериалиализации разработанный исключительно под задачу, хотя это оооочень редко нужно и я сомневаюсь что вам это понадобится ближайшие лет 5-10).
    Ответ написан
    Комментировать
  • Ка правильно установить последнюю версию node.js и npm на Debian?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    вот есть вроде бы официальная документация и все такое...

    https://nodejs.org/en/download/package-manager/#de...
    Ответ написан
  • Так что же выбрать для REST API -> ORACLE, (NODE vs PHP)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    вам дела делать или играться? Если играться - попишите на ноде, заодно и опыта наберетесь. А если дела делать - php, раз опыт есть.

    Под вашу задачу что угодно сойдет, а ангуляру плевать на чем реализована серверная часть, лишь бы вы правильно апишку сделали.
    Ответ написан
    9 комментариев
  • NodeJS + socket.io + mongoDB. Где утечка памяти?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    вызов GC вручную


    И как это могло бы помочь интересно.

    сокет сервер таким образом не справляется с нагрузкой?


    если там есть внутри буфер сообщений на отправку - то вполне может просто не успевать отправлять сообщеньки.
    Ответ написан
    3 комментария
  • Что умеет такого Node.js что не умеет ASP.NET Core?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Node.js - кросплатформенный. .NET - нет (пока во всяком случае).

    Mono для серьезных проектов не особо прикольно использовать.

    Что более перспективно в принципе?

    Если не можете определиться - выучите и то и то. Будет пользы больше чем эти метания.
    Ответ написан
  • Как сделать директиву с динамическим шаблоном?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Я новичок в деле Angular.js и пока только разбираюсь с ним.


    Если вам надо содержимое блока заменять, то лучше делать вообще через transclude. А если просто что бы работало:

    вместо $attrs используйте скоуп

    scope: {
            content: '@uiTooltip'  
        },


    p.s. лучше возьмите готовую реализацию
    Ответ написан
    1 комментарий
  • Что лучше для REST API подхода?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1. Берите то что знаете
    2. Всегда можно проиграть

    20 000 в сутки

    Это как бы не такие уж и большие нагрузки. Всего-то 4 реквеста в секунду, если принять в расчет распределение пользователей (что все 20К будут сидеть днем, то есть часов 12, и генерить в среднем 10 запросов к API).

    Такую нагрузку спокойно переносит что угодно, даже PHP со своей умирающей модель.
    Ответ написан
  • Правильно ли я понял философию Docker?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Контейнеры данных


    Они не нужны, используйте named volumes вместо этого (с версии 1.9 докера).

    Исходный код и локальные npm-модули (или лучше это в предыдущий контейнер, и при старте выполнять


    Нет, npm install надо выполнять ДО сборки образа. Когда контейнер стартует - внутри у него уже все должно быть. Опять же я лично против того, что бы выносить исходники проекта в отдельный контейнер-пустышку. У вас есть контейнер с нодой - исходники для ноды должны быть там. Есть некоторые нюансы связанные со сборкой контейнера но это так.

    На файловой системе хоста


    Ничего.

    Логи прокидываются в stdout/stderr контейнера и собираются на хосте через докер любым подходящим драйвером (читаем документацию).

    Конфигурация - все что в конфигах от окружения к окружению меняется - в ENV переменные. Все остальное - не меняется и потому просто вшито внутрь контейнера.
    Ответ написан
    21 комментарий
  • TDD/BDD в чем разница и для каких видов модулей стоит использовать?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    TDD

    - пишем тесты - маленький кусочек, то что можно минут за 10 написать. На этом этапе мы формулируем что мы хотим написать.
    - пишем код - пишем код, который делает тесты "зелеными". то есть все работает. Мы делаем это максимально быстро, самым тупым способом, который просто быстрее всего сделать.
    - рефакторинг - после того как все работает, или еще через пару итераций, что бы набралось чуть больше "грязи", чистим код поочередно. Важно при рефакторинге чистить что-то одно. Либо код, либо тесты (да да, их тоже надо рефакторить иногда устраняя дублирование). Поправили код - прогнали тесты, все хорошо? тогда можно тесты подправить. Ну и т.д.

    BDD
    - пишем фичаспеки - это этап детализации более высокоуровневых требований. Фич. Обычно на этом этапе просто записываются мысли как что должно работать. В этом плане описание фичи описывает юзкейс, а сценарии - детализируют поведение фичи. То есть если у кого-то возникает вопрос как что должно работать, люди описывают пример в виде сценария. Типа что есть, что мы делаем и что в итоге должна выдать система.
    - пишем код - так же как и в случае с tdd, можно писать код для разных уровней.
    - рефакторинг.

    TDD - для одного разработчика, BDD - для команды. А BDD-style assertions для chai - это пафос. По сути это "планирование фич" в рамках библиотек и отдельных объектов. Чуть меньший масштаб. Но ничем от TDD вообще не отличается, хотя если сильно постараться можно так же оценивать ценность фич для пользователей нашей библиотеки и т.д.

    Как никак в BDD основная мысль - фичаспеки должен иметь возможность читать продукт оунер или стэкхолдеры, то есть те кому проект собственно нужен, что бы говорить должно работать так или нет. В случае с библиотеками... ну вы пишите что-то для девелоперов, а они в состоянии читать тесты как фичаспеку. И в принципе от предметной области недалеко.
    Ответ написан
    1 комментарий
  • Изоморфный код. Всё ли я правильно делаю?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    никаких window и глобальных объектов, и все будет хорошо. Используйте модули (es2015, commonjs или amd на худой конец).
    Ответ написан
  • Инкапсуляция в Es6 отсуствует?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Раньше я объявлял приватные свойства и методы так:


    Раньше вы криво создавали объекты и у вас получалась кривая реализация паттерна "модуль". Да и "свойства и методы" ваши приватные они как бы не совсем свойства и методы, это просто переменные (статические свойства в терминах java) и функции.

    Или я что-то упустил?

    Инкапсуляция в javascript достигается и достигалась ранее за счет модулей (сокрытие переменных в дочернем скоупе.

    let privateStaticVar = 'foo';
    
    // то что экспортируется - то публичное
    export default class MyClass() {
        constructor() {
        }
    }
    
    // или
    
    export default (function () {
        let foo = 'foo';
    
        return class FooBar {
             constructor() {
             }
        };
    }());


    Ну и в es2015 добавились символы как простой вариант сделать настоящие приватные переменные, ну и еще есть weakmap.

    const privateFoo = Symbol('foo');
    
    export default FooBar {
        constructor(foo) {
           this[privateFoo] = foo;
        }
    }
    Ответ написан
    5 комментариев
  • Es6 в unit testing?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    mocha не причем. Это node.js должен все это понимать. А стало быть должна быть последняя версия, код должен быть с use strict (обычно бандлеры сами добавляют), некоторые фичи закрыты флагами.
    Ответ написан
    1 комментарий
  • Как сделать REST Api удобным в написании и дальнейшей поддержке?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1) пишем тесты на API
    2) делаем как удобно, пока у нас есть тесты мы можем быстро подправить.

    Отдельно рекомендую глянуть jsonapi.org
    Ответ написан
    3 комментария
  • Пример с нотификацией на node.js + angular.js?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    нотификации это как чат н только без возможности ответить.

    socket-io и вперед.
    Ответ написан
    Комментировать
  • Node.js vs Python - что лучше для высоконагруженной системы?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    PHP, ловите хоть тысячу сегфолтов в день и все будет работать.

    В целом все зависит от задачи. Сделать плохо можно на чем угодно.
    Ответ написан
    Комментировать
  • Node.js 100% cpu 1ого ядра 3400MHZ при 5000 соединениях. Что не так?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    то что грузится одно ядро - это легко объясняется тем что нода работает в рамках одного процесса и в принципе не может отжирать больше одного ядра (есть конечно отдельно модули позволяющие организовать и потоки и даже файберы).

    Что до 100% загрузки - вероятно причина тому использование неэффективного fs.watchFile, попробуйте fs.watch и убедитесь что используется inotify.
    Ответ написан
  • Нужен ли node.js для серверной разработки?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    вопрос архитектуры. Нужно понимать как работает node.js, а именно в чем преимущества и недостатки event loop (полно и тех и тех), и нужно понимать как строить приложение в обход недостатков используя только преимущества. В целом же можно сделать массу различных прикольных вещей. Хотя новичку легко все упороть.
    Ответ написан
  • Как создавать spa приложение на сервере?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    It depends.

    Изоморфность приложений, это весьма абстрактный термин который не подразумевает под собой никакой конкретики.

    На каждое подключение нужно создавать отдельный экземпляр spa приложения для его пререндера?


    Если UI не зависит от пользователя - можно вообще варнишом каким закэшировать это добро.

    Если UI зависит от пользователя - опять же вопрос что нам нужно получить. Тот же реакт можно в рамках одного процесса рендрить совершенно по разному. Как и компоненты второго ангуляра. Но вот то как вы строите свое приложение уже может вносить раздор и т.д.

    Изоморфность это круто но пока она мало у кого есть и люди еще не знают как правильно ее готовить. У каждого получается по разному.
    Ответ написан
  • Микросервисная архитектура для онлайн игр. Проблема асинхронности?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Вы же под ботами понимаете какую-то систему принятия решений, так?

    Если так - то это просто один из компонентов системы, связанный с другими через ивенты. А ивенты уже можно пробрасывать асинхронно через шину сообщений. У вас будет просто диспатчер ивентов который может раскидывать оные по процессам. Проблема будет только в синхронизации состояний но это решаемо.
    Ответ написан
  • Чем заменить gulp.run?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    https://www.npmjs.com/package/gulp-sequence

    в gulp4 они заменили планировщик, и теперь gulp.run не нужен, все заменили комбинации из parallel/series.

    Ваш же случай лечится еще проще:

    gulp.task('run-beats', global.options.prod ? 
        beats_task.prod : beats_task.dev
    });
    Ответ написан
    1 комментарий