• Возможно ли использовать COUNT(*) вместе с Limit?

    sarapinit
    @sarapinit
    Точу водой камень
    попробуйте так
    select count(*) from 
    (select * from some_table limit 1000) a
    Ответ написан
    Комментировать
  • Какие интенсивы есть в Санкт-Петербурге?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    Есть периодические встречи разработчиков, насколько я знаю.
    https://m.vk.com/spbdotnet
    Попробуй начать отсюда. Там может куда еще направят.
    Ответ написан
    Комментировать
  • Как проверить соответствия цветов из массива?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    a1.ToHashSet().SetEquals(a2)

    Но это справедливо только если считать повторяющиеся цвета одним и тем же значением
    Ответ написан
    Комментировать
  • Git - не могу понять суть?

    sarapinit
    @sarapinit
    Точу водой камень
    git hist
    чтобы получить хэш конкретного коммита
    git checkout <hash>
    чтобы вернутся к конкретному коммиту по его хэшу
    Ответ написан
    8 комментариев
  • Как правильно обновить миграции и базу с помощью Entity Framework?

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

    UPD
    Судя по вашему комментарию вы выкачали из основной ветки коммиты в которых были добавлены поля к уже существующим моделям. Миграции могли быть созданы а могли и не быть созданы. Но суть в том что в запросе по умолчанию указываются все поля которые есть в классе. А их в вашей базе нет.
    Решений несколько:
    1) Если есть новые миграции, то попробуйте их применить
    2) Если нет миграций но есть изменения моделей, то сделайте миграции и примените их (плохой вариант, скорее всего в будущем из основной ветки вы получите конфликтные миграции и головную боль при объединении веток)
    3) Заигнорить недобавленные поля в настройке DbContext, если они вам не нужны
    Ответ написан
    2 комментария
  • Как тестировать класс, который зависит от ILogger и IHttpClientFactory?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    Да, с помощью Moq можно.
    Для логгера:
    var mockLogger = new Mock>();
    конфигурировать не надо
    для IHttpClientFactory посложнее. Нужно мокнуть IHttpHandler
    и мокнуть IHttpClientFactory так чтобы метод CreateClient возвращал new HttpClient(httpHandlerMock.Object);
    Ответ написан
  • Почему не удается подключиться к базе данных MySql?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    Попробуйте для начала подключиться через MySql Workbench,
    либо проверить доступ командой powershell
    Test-NetConnection 77.222.40.101 -Port 5431

    Если подключение не удастся, то на хостинге скорее всего есть фаервол, который блокирует доступ с незнакомых IP. Это бывает полезно в случае если вы сольете в сеть все данные подключения, как вы сделали сейчас.
    (Не делайте так в будущем и поменяйте пароль)

    Если там есть фаервол, то надо добавить ему в исключения ваш публичный IP
    Ответ написан
    3 комментария
  • Зачем использовать override, new для переопределения, сокрытия?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    Тут не про использование метода из базового класса на самом деле.
    Суть в том что переопределенный метод будет работать если привести класс к базовому классу A,
    а перекрытый метод будет работать только в конкретном классе B.

    new
    class A { public string GetInt() => "10"; }
    class B : A {public new string GetInt() => "20";}
    
    B item= new B();
    item.GetInt(); // вернет 20
    A item2 = (A)item;
    item.GetInt(); // вернет 10


    override
    class A { public virtual string GetInt() => "10"; }
    class B : A {public override string GetInt() => "20";}
    
    B item= new B();
    item.GetInt(); // вернет 20
    A item2 = (A)item;
    item.GetInt(); // вернет 20
    Ответ написан
    Комментировать
  • Swagger нужно ставить отдельным проектом?

    sarapinit
    @sarapinit
    Точу водой камень
    Не обязательно
    Ответ написан
    Комментировать
  • Что будет делать поток №1?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    Выделенный на задачу (Task), поток дойдет до CalcInternalAsync, далее он либо выполнится синхронно, если это возможно, либо вернется в пул потоков на время выполнения асинхронной работы.
    Когда асинхронная работа закончится, из пула потоков снова возьмется поток (не обязательно тот же), в котором выполнится продолжение.

    Тут надо думать учитывая пул потоков и стейт машину в которую преобразуется async\await. А про асинхронную работу стоит думать как про работу которую выполняет не процессор, а следовательно и поток для нее не нужен.
    Ответ написан
    1 комментарий
  • Зачем нужен StringBuilder? В каких случаях нужно использовать StringBuilder? Что мы выиграем используя StringBuilder?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    Вот у нас есть две огромные строки каждая условно по 1 гигабайту. Вот мы их конкатенируем с помощью String.Concat получим третью строку длинной 2 гигабайта. Сделаем тоже самое с помощью StringBuilder. Что мы выиграем?

    В этом случае ничего.

    StringBuilder позволяет снизить потребления памяти в случае если вы постепенно инкрементите какую-то строку, например генерите json из кусочков.
    String.Concat будет каждый раз создавать новую строку и аллоцировать память.
    StringBuilder содержит в себе коллекцию Char, которая дополняется и памяти аллоцируется меньше.

    В документации это подробно изложено, рекомендую
    https://docs.microsoft.com/ru-ru/dotnet/api/system...
    Ответ написан
    Комментировать
  • Зачем бэкенду уметь писать запросы к БД?

    sarapinit
    @sarapinit
    Точу водой камень
    Чтобы не остаться в вечных джунах с узкой специализацией. Наступит момент когда автогенереный запрос будет работать медленно или он будет сжирать кучу памяти в нагруженном месте. Не звать же каждый раз старшего разработчика в такие моменты.
    Ответ написан
    Комментировать
  • Почему C# так мало востребован среди джунов?

    sarapinit
    @sarapinit
    Точу водой камень
    В какую сторону лучше смотреть на данный момент?

    Смотреть в сторону хедхантера. Прямо сейчас в Москве с фильтром "начало карьеры, студенты" 47 вакансий.
    Пробуйтесь везде, просите обратную связь.
    Найдите среди знакомых мидла или синьора, который погоняет вас вопросами по стеку.
    Ответ написан
  • Почему значение равно null?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    Скорее всего потому что rtb_partners и auctionModel не совпадают с тем что в него передается.
    Как я понимаю, сравнение происходит по ссылке и мок возвращает null.
    Если вам не особо важно что туда придет, то можно сконфигурировать безусловно:
    var mock1 = new Mock<IRtbService>();
    mock1
        .Setup(a => a.GetAuctionResult(It.IsAny<IEnumerable>(), It.IsAny<AuctionModel>()))
        .ReturnsAsync("VAST");
    Ответ написан
    Комментировать
  • Почему результат Unit-теста не совпадает с тем, что я ожидаю?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    Метод контроллера возвращает тип ActionResult.
    Он является родительским для OkResult, NoContentResult, ContentResult и других.

    Вот это Assert.IsType(result) проверяет на соответствие типу а не на то что в ответе будет 200.
    Тип должен был быть ContentResult а внутри и код и строка.
    Но у вас возвращается NoContentResult. Видимо при конфигурировании теста вы допустили ошибку и у вас
    result?.Length > 0 == false
    Ответ написан
    2 комментария
  • Как вывести несколько сущностей в одном запросе?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    Получить коллекцию параметров в метод контроллера можно так:
    public ActionResult GetSomething([FromQuery] string[] somethingNames)
    {
        ...
    }


    Если вы об этом.
    Ответ написан
    Комментировать
  • Какие есть способы создать GUI в C#?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    Если хочешь GUI на шарпе то от майкрософт никуда не уйдешь. Есть 3 варианта WinForms, WPF, MAUI (aka Xamarin Forms), но они все принадлежат майкрософт.
    Вообще интересная позиция, у вас какой-то зуб на них? Зачем тогда вообще брать C# если он тоже от майкрософт?

    Aх да, еще есть Avalonia, она делалась как кросплатформенная версия WPF, зато человек был не из майкрософт.
    Ответ написан
  • Можно ли совмещать направления?

    sarapinit
    @sarapinit
    Точу водой камень
    Совмещать 2 направления норм?

    Норм, есть множество переносимых навыков в программировании.
    Когда нужно приблизительно определяться с направлением для коммерческой деятельности?

    Если есть где жить и что есть, то можно и пооткладывать это решение. Попробовать себя в разных смежных областях. В идеале когда, поймешь что тебе действительно нравится. С учетом того что раз в 5-7 лет придется пересматривать направление, скорее всего. Но если ты обнаружил, что тебе уже за 40, но все еще не определился ни с чем, то точно нужно ускоряться)
    Ответ написан
    Комментировать
  • Как посчитать все master в редис кластере?

    sarapinit
    @sarapinit
    Точу водой камень
    Например, скрипт который запустит
    redis-cli info replication
    для каждого узла
    И будет парсить ответ
    # Replication
    
    role:master

    Сколько ответов содержат role:master, столько и мастеров.
    Ответ написан
    2 комментария