• Как исправить ошибку A second operation was started on this context instance before a previous operation completed?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    По сообщению очевидно, что ты начал вторую операцию на ef-овском DbContext до того, как закончилась предыдущая.
    Такое обычно случается, когда ты пытаешься работать с DbContext параллельно из нескольких потоков или забыл написать await у SaveChanges. (это в ошибке и написано, буквально)
    Также в сообщении об ошибке дана ссылка на статью, которую следует прочитать, чтобы не допускать таких ошибок в будущем.

    Kafka, Postgres, и "100 данных подряд" тут ни при чём.
    Ответ написан
    Комментировать
  • Как распаковать список в C#?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Ну тут вопрос, зачем делать список из обжектов, если можно List<List<double[]>>, но если повлиять не можешь и точно знаешь что содержимое именно такое:

    var items = orders_
     .Cast<List<object>>() // В случае с List<List<double[]>> просто надо убрать эти вызовы Cast.
     .SelectMany(x=>x)
     .Cast<double[]>() // и этот тоже
     .SelectMany(x=>x);
    
    Console.WriteLine(string.Join(", ", items));
    Ответ написан
    1 комментарий
  • Как с помощью GPS и Arduino, надёжно и безопасно вывести человека из леса?

    @rPman
    С точки зрения интерфейса, наплечное устройство должно показывать направление до дома и опционально - расстояние, плюс кнопку сос и в идеале - голосовая связь, но все радиокоммуникации зарегулированы в стране (в лесу тупо может не быть привычной сотовой связи, напоминаю спутниковая тоже зарегулирована так что ее цена неподъемна для большинства), для стороннего наблюдателя это должно быть приложение, показывающее на карте выбранного пользователя.

    Создание своего устройства, с высоким уровнем защиты (особенно защита от холода создаст проблем) - проблема, которую сложно будет решить тем кто задает вопросы такого уровня. Ищите лучше готовые решения.

    p.s. представь ты создал устройства, раздал из людям, но из-за ошибке в реализации (первый релиз, баги, обычное дело) люди, понадеявшиеся на твое устройство - зашли в болото и погибли, ты готов к подобной ответственности?
    Ответ написан
    Комментировать
  • Как сделать асинхронный while цикл?

    Casper-SC
    @Casper-SC
    Программист (.NET)
    ConsoleApp\Program.cs
    // See https://aka.ms/new-console-template for more information
    
    await DoWork();
    
    async Task DoWork()
    {
        int counter = 0;
        while (true)
        {
            Console.WriteLine($"TEST {++counter}");
            await Task.Delay(900);
        }
    }


    ConsoleApp\ConsoleApp.csproj
    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net6.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
      </PropertyGroup>
    
    </Project>
    Ответ написан
    Комментировать
  • Как сделать асинхронный while цикл?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Вместо Thread.Sleep использовать await Task.Delay.
    Или таймеры.
    Или запускать в отдельном потоке.
    Ответ написан
    Комментировать
  • Как исправить ошибку на C#?

    Начните с перевода "no suitable method found to override"
    Ответ написан
    2 комментария
  • Как логгировать в EntityFramework штатными средствами net core?

    byte916
    @byte916 Автор вопроса
    Если кратко, то логгер, судя по всему, синглтон, а БД по умолчанию не синглтон, и из-за этого возникает описанная проблема.
    В общем, вот решение задачи.
    Вместо контекста бд пробрасываем ServiceProvider
    Startup.cs

    loggerFactory.AddProvider(new DbLoggerProvider(app.ApplicationServices));


    В логгере создаем scope и получаем из сервиспровайдера экземпляр БД
    DbLogger.cs

    using (var scope = _serviceProvider.CreateScope())
    {
       var db = scope.ServiceProvider.GetRequiredService<CuDb>();
    
       db.Logs.Add(new CheckUpDb.Log() { Date = DateTime.UtcNow, LogLevel = logLevel, Message = formatter(state, exception) });
       db.SaveChanges();
    }

    Ответ написан
    Комментировать
  • Когда мы создаем list и в элементы добавляем значимые типы данных происходит ли упаковка?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Если используешь List<T> и это T - значимый тип данных, который ты хочешь засунуть, то упаковки не будет.
    Если используешь ArrayList или T-ссылочный тип (интерфейс или object), то упаковка будет.
    Ответ написан
    1 комментарий
  • Как написать решение для формулы в c#?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Степени - Math.Pow
    Модуль - Math.Abs
    Синус - Math.Sin
    Ответ написан
    Комментировать
  • Мне нужно получать текст из выделенного элемента listBox.Как это сделать?

    @killman Автор вопроса
    Нашёл решение сам надо просто:
    string someValue = listBox1.Text;
    Ответ написан
    Комментировать
  • Как создать модальное окно asp.net mvc?

    @valeryalastor Автор вопроса
    оказывается по-умолчанию файлы были 4.0 bs а я пыталась работать с 5.0. как только скачала в офиц сайта новые файлы и все заработало с помощью 2х строк:
    <link href="~/lib/bootstrap/css/bootstrap.min.css" rel="stylesheet" />
        <script src="~/lib/bootstrap/js/bootstrap.bundle.min.js"></script>
    Ответ написан
    Комментировать
  • Как классу Program задать модификатор public в c# 9.0?

    Jeer
    @Jeer Автор вопроса
    уверенный пользователь
    Подсказали, я переписал класс Program в олдовом формате:
    namespace Api
    {
        public class Program
        {
            static void Main(string[] args)
            {

    И это завелось, хотя мне было как-то неочевидно, что так можно сделать.
    Всем спасибо!

    UPD
    Ещё подсказали, что можно в новом синтаксисе можно в самом низу написать через partial и это так же будет работать:
    using...
    ... 
    app.Run();
    
    public partial class Program { /* Expose the Program class for use with WebApplicationFactory<T> */ }
    Ответ написан
    Комментировать
  • Зачем нужен метод CreateLinkedTokenSource(CancellationToken)?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Не уверен, когда именно это может понадобится в реальной жизни (у самого не было такой потребности), но например:
    1. Тебе пришёл CancellationToken, но ты хочешь добавить новую причину, по которой может отметиться выполнение, в дополнение к той, по которой сработает первый CancellationToken
    2. Ты создаёшь свой CTS и прилинковываешь его к первому токену.
    Профит, задача решена - твой метод может отмениться как извне, так и по каким-то своим внутренним причинам.
    Ответ написан
    5 комментариев
  • Различные бэкэнд технологии .net. Что для чего нужно, что же учить новичку?

    vabka
    @vabka Куратор тега ASP.NET
    Токсичный шарпист
    Razor pages являются частью ASP NET Core MVC.
    И он нужен для разработки фронтенда с SSR, а не бэкенда. Так что правильнее будет делать аналогию не с flask, а django.
    Razor Pages - Jinja
    ASP NET Core MVC - Django

    Blazor же вообще целиком и полностью нужен для фронтенда - его стоит ставить в аналогию с Angular и Vue.

    Какая бэкeнд технологий .net из них самая перспективная?

    Просто ASP NET Core, без MVC

    Какую бэкeнд технологию на платформе .net выбрать новичку для более понятного входа с нуля?

    По сложности они все эквивалентны, но решают разные задачи. Определись сначала с задачей.
    Ответ написан
    7 комментариев
  • Делегаты, зачем?

    MSerhio
    @MSerhio
    Вхожу в IT
    Делегат позволяет ослабить связность кода, а рассматривать их стоит вместе с событиями.
    Я объясню на примере игростроя.
    Популярный в сети пример: во врага попала пуля. Должно случиться сразу много вещей - нужно снять здоровье врага, выяснить, не погиб ли он, проиграть анимацию, уничтожить пулю, начислить очки игроку и еще что-то.
    Если мы будем всё это вызывать напрямую, то быстро запутаемся и ошибемся. А когда будем переделывать, сломаем всё окончательно.
    Вот тут нас выручат делегаты и события. Мы определим событие, которое срабатывает (вызывает свой делегат) в момент попадания пули. И соответственно, определим делегат для этого события.
    Теперь каждый метод, которому это событие интересно, может подписаться на его делегат (внести себя в список вызываемых делегатом методов - их может быть больше одного).
    И теперь мы можем переделывать что угодно. Главное, не забывать подписываться и отписываться.
    Делегат, это как автолавка в деревне: приезжает и сигналит. Кому надо - выходит. При этом ни автолавке ни покупателям не интересно, что происходит у каждой из сторон в отдельности.
    Ответ написан
    Комментировать
  • Как автоматически получить public url от ngrok?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    достаточно было зайти на страницу тарифов https://ngrok.com/pricing
    6pWqAUPY.jpg?download=1&name=%D0%A1%D0%BA%D1%80%D0%B8%D0%BD%D1%88%D0%BE%D1%82%2025-03-2022%2022:29:07.jpg
    Ответ написан
    3 комментария
  • Как решить задачу по математике с помощью python?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Это не задача на программирование, а задача на математику. Решение - одна формула.

    Сначала решите уравнение, при какой величине вклада X доход от бумаги и от банковского вклада будет одинаков?

    1.1X+2000 = 1.12X

    До этой суммы выгоднее брать бумагу - после - вклад.
    Далее надо 4 раза взять одно из двух, сравнивая текущую сумму с пороговым значением выше.

    От питона вам надо уметь выполнять действие 4 раза:
    for i in range(0, 4):

    Сравнивать 2 значения и делать в зависимости от этого разные действия.
    if a < b:
      foo
    else:
      bar


    Ну, вряд ли вы не знаете, еще надо уметь присваивать переменные и выполнять арифметику - умножение и сложение.
    Ответ написан
    Комментировать
  • Что лучше использовать для ведения логов?

    vabka
    @vabka
    Токсичный шарпист
    Ну из бесплатных систем, которые можно развернуть на своих серверах, есть два варианта:
    1. ELK
    2. Grafana + Loki

    То, как их настроить - можешь посмотреть на хабре. Лично я больше выступаю за второй вариант, ибо Grafana+Loki требуют гораздо меньше ресурсов сервера, как для хранения, так и для поиска по логам, да и UI не так страшно тормозит.

    Можно и самому что-нибудь навелосипедить, поверх какой-нибудь timeseries базы.
    Ответ написан
    Комментировать
  • Как вернуть результат при пустом значении?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Чего гадать, можно же явно вернуть нашли / не нашли
    public async Task<(bool, long)> GetId(long bookingId)
    Ответ написан
    Комментировать
  • Какой формат и расширение файлов типичного .net core бекэнд приложения?

    vabka
    @vabka Куратор тега .NET
    Токсичный шарпист
    Нужен ли на установленный .net на платформе где будет запускаться такое .net приложение?

    Когда ты публикуешь приложение для Linux - оно будет с расширением исполняемого файла от линукса.
    А именно - ни с каким.
    Если будешь публиковать платформонезависимое приложение, то тогда будет .dll и в любом случае понадобится установленный рантайм.
    Нужен ли на установленный .net на платформе где будет запускаться такое .net приложение?

    Если публиковал с флагом --self-contained или --self-contained true, то не нужен.
    Если публиковал без флага --self-contained или с флагом --self-contained false, то нужен.

    Это всё ты мог проверить самостоятельно, просто скомпилировав хеллоу ворлд.

    PS: вот что конкретно выдаётся в результате:
    C:/workspace
    ❯ dotnet new console -o DemoLinuxPublish
    Шаблон "Консольное приложение" успешно создан.
    
    Идет обработка действий после создания...
    Выполнение "dotnet restore" для C:\workspace\DemoLinuxPublish\DemoLinuxPublish.csproj...
      Определение проектов для восстановления...
      Восстановлен C:\workspace\DemoLinuxPublish\DemoLinuxPublish.csproj (за 113 ms).
    Восстановление выполнено.
    
    
    C:/workspace took 2s
    ❯ cd .\DemoLinuxPublish\
    
    C:/workspace/DemoLinuxPublish via .NET v6.0.100  net6.0 took 12s
    ❯ dotnet publish -c Release -r linux-x64 --self-contained -v q --nologo -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -p:DebugType=None -p:DebugSymbols=false -p:PublishReadyToRun=true -p:PublishTrimmed=true
    
    C:/workspace/DemoLinuxPublish via .NET v6.0.100  net6.0 took 2s
    ❯ ls .\bin\Release\net6.0\linux-x64\publish\
    
        Directory: C:\workspace\DemoLinuxPublish\bin\Release\net6.0\linux-x64\publish
    
    Mode                 LastWriteTime         Length Name
    ----                 -------------         ------ ----
    -a---          21.03.2022     3:25       15866695 DemoLinuxPublish

    PPS: я немного упоролся с дополнительными параметрами сборки
    Ответ написан
    2 комментария