• Yii2 - как получить ID модуля для модели либо виджета?

    В init() модели нужно сделать присваивание имени модуля
    public function init()
        {
            $this->module = Yii::$app->getModule('mymodule');
            parent::init();
        }

    Dependency injection
    Ответ написан
    Комментировать
  • Для чего вы применяете Redis в своих проектах?

    @wing_pin
    Люблю сгущенку и функциональное программирование
    Используем Redis в качестве хранилища сырых данных, которые потом порциями забираются, обрабатываются и сохраняются уже в PostgreSQL
    Ответ написан
    Комментировать
  • Redis стоит ли переходить с mysql?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Вы - PM (Project Manager), ваша задача - управлять человеческими ресурсами, НЕ лезьте в разработку.
    Задача программиста, согласно вами описанными правилами - реализовывать функционал, однако инструменты для этого он должен выбирать самостоятельно, согласно ТЗ.

    То, что вы указали несколько цифр - это архитектурные требования и они ВНЕ вашей компетенции.

    Вы указали требования на запись/чтение, а что на счет целостности, себестоимости, сложности внедрения и поддержки?

    Redis - это key-value хранилище (чаще всего используется как кэш, и pub/sub роутер), MySQL - это реляционна БД. Это как сравнивать мотоцикл и фуру, они предназначены для разных целей.
    Ответ написан
    Комментировать
  • В каком виде хранить данные последней активности пользователей в Redis

    pavel_salauyou
    @pavel_salauyou
    Symfony2 & Angular разработчик
    если вам нужно знать только время последнего действия, то храните вот так:

    ключ users_last_activity:user_id - значение
    Ответ написан
    2 комментария
  • Агентная инфраструктура построения веб приложения

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js

    Вот Вы пока боитесь ноды, это все из-за неуверенности в новой и незнакомой технологии. Не бойтесь и смело пишите и API на ноде, и маршрутизатор на ноде, и статику нодой отдавайте, и подписку клиентов на серверные события тоже на ноде делайте. Однородность технологий стоит того, чтобы в ней разобраться. Я конечно специалист не по Java, но Абсолютно не ясно, почему вы думали использовать Java Spring MVC для бэкендов. По сути бэкенды - это API, реализованные или как RPC (stateful, взаимодействие с сохранением состояния на обоих концах) или как REST (stateless, взаимодействие без сохранения состояния). При чем тут MVC к API ? Что должен делать API, так это организовывать доступ к БД, обработку данных, выдачу ответов в нужном формате (пусть JSON), ну и в зависимости от того RPC у или REST - API может или хранить состояние в памяти или не хранить его, делая отдельные запросы независимыми, но лишая нас возможности кешировать объекты предметной области в памяти в рамках сессии. По этому поводу полезный ответ я оставил вот тут - http://toster.ru/q/49346#answer_183494

    Теперь про матрешки, чтобы от них уйти в написании API, проще всего использовать async. Основная проблема в том, что нужно сделать несколько запросов в БД и потом на основе всех фрагментов данных, полученных асинхронно, исполнить бизнес-логику и сформировать ответ.

    
    var dataRequests = [];
    // массив запросов к разным данным (БД, файлы, сетевые вызовы)
    var dataResults  = {};
    // я предпочитаю не использовать массив results, который дает async
    // а вместо этого делать именованные фрагменты данных
    // и писать их в свой хеш
    
    // добавляем один запрос к данным
    dataRequests.push(function(callback) {
    	db.queryRow(
    		'SELECT * FROM TableName1 where Field1=?', [someValue1],
    		function(err, res) {
    			dataResults.firstPiceName = res;
    			callback(err, null);
    		}
    	);
    });
    
    // добавляем второй запрос к данным
    dataRequests.push(function(callback) {
    	db.queryValue(
    		'SELECT count(*) FROM TableName2 where Field2=?',
    		[someValue2],
    		function(err, res) {
    			dataResults.secondPiceName = res;
    			callback(err, null);
    		}
    	);
    });
    
    // вызываем массив запросов асинхронно
    async.series(dataRequests, function(err, results) {
    	// тут делаем бизнес-логику над dataResults в котором у нас есть
    	// все фрагменты данных .firstPiceName и .secondPiceName
    	// и формируем общий результат
    });
    

    Ответ написан
    Комментировать
  • Правильная логика express (node.js)?

    pomeo
    @pomeo
    mannaro я писал вам в прошлом вопросе, посмотрите что генерит express ./appdir и пляшите от этого когда. Здесь github.com/visionmedia/express/tree/master/examples куча примеров чего и как писать.
    Конкретно я делаю так, не помню где увидел.
    Есть models.js
    function defineModels(mongoose, fn) {
      var Schema     = mongoose.Schema,
          ObjectId   = Schema.ObjectId;
      var DataSchema = new Schema({
            'user_id'  : Number,
            'title'    : String,
            'datetime' : Date
            // и т.д.
      });
    
      mongoose.model('Data', DataSchema);
      
      fn();
    }
    module.exports.defineModels = defineModels;
    

    в app.js такие строки
    var express = require('express'),
      mongoose  = require('mongoose'),
      models    = require('./models.js');
      // и т.д.
    
    mongoose.connect('mongodb://localhost/db');
    
    models.defineModels(mongoose, function() {
      var Data = mongoose.model('Data');
    })
    

    и дальше по коду пляшем уже Data.findOne({...}) и т.д.
    Опять же, здесь есть примеры github.com/LearnBoost/mongoose/tree/master/examples, в отличии от visionmedia их меньше, но их достаточно.
    Ответ написан
    Комментировать
  • Форумный движок на nodejs?

    Maximus43
    @Maximus43
    Ответ написан
    Комментировать