Задать вопрос
  • Не удалось изменить возвращаемое значение "List.this[int]"?

    @kttotto
    пофиг на чем писать
    Вы сделали коллекцию структур. Нужно знать разницу между структурой и экземпляром класса. Структура - значимый тип, поэтому когда Вы запрашиваетеsheduleCells[idx], Вы получите копию значения, а не ссылку на объект. А у копии отдельные поля Вы менять не можете, можете только полностью новым значением всей структуры заменить.

    Поэтому есть два выхода, либо изменить struct на class, либо менять значение
    var temp = Data.sheduleCells[idx];
    Data.sheduleCells[idx] = new SheduleCell(temp.cell1, hours);
    Ответ написан
    Комментировать
  • Как сгруппировать массив по ключу?

    @kttotto
    пофиг на чем писать
    Как вариант библиотечка lodash
    Ответ написан
  • Как десереализировать этот JSON?

    @kttotto
    пофиг на чем писать
    JSON, это описание объектов в JavaScript. И поле response это не массив, а объект с полями "AK-47 | A...", соответственно и эти поля тоже не массивы.

    Вариант первый, некрасивый и похож на хак, это заменить {} у респонса на [], тогда он станет массивом, ну и в остальных нужных местах и можно будет десериализовать к dictionary.

    Вариант второй, трансформировать этот Json к другому типу Json. Тут сложнее, потому что нормальных библиотек для этого просто нет. Когда мне это надо было делать, я использовал JUST.net. Что мне в ней понравилось, так это быстрый фидбек от разработчика, если не хватает функционала, то он очень быстро его по Вашему желанию добавит. Ну а после трансформации, десериализуйте его уже во что захотите.

    P.S. Тут в процессе диалога с Stalker_RED, еще один вариант созрел. Если Вы уверены в структуре Json объекта, то его можно привести к JObject. Этот объект представляет собой дерево, где Вы сможете взять узлы (поля) первого уровня, у них получить узлы второго уровня, соответственно из каждого из узлов получите имя и значение. Ну так и сформируете свою модель, какую захотите. В Вашем варианте это будет оптимальным решением.
    Ответ написан
  • Что здесь написано?

    @kttotto
    пофиг на чем писать
    В C# значимые типы по умолчанию не могут иметь значение null. Если Вы объявите переменную как
    int x;
    то при чтении она будет равна 0. Если попытаться сделать так x=null, то получите эксепшн.
    Чтобы иметь возможность присвоить переменной x null, есть тип Nullable
    Т.е. теперь, если сделать
    Nullable<int> x;
    то мы спокойно сможем сделать x=null;
    Тип int? является синтаксическим сахаром, укороченным вариантом записи Nullable<int>, эти две записи по сути одно и то же.
    Ответ написан
    Комментировать
  • Метод заставляет компьютер обожраться памятью?

    @kttotto
    пофиг на чем писать
    Вы бы сказали тогда какой длинны весь текст. Подвисает - он может долго думать, сжирать процессор. Если все таки память, то возможно он не выходит из цикла (кто знает, что у Вас там за текст) и строит список из миллионов результата.

    И мне кажется у Вас там ошибка. Возможно lenghtText должен быть равен findText.Lenght. Т.е. после того как Вы нашли позицию вхождения, дальше надо искать с позиции
    secondCharacter = (firstCharacter + findText.Lenght) - 1;
    нет смысла сдвигать только на один символ. И не проще ли было найти все вхождения регуляркой? Это было бы две строки текста.
    Ответ написан
  • Самописный ООП-слайдер на javascript - почему ошибка (замыкания)?

    @kttotto
    пофиг на чем писать
    function Slider(images, prevBtn, nextBtn) {
          var self = this;
          this.images = images;
          this.i = 0;
    
          prevBtn.onclick = function () {
              hide(self.images[self.i], 19);
              self.i--;
    
              if (self.i < 0) {
                  self.i = self.images.length - 1;
              }
    
              show(self.images[self.i], 19);
          };
    
          nextBtn.onclick = function () {
              hide(self.images[self.i], 19);
              self.i++;
    
              if (self.i > self.images.length - 1) {
                  self.i = 0;
              }
    
              show(sliderImgs[self.i], 19);
          }
      }
    Ответ написан
    3 комментария
  • Как вызвать функцию из тела родительской функции?

    @kttotto
    пофиг на чем писать
    Если так ставится вопрос, то может Вы не правильно подошли к решению самой задачи?
    Ну а если все так критично, то самое простое, что приходит в голову
    switch(functionName){
        case 'func2': func2(); break;
        case 'func3': func3(); break;
    }

    Вынесите только его в отдельный метод.
    Ответ написан
    Комментировать
  • Как правильно работать со связкой ASP.NET Core, React и npm?

    @kttotto
    пофиг на чем писать
    Если решили делать spa, то я бы не советовал смешивать фронт с asp частью. Лучше вынести всю фронтовую часть в отдельный проект, а собранный index уже отдавать asp проектом и его же использовать просто как web api. Тогда ничего мешаться не будет.
    Ответ написан
    5 комментариев
  • Есть адекватная альтернатива Visual Studio?

    @kttotto
    пофиг на чем писать
    Пользуюсь vs2017 на i7, ssd, 8Гб. Каких-то особых проблем не испытываю. Но по сравнению с vs2015 она конечно глючнее, бывает подвисает у меня, приходится через менеджер закрывать и перезапускать. С vs2015 вообще никогда проблем не испытывал.
    А вообще студия нормально кастомизируется. Можно отключить многие вещи, которые не используешь в работе. Например профайлер, он не плохо так ресурсы ест.
    Ответ написан
    Комментировать
  • Почему array.filter игнорирует значение 0 (не индекс)?

    @kttotto
    пофиг на чем писать
    Он 0 воспринимает как false, поэтому исключает его из результата фильтра. Используй строгую проверку ===.
    Тут
    Ответ написан
    Комментировать
  • Как избежать множественного создания классов в c# web api?

    @kttotto
    пофиг на чем писать
    Вообще у Вас все правильно. Есть слой моделей, которые являются сущностями, есть слой моделей, которые для отображения данных, есть слой dto моделей. У меня в проектах тоже всегда так. Зря Вы думаете, что плодите их, они находятся в разных слоях (модулях), можете считать их разными доменными моделями. Для больших и сложных проектов, это оправдано. И хоть все классы со стороны могут показаться одинаковыми, но они разные, т.к. относятся к разным доменным моделям и выполняют разную функцию.

    Если у Вас проект небольшой, то можно было обойтись и одним слоем для работы с ORM и не усложнять код.
    Ответ написан
    4 комментария
  • Почему не работает данный пример с async await?

    @kttotto
    пофиг на чем писать
    У Вас здесь несколько ошибок.

    Во первых, Вы в сигнатуре метода Run()указали, что он возвращает объект типа Task, но return не сделали. Если Вы хотите, чтобы он возвращал таску, то ее надо создать
    var task = new Task(() => async
    { 
    	Console.WriteLine("Hello from begining \"Run\" method");
        int num = 1000000000;
        long res = await new TaskFactory().StartNew(() => { return SumZeroToNum(num); });
        Console.WriteLine($"Result: {res}");
    });

    а потом вернуть
    return task;

    Но сделав в методе Main Run(), Вы только получите объет задачи, автоматом он у Вас не выполнится. Для этого Вам нужно будет сделать t.Start();
    Если хотите, чтоб вызывать метод можно было через async, то внутри надо сделать так

    return Task.Run(() =>
    {
        ....
    })

    Тогда запустить его можно будет асинхронно
    await Run();
    Или синхронно
    Run().Result;
    Ответ написан
    Комментировать
  • Как вытащить проект из решения в Visual studio?

    @kttotto
    пофиг на чем писать
    Не совсем понятен вопрос. Сохранить отдельным решением?

    Создайте новый солюшен.
    Зайдите в каталог солюшена от куда надо вытащить проект.
    Найдите папку с проектом, скопируйте ее в каталог нового солюшена.
    Из студии правой кнопкой по новому солюшену, добавить проект -> существующий.
    Из старого солюшена удаляете скопированный проект.
    Ответ написан
  • Почему небезопасно показывать ID пользователя в URL, и чем его заменить?

    @kttotto
    пофиг на чем писать
    Есть такое дело, что не рекомендуют показывать реальные id на клиенте. В этом случает заводят еще одно поле, чаще всего guid, и если на клиенте нужно показать какой то идентификатор, то показывают его.
    Ответ написан
  • Правильно ли я делаю, что все кроме работы с БД выношу в отдельные классы и потом внедряю как DI?

    @kttotto
    пофиг на чем писать
    Все эти DI, IoC придумали для слабой связанности. Т.е. их использование оправдано, если Вы хотите разорвать сильную зависимость между какими-то модулями или объектами, т.к. в будущем ожидаете изменений или хотите добавить возможность тестирования какого-то участка кода.

    Если Вам не принципиально ни то, ни другое, то не стоит доводить до фанатизма)

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

    @kttotto
    пофиг на чем писать
    Когда Вам нужно что-то записать, обычно берут листочек и ручку. А можно не ручку, можно карандаш, можно фломастер или перьевую ручку. Полиморфизм будет заключаться в том, что Вам нужен объект, которым можно что-то записать, а какой конкретно и как он реализует саму запись Вас не сильно беспокоит. Т.е. когда Вы скажите: "дай мне объект для записи", Вам можно будет подсунуть любой объект, который как абстракция будет является "перо".

    Когда Вы хотите спать, Вы говорите: "дай мне на что можно лечь". И можно будет лечь хоть на диван, хоть на кровать, хоть на кресло-кровать. Абстрактно это все будет "кровать", но реализацию будет иметь разную.

    Полиморфиз удобен когда например могут быть изменения, дополнения в коде. Тогда мы абстрагируемся от конкретной реализации, создаем абстрактный класс и в метод уже запрашиваем объект этого типа. А во время выполнения мы может подсунуть для выполнения объект любого другого типа, который будет отнаследован от этого абстрактного и будет иметь свою реализацию каких то методов. Так что да, это "динамическая смена реализации".
    Ответ написан
    Комментировать
  • Пишу таск-менеджер на ASP.NET. Как реализовать подсчёт времени выполнения задачи?

    @kttotto
    пофиг на чем писать
    Для замера времени работы обычно используется Stopwatch.

    А вообще не совсем понятен вопрос, если Вы вроде как все организовали. Что Вас не устраивает?
    Ответ написан
    Комментировать
  • Как передать часть кода в метод другого класса (C#)?

    @kttotto
    пофиг на чем писать
    Я бы посоветовал использовать T4.
    Это будет файлик с расширением .tt, в нем Вы можете описать логику кодогенерации. По сути он возьмет нужный Вам файл из проекта как текст и сгенерирует из него то, что Вы хотите. Перед запуском проекта Вы просто запустите Т4 файл.
    У нас на одном из проектов мы так генерируем код моделей на основе наших метаданных.
    Ответ написан
    Комментировать
  • Как и что сказать заказчику, что бы он отказался от использования wix?

    @kttotto
    пофиг на чем писать
    Любой заказчик хочет чтоб было быстро и дешево. И если он решил сделать сайт на wix, то будет искать того, кто ему это сделает, а не того, кто будет отговаривать. Значит он определился, что решение на этом конструкторе сможет решать его бизнес-задачи.

    Если Вы знаете "хотелки" заказчика и понимаете, что это не будет заказчику дешевле делать на wix, то расскажите какие будут проблемы с реализацией конкретных фич, покажите, что конструктор эти задачи из коробки не решит.

    Если же это просто Ваш вкус и нелюбовь к wix, то вы можете потерять заказчика.
    Ответ написан
  • Как перечислять дни в C#?

    @kttotto
    пофиг на чем писать
    var beginDate = DateTime.Now;
    var futureDate = beginDate.AddDays(365);
    
    for (var date = beginDate; date < futureDate; date = date.AddDays(1))
    {
        Console.WriteLine(date.ToString());
    }
    Ответ написан
    Комментировать