• Какие наборы паттернов применяются при написание апи чаще всего?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    copal: Модель !== приложение. Модель (а именно информационная модель) - это упрощенное представление реального объекта. Есть физические модели, математические. Приложение - это совсем другое, приложение может вообще не быть моделью чего-то. Например, архиватор RAR - это модель чего? Браузер Chrome - это модель чего?
  • Какие наборы паттернов применяются при написание апи чаще всего?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    copal, ну удивили, я еще такого потока сознания на Тостере не видел, на Хабре постоянно, а на Тостере - впервые.

    1. В первоисточнике тоже написана лажа, потому, что отделять код от данных и модель от логики - это идея противоестественная для фоннеймановской архитектуры вычислительной техники. Весь смысл которой в том, чтобы смешивать данные и код в одной универсальной памяти и обрабатывать код как данные, а данные как код, вперемешку, это очень сильная концепция, хоть и не абсолютная. Но реализовывать противную этому идею на ЭВМ с фоннеймановской архитектурой - это безумие. Выделять представление отдельно - это хорошая идея, будь оно в виде шаблонов, визуальных компонентов или чего другого, но представление можно отделить от модуля. Если отделять представление от клиентского ПО, то выходит GUI, если от сервера, то выходит API. Я за то, чтобы не делать MVC правильно по кошерной поваренной книге, а выбросить его нафиг и делать классическую многослойную архитектуру, которая себя оправдала десятилетиями.

    2. Вы поддались очарованию объектно-ориентированного подхода, потому, что он позволяет жонглировать абстракциями и выкручивать из них что угодно, но ООП как подход совершенно не состоятелен, я Вам это говорю, как программист с 20-летним стажем, из которых 15 лет писал на ООП и был счастлив этим, который сам написал объектно-ориентированную СУБД в 1999 году, протокол аналог CORBA для объектного маршалинга по сети, свой формат сериализации и использовал ORM когда об этом подходе еще мало кто слышал вообще. Я Вам скажу, что ООП позволяет занять 100 человек задачей моделирования, которая яйца выеденного не стоит, и они будут вести бесконечные холивары о том, у кого должен быть метод "сесть", у "стула" или у "жопы" или нужно сделать клсса "усаживание", который создается на время этого действия и держит ссылки на экземпляры этих двух, или нужно сделать специальные абстрактные интерфейсы "усаживаемое" и "жоповместилище", которые будут соответственно реализованы у обоих классов, а третий будет с пеной у рта доказывать, что модель должна быть анемичной (без методов), а все действия нужно вынести в универсальный контроллер "мирСтульевИЖоп", который хостает все порожденные в нем объекты и оживляет их.

    3. В статье habrahabr.ru/post/204958 я описываю старый метод, который был до всего этого грехопадения, метод слоеной архитектуры. Еще раз говорю, что представление отделять хорошо (шаблоны, gui) и это не противоречит этому подходу.

    4. Вы скажете, что так можно отказаться от всего удобного и действительно прийти к процедурному программированию, а это каменный век. Но модульное программирование, которое является развитием процедурного до сих пор не устарело и имеет приличный запас прочности, но у него конечно уровень абстрактности слишком низкий, чтобы писать прикладной код, это я согласен. Так есть же реактивное программирование, функциональное и метапрограммирование. На этих трех концепциях я и пишу сейчас весь свой код. Вот тут пару статей: habrahabr.ru/post/137446 и habrahabr.ru/post/227753
  • Какие реализации балансировщиков нагрузки на NodeJS сейчас лучшие и насколько они адекватно работают?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    Хомяки пишут rest-crud-mvc-middleware-stateless-orm и что не напишут, все контроллер выходит))) а я чхал на пасочки, у меня системы предназначены для Поднебесной империи, а там столько населенич, что этот маркетинговый цирк некогда разводить, нежно что-то работающее, вот и как только я понял, что все имеющееся в наличии слишком мало, то довелось делать... Ине фиолетово, сколько людей подключатся к этому, главное их качество, квалификация и опыт. В принципе уже мнйчас людей достаточно, чтобы сднлать полноценный сервер приложениц.
  • Как из модуля получить root-директорию?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    Это не то чтобы тянет аж на целый подход, но использую конечно.
  • Какие реализации балансировщиков нагрузки на NodeJS сейчас лучшие и насколько они адекватно работают?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    У меня как-бы не специфическое, а наоборот, универсальное решение сервера приложений, которое уже работает на кластерах из десятков серверов и протестировано на обслуживание миллионов пользователей и сотен тысяч RPS.

    Если Вы хотите маршрутизировать разные URLы в разные воркеры, то cluster (и child_process) с передачей хендла сокета - не катят, потому, что мастер-процесс из сокета может взять только IP, даже заголовков HTTP не может взять и, следовательно, не может получить путь. Если бы мастер это делал, то воркер бы уже не мог прочитать из сокета эти данные. Тут есть два пути:
    1. Не пробрасывать запросы, а проксировать, т.е. разбирать заголовки и из мастера делать опять HTTP-запрос в воркеры, и тогда воркеры это совершенно отдельные приложения, открытые на отдельных портах или даже разных машинах. С этой точки зрения, лучше даже использовать nginx, в котором можно правильно проксировать или даже написать свой модуль/плагин к nginx.
    2. Передавать запросы от мастера к воркерам не через IPC и не через HTTP, а передавать запросы через MQ (очереди сообщений), как ZeroMQ, RabbitMQ, Redis и т.д.
  • Какие наборы паттернов применяются при написание апи чаще всего?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    Где я обосрал гугл? MVC - это бред сумасшедшегр
  • Как включить сервер nodejs?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    Вот пример того, как можно сделать линуксовский сервис самому https://github.com/tshemsedinov/impress/tree/master/bin там install.sh устанавливает его, а uninstall.sh сносит
  • Как реализовать node js на сайте?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    По коду DROPLET10 на $10 сейчас дают
  • Как включить сервер nodejs?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    А ноду то уже удалось поставить?
  • Как включить сервер nodejs?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    Инструкция для forever: www.slidequest.com/Taboca/70ang
    Инструкция для pm2: https://github.com/Unitech/pm2#startup-script-gene...
  • Как реализовать node js на сайте?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    Вот тут ссылки https://github.com/joyent/node/wiki/Node-Hosting

    Советую "для пощупать" https://www.digitalocean.com/ - $5 в месяц, все равно что бесплатно, по промо-кодам, дают $10-20 при регистрации, см. например www.newcoupons.info/digitalocean-coupon-codes этого хватит, соответственно, на 2-4 месяца, чтобы опробовать все и решить, подходит ли.
  • В чем отличие сервисной шины предприятия(ESB) от брокеров сообщений (например RabbitMQ)?

    Это все равно, что спросить, что мне может предложить ресторан, чего нет в сборнике рецептов. ESB - это чаще всего сервер приложений, комплексное решение для обеспечения всех задач предприятия, как то SAP, JBoss, WebSphere, все включено. А MQ - это отдельные технологические решения, ZMQ - это целый конструктор из технологических решений, это поваренная книга, к которой еще нужен хороший повар, чтобы провести проектирование архитектуры и использовать эти рецепты в разработке приложения.
  • Как запустить команду в node на coffee, "#!/usr/bin/env node"?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    А почему node, а не coffee в #! определении ?
  • Как запустить команду в node на coffee, "#!/usr/bin/env node"?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    Делаете
    npm install -g coffee-script
    Потом в первой строке своего coffee файла добавляете #!/usr/bin/env coffee
    Потом добавляете файлу атрибут запускаемого.
    И запускаете.
  • Какие связки лучше для web проекта (SAAS)?

    "Пока напишете SAAS, то он будет везде." т.е. пока сделаете проект, то ES6 будет без специальных ключей работать в node.js полностью и во всех браузерах. Сейчас же ES6 приходится компилировать в ES5 для старых сред запуска, как CffeeScript и TypeScript. По поводу архитектуры, возможно, конечно она есть, но удостоверьтесь в этом еще раз, чтобы не спутать архитектуру с ТЗ или стеком технологий или паттернами проектирования.
  • Какой должна быть экспертная система?

    Ни кому еще не удавалось создать универсальную экспертную систему "обо всем", это вещи очень специализированные и просто нашпигованные спецификой предметной области. Без понимания отрасли невозможно подсказать что-то стоящее. Для выбора или построения архитектуры так же важно понимать набор знаний, кто ее будет делать, с какими навыками, для кого это делается, какая будет нагрузка и что за конечный пользователь?
  • Как правильно организовать загрузку файла через форму в NodeJs?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    А чем multiparty не подходит? Парсайте, потом кладите все во временную папку или проверяйте прямо из буферов памяти, как удобнее и если не подходят файлы - выбрасывайте их. Ничего сложного.
  • Как правильно организовать загрузку файла через форму в NodeJs?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    getimagesize только после загрузки, ее уже нельзя будет отменить. Метод через filesize, который Вы указали выше, работает тоже уже после загрузки. А то, что Вам кажется отменой - это просто не перекладывать файл из временной папки в свою. Загрузку файла это не прерывает. А о чем говорю я - так загрузку действительно можно отменить посередине, если отпарсить частичные MIME заголовки, пока файл качается. И то, только по размеру и типу файла. Его разрешения в пикселях из частичных MIME заголовков не взять. Этот метод можно сделать в node.js и нельзя сделать в PHP ни как. Но это сложно, готового решения для этого нет, парсать MIME нужно будет вручную, учитывая, что он может быть порванным в любом месте. Не парьтесь, используйте модуль мультипарти или попробуйте узнавать о картинке все необходимое еще на стороне браузера, через HTML5 API.
  • Как правильно организовать загрузку файла через форму в NodeJs?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    Размер файла можно, так это и в node.js можно, а размер в пикселях нельзя ни как, ни в php ни в node.js.