• Как избежать IoC service locator anti-pattern в данном примере?

    @vilix Автор вопроса
    После ответа Дмитрий Ковальский сделал след. factory:
    public class ControllerProccesorFactory : IControllerProccesorFactory
    {
        private readonly IKernel kernel;
    
        public ControllerProccesorFactory(IKernel _kernel)
        {
            kernel = _kernel;
        }
    
        public IControllerProccessor Create(SimpleController ctr)
        {
            IControllerProccessor proccessor = kernel.Get<IControllerProccessor>(ctr.Vendor);
            proccessor.Ctr = ctr;
            return proccessor;
        }
    }

    В Bindigs добавил:
    kernel.Bind<IControllerProccesorFactory>().To<ControllerProccesorFactory>()
                    .WhenInjectedInto<HelloWorldService>().WithConstructorArgument(kernel);

    ControllerProccesor - удалил, использую теперь в сервисе так:
    public class HelloWorldService : IHelloWorldService
    {
        private readonly IDbConnectionFactory dbFactory;
        private readonly IControllerProccesorFactory ctrProcFactory;
    
        public HelloWorldService(IDbConnectionFactory _dbFactory, IControllerProccesorFactory _ctrProcFactory)
        {
            dbFactory = _dbFactory;
            ctrProcFactory = _ctrProcFactory;
        }
    
        public bool sendMsgToAllControllers(string msg)
        {
            var db = dbFactory.Open();
            var controllers = db.Select<SimpleController>();
    
            foreach(var ctr in controllers)
            {
                var ctrProc = ctrProcFactory.Create(ctr);
                ctrProc.sendMsg(msg);
            }
            db.Close();
    
            return true;
        }
    
    }


    Пока это решение полностью устраивает, и минусов в нем не вижу, но любым замечаниям и предложениям буду рад в комментариях или в ответах.
    Ответ написан
    Комментировать
  • React JS. Как получить параметр из вложенного роута?

    @vilix
    если я правильно понял часть вашего вопроса, в App получить :id дочерних компонентов можно так:
    if (this.props.children)
          console.log(this.props.children.props.params.id);


    т.е например вы перешли по ссылке /list/11 тогда код выше выведет "11"
    Ответ написан
  • Могу ли я написать свое приложение для ipad и не платить 99$?

    @vilix Автор вопроса
    Сам теперь могу ответить, что таки можно написать приложение для IOS, и запустить его на своем устройстве, но на устройстве необходим jailbreak и некоторые махинации в настройках xcode. Все находится в гугле по сабжу.
    Ответ написан
    Комментировать
  • Что нужно знать перед началом разработки большого проекта?

    @vilix
    Если к проекту будет подключатся команда разработчиков, а если проект большой я думаю рано или поздно вам понадобятся помощники, тогда вам будет необходим свой code-style-guide ну или позаимствованный например от гугла.

    Насчет проектирования, тут не всегда обязательно UML, проектировать можно по разному, зависит от методологии, если вы не боитесь, что во время разработки проект будет терпеть много изменений, то пишите спеку (SRS) в виде IEEE 830 или RUP. В ходе написания спецификации вам и понадобятся разные UML диаграмки.
    Если вы любите более гибкую разработку, то можете позаимствовать так называемые user story, суть которых состоит не в подробном техническом документировании каждой функции, а в том, что функционал проекта разбивается на фичи которые описываются человеческим языком, можете примеры из scrum посмотреть.

    Вообще все сводится к выбору методологии разработки ПО, их сейчас множество, от себя скажу, что не обязательно зацикливаться на одной, их можно синтезировать подстраивая под себя.

    Я для себя понял одно общее правило: большей проект в начале упрощать максимально, отбрасывая все лишнее, стараясь в первом же прототипе, реализовать главную бизнес цель проекта, а потом уже наращивать все остальное.

    Это правило помогает, меньше рассуждать и философствовать над проектом и просто делать его, а то много проектов завершаются еще на стадии проектирования, когда ты входишь в ступор от обилия вариантов реализации и возможных проблем и сценариев. Just do it)
    Ответ написан
    Комментировать
  • Как одновременно использовать ренедеринг на сервера и на клиенте в reactjs?

    @vilix Автор вопроса
    Нашел еще одно решение для себя, из за того что мне никак не давало покоя мысль о том, что данные есть уже на пререндр странице и мне их нужно дублировать в script. И я подумал, почему бы в getInitialState, не парсить их прямо из HTML, и это работает.

    Но я думаю это решения подойдет не для всего, подводные камни которые я вижу такие:
    1. Во первых необходимо реализовывать логику самого парсинга, которая не всегда может быть тривиальной
    2. Если объем данных большой, парсинг может занимать ощутимое время и в это время компонент не будет отвечать
    3. Нужно хранить все нужные невидимые данные для пользователя в атрибутах тэгов постоянно, а не только при серверном пререндеринге, чтобы чек-сумма markup-ов совпадала.

    В итоге у меня получилось нечто такое (может кому пригодится):

    getInitialState: function () {
        if (!isNode) {
          var data = [];
          $('#dataId').map(function(key, element) {
            var id = element.getAttribute('data-reactid');
            id = id.substring(id.indexOf('$')+1);
            var title = element.innerHTML;
            data.push({id: id, title: title})
          });
          return {data: data}
        }
        return {};
      },


    Пожалуйста напишите в комментариях если я что-то упустил важное в минусах данного подхода или наоборот надумал лишнее.
    Ответ написан
  • Что за странная ошибка в логах сервера Apache?

    @vilix
    вот похожие ошибки в гугле, пишут, что боты ломятся ищут уязвимости
    Ответ написан
    Комментировать
  • Можно ли использовать движок joomla для создания сайта похожего на speterburg.biglion.ru?

    @vilix
    для joomla есть куча готовых плагинов, поэтому ответ да, но по любому ручками, что то надо будет доделать
    Ответ написан
    2 комментария