Задать вопрос
  • Что же такое Scoped жизненный цикл в ASP.NET?

    И как эти scoped объеты существуют в background сервисах?

    Никак. В рамках IHostedService никакой скоуп не создаётся - надо руками его создавать.
    Как подтверждение - при попытке зарезолвить Scoped - будет ошибка

    "Создается один объект при его запросе в рамках некой области, например http запроса, и в последующем выдается уже созданный в рамках этой области". Часто получал утверждение что неправильно, и непонятно что за область

    Странные челы какие-то. Вроде вполне корректный ответ, хоть и странно сформулированный.


    Scoped
    For web applications, a scoped lifetime indicates that services are created once per client request (connection). Register scoped services with AddScoped.

    In apps that process requests, scoped services are disposed at the end of the request.

    When using Entity Framework Core, the AddDbContext extension method registers DbContext types with a scoped lifetime by default.

    Note

    Do not resolve a scoped service from a singleton and be careful not to do so indirectly, for example, through a transient service. It may cause the service to have incorrect state when processing subsequent requests. It's fine to:

    • Resolve a singleton service from a scoped or transient service.
    • Resolve a scoped service from another scoped or transient service.

    By default, in the development environment, resolving a service from another service with a longer lifetime throws an exception. For more information, see Scope validation.
    Ответ написан
    Комментировать
  • Как скомпилировать приложение для Windows в Qt Creator на MacOS?

    Adamos
    @Adamos
    Теоретически достаточно поставить MXE и прописать соответствующий компилятор в QtCreator. Под Ubuntu я себе собрал такую среду и спокойно компилирую EXE-шники, просто переключившись на другую схему сборки в QtCreator.
    Как там с OSX на практике - не пробовал и не завидую новичку, которому понадобится разобраться с этой кухней...
    Ответ написан
    1 комментарий
  • Как запустить отдельный процесс а не подпроцесс?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Судя по картинке, речь идет про Windows, поэтому ответ будет тоже чисто для Windows.
    Сылка на процесс, запустивший данный (типа, на родительский) хоанится в структуре ядра, описывающий сам процесс - и, на самом деле, практически ни на что не влияет. Но если вам так хочется запустить процесс без родителя, запустите промежуточный процесс, запустите из него нужный вам процесс и завершите промежуточный процесс.
    Ответ написан
    2 комментария
  • Как установить nextcloud на NGINX Unit?

    ky0
    @ky0 Куратор тега Nginx
    Миллиардер, филантроп, патологический лгун
    Расскажете, чем не подошёл способ установки из официальных образов?
    Ответ написан
  • Cannot convert return expression of type, C# generic method, как вернуть конкретный тип?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    как можно вернуть конкретный тип значения без изменения сигнатуры?

    В данном случае - никак.
    T - это generic параметр для подстановки во время компиляции. Он означает конкретный тип.
    Так как никаких ограничений на него не выставлено, то считается, что может в него быть вставлено абсолютно что-угодно. Но возвращаемые значения должны уметь конвертироваться в этот возвращаемый тип, например, если T - long, то ParseInt сработает, т.к. int конвертируется к long (неявно и явно), а DateTime к long просто так нет. А теперь вместо T подставь byte или какой-нибудь класс и подумай - можно ли int к этому классу сконвертировать.

    Пишу парсер

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

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

    Например, так можно

    enum TokenType
    {
        Int,
        Decimal,
        DateTime,
    }
    
    public abstract class ParseResult
    {
          public abstract TokenType Type { get; }
    }
    
    public class IntParseResult: ParseResult
    {
           public override TokenType Type => TokenType.Int;
           public int Value { get; }
           IntParseResult(int value)
           {
                 Value = value;
            }
    }
    
    public class DecimalParseResult: ParseResult
    {
           public override TokenType Type => TokenType.Decimal;
           public decimal Value { get; }
           DecimalParseResult(decimal value)
           {
                 Value = value;
            }
    }
    
    public class DateTimeParseResult: ParseResult
    {
           public override TokenType Type => TokenType.DateTime;
           public DateTime Value { get; }
           DateTimeParseResult(DateTime value)
           {
                 Value = value;
            }
    }
    
    public interface IParser
    {
              ParseResult Parse(string str);
    }
    
    public class IntParser: IParser
    {
            public ParseResult Parse(string str) => ParseInt(str);
    }
    
    public class DecimalParser: IParser
    {
            public ParseResult Parse(string str) => ParseDecimal(str);
    }
    
    public class DateTimeParser: IParser
    {
            public ParseResult Parse(string str) => ParseDateTime(str);
    }
    
    public static class MyParser
       {
           private static IParser GetParserFor(string str) { /* .... */ };
           public static ParseResult Parse(string str)
           {
                  var parser = GetParserFor(str);
                  return parser.Parse(str);
           }
       }


    Я рекомендую убрать этот статический парсер и вынести решение о том какой парсер использовать выше по иерархии вызовов, либо пересмотреть логику парсинга, т.к. просто посмотреть на строку и понять как парсить - не самое эффективное решение.
    Ответ написан
    Комментировать
  • Возможно ли создать скрипт который перемещает файлы c Linux-машины на Windows-машину?

    @Drno
    Можно. Например подключась к linux по ssh
    можно даже в режиме sync с помощью rclone
    Ответ написан
    1 комментарий
  • Стоит ли брать рэковый supermicro или обойтись midi tower?

    hint000
    @hint000
    у админа три руки
    Супермикро отлично упадет на шкаф и прекрасно там будет смотреться.

    В чем концептуальное отличие такого сервера от обычного компа

    1. шуметь будет в ~10..100 раз сильнее обычного компа (ну в 100 раз - только когда жарко в комнате, а так в основном раз в 10);
    2. когда умрёт корпусной вентилятор, новый серверный вентилятор будет стоить раз в 5..10 дороже обычного корпусного вентилятора (а в одноюнитном корпусе их штук 8..16 - маленьких, высокоскоростных, и потому шумных); в соседнем магазине за углом направо не купите (как обычные), под заказ будете ждать 1-2 недели;
    3. когда умрёт БП, новый серверный БП будет стоить в 2..5 раз дороже обычного ATX БП; в соседнем магазине за углом не купите подходящий серверный БП, искать и ждать под заказ;
    4. зато будет IPMI - можете пойти в гости к девушке и оттуда удалённо переустанавливать операционку на своём компе, стоящем на шкафу, девушка будет в восторге (вряд ли); ну, просто чтобы не думали, что от серверного железа одни минусы и никаких плюсов - вот есть такой плюс;
    5. ECC тоже плюс, вы его вообще не ощутите, если у вас не крутится банковская\финансовая\биржевая система или какая-нибудь АСУ ТП атомной электростанции и т.п.
    Ответ написан
    3 комментария
  • Как организовать работу N com-портов одновременно?

    @alexalexes
    // Форма окна
        Ui::MainWindow *m_ui;
    
        // Флаг ожидания ответа
        bool m_waitAnswer;
    
        // Открываемый com-порт
        QSerialPort *m_comPort;
    
        // Приемный буфер
        QByteArray m_bufferRead;
    
        // Таймер
        QTimer *m_timerWaitAnswer;

    Эти свойства у вас отвечают за контекст одного конкретного порта.
    1. Нужно описать элемент-структуру по этим свойствам - тем самым опишите контекст порта.
    2. Сделать массив из этих элементов - массив контекстов портов.
    3. В каждом методе работы с портом обеспечить передачу входного параметра, чтобы указывать, какой i-ый элемент структуры использовать (какой контекст порта - конкретный порт), чтобы что-то делать с параметрами конкретного порта.
    Ответ написан
    4 комментария
  • Как организовать SMB c разными МФУ?

    @Drno
    Печать по внешнему IP? Чет не выглядит безопасно. Впн организуйте. И подцепите общее хранилище туда тоже
    Ответ написан
    2 комментария
  • Какой сервер выбрать для просмотра видео?

    Plex, Kodi - с ними ещё из коробки sonarr и radarr работают

    Ещё есть
    Media Portal, Emby, streama
    Ответ написан
    1 комментарий
  • Фреймворки для кросс-платформенной разработки. Практикуют ли переписывание под разные платформы?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Если есть возможность отойти от C#, то есть Delphi и FMX с кроссплатформенным фреймворком. Мощнее и удобнее WinForms и WPF. Этот фреймворк, кстати поддерживает и C++, если использовать CBuilder

    https://www.embarcadero.com/ru/products/delphi/sta...
    Ответ написан
  • Фреймворки для кросс-платформенной разработки. Практикуют ли переписывание под разные платформы?

    @res2001
    Developer, ex-admin
    Под плюсы довольно много кросс-платформенных библиотек для GUI, самая известная, видимо, Qt.
    Сам язык и его стандартная библиотека вполне кросс-платформенны. Но в разных компиляторах и в разных реализациях стандартной библиотеки могут быть свои нюансы.
    Ответ написан
    Комментировать
  • Фреймворки для кросс-платформенной разработки. Практикуют ли переписывание под разные платформы?

    DevMan
    @DevMan
    например тот же ксамарин.

    а вообще практика обычна - ядро пилится на одном, гуишки на нативе под платформу.
    Ответ написан
    4 комментария
  • Фреймворки для кросс-платформенной разработки. Практикуют ли переписывание под разные платформы?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Windows Forms - это только Windows, т.к. он построен вокруг нативных системных вызовов Windows. Вообще-то я однажды писал Windows Forms для Linux, но там очень много было костылей и багов, поэтому - нет, не надо.

    Что касается кросс-платформенной разработки на C#.
    Если речь идет про разработку оконных приложений, то тут 2 варианта:
    - Avalonia UI - это кросс-платформенный фреймворк, разрабатываемый сообществом (не майкрософтом), очень похож на WPF. Есть почти все платформы
    - MAUI - это новый кросс-платформенный фреймворк, разрабатываемый майкрософтом. Он довольно новый, поддерживает множество платформ (по странице документации даже Linux (GTK#)). Но он довольно сырой и по отзывам очень много багов
    - WebAssembly/Blazor - фреймворк для создания PWA, веб-приложений, но можно и для мобильных приложений
    Ответ написан
    3 комментария
  • Журналируется ли инфа о том кто/что удалил(о) файлы с usb-диска? Если- да, то в каком именно журнале?

    @NortheR73
    системный инженер
    если настроена политика аудита доступа к файлам и папкам (локальная или доменная), то соответствующие события (сначала 4663, следом 4660) будут в журнале безопасности (Security)
    Ответ написан
    Комментировать
  • Сервер и ИБП - что ему надо?

    @Wexter
    Иногда на ИБП есть розетки с питанием напрямую от входа, возможно вы подключили сервер именно в них
    Ответ написан
    5 комментариев
  • Почему иногда не включается компьютер?

    @tifco
    Как-то был системник с мамой от Гигабайт, там кондеры повздувались, электролиты, что рядом с процом. По питанию или как - не знаю для чего они там стояли.
    Суть в том, что комп включался с первого раз только в том случае, если дежурка была включена. Т. е. не было полного обесточивания от сети электропитания. А именно, сетевой фильтр не выключался.
    Если же выключить сетевой фильтр, полностью обесточить комп, пройдет пара минут, все остатки в электролитических кондерах разрядятся и выключатся все управляющие цепи (дежурные или какие там еще бывают), то, после подачи питания, и первой попытки запустить это чудо, оно не стартует: просто наблюдается черный экран, кулера гудят как бешеные и все, тишина, ни намека на прохождение POST, никаких биканий, ошибок старта и т.п. А вот после резета, он уже спокойно стартует. Также стартует сразу он в случае наличия дежурки, не отключения сетевого фильтра.
    Не знаю, та же бадяга у вас или нет. Но что-то похожее. Вот у меня лично было так. Быть может, стоило заменить эти копеечные пару кондеров на маме и все бы нормализовалось. Не знаю. Я как-то не парился, жил так. А потом и вовсе пришло время менять комп на новый.
    Тут жешь явно что-то с питанием. Толи блок питания галит. Толи у мамы проблемы. В моем случае, "высохшие электролиты" были видны сразу. На что и грешил. Жить с этим можно. Хоть и неприятно малость. Если проблема ерундовая, исправляется дешево и быстро, то почему сервисы не берутся - вопрос. Это ж не проц перекатать, не мосты. Всего пару кондеров - ерундовая пайка.
    Ответ написан
    2 комментария
  • WPF Как управлять элементом из другого окно?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    xaml лишь язык разметки..
    все элементы доступны в коде...
    почти как в winforms..
    MSDN в помощь
    Ответ написан
    Комментировать
  • Из-за чего ошибка?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Нет такого метода .Enable()
    Ответ написан
    3 комментария