Задать вопрос
  • Как реализовать фоновый режим приложения в windows?

    @rPman
    Если нужно делать это при запущенном приложении, то делай это с помощью таймеров, а работу делать как в текущем потоке (например асинхронно) так и использовать ThreadPool

    Если речь об организации запуска задачи вне запущенного приложения, то нужно использовать средства операционной системы, для windows это task scheduler, можно настраивать вручную а можно использовать командную строку или powershell или использовать старый COM Scheduler.Service (есть готовый NuGet пакет Microsoft.Win32.TaskScheduler)
    Ответ написан
    Комментировать
  • Как реализовать фоновый режим приложения в windows?

    Steel_Balls
    @Steel_Balls
    Возможных вариантов бесконечно много. Начиная от Python-скриптов, запущенных через cmd, и заканчивая Windows Service, которые работают в фоне и сами запускаютя после рестарта винды
    Ответ написан
    Комментировать
  • Как реализовать фоновый режим приложения в windows?

    @NortheR73
    системный инженер
    Task Scheduler и задача по расписанию...
    Ответ написан
    Комментировать
  • Когда передавать копию callable, а когда через rvalue reference?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    В дизайне интерфейса можно передавать и копию и rvalue refernce. Что выбрать - решать вам, как создателю интерфейса. Если у вас предполагаются использование функций/лямбд без тяжелого состояния (связанные аргументы по значению), то копирование дешевое и не надо его вводить. rvalue reference всегда дешево, но у вас нельзя будет переиспользовать предикат между разными вызовами.

    В функциях из algorithm используется передача по значению, что бы не ограничивать пользователя. Вы можете один раз написать нужный вам предикат и передавать его во все вызовы. Плюс исторически так сложилось. Когда оно все созадавалось, никаких rvalue reference и не было. Потом их добавлять и не стали, потому что в самом частом случае, если лямбду прямо в аргументах задавать, то она практически бесплатно передастся.

    Там не используется передача по ссылке (lvalue reference), потому что это не так универсально в шаблоне. Если у вас какой-то const предикат, вы его в reference не передадите. А делать const & в интерфейсе нельзя, вдруг у вас предикат не константный?

    И, если вы все-таки хотите передать ссылку, то можно передать std::ref(pred), тогда в шаблоне выведется передача по ссылке.
    Ответ написан
    Комментировать
  • Произойдет ли сортировка отфильтрованных элементов или наборот?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Объект, который вернет IEnumerable.OrderBy, сначала выберет всё, что вернет Where, а потом это отсортирует. Произойдет это в момент, когда будет вызван его метод GetEnumerator - напрямую или как часть реализации оператора foreach и т.п. - в этом и состоит его отложенное выполнение.

    Вообще, методы LINQ, которые выполняются в отложенном реэиме, делятся, в свою очередь на две группы: работающие в потоком режиме (потоковые, streaming execution) - они обрабатывают каждый элемент входной последовательности по отдельности и сразу по получении - и не-потоковые, работающие с последовательностью как целым.
    Where относится к первой группе, OrderBy - ко второй.
    Ответ написан
    Комментировать
  • На чем лучше реализовать фоновую задачу в браузере?

    @cicatrix
    было бы большой ошибкой думать
    Background Service - правильный вариант.
    Условия его работы и тех действий, которые надо выполнить можно настроить
    Ответ написан
    Комментировать
  • Почему без std::remove_reference_t не работает?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Вообще, не вижу противоречия. У вас же там tfunc&&, его вы пытаетесь к void* привести и к нему применяете remove reference.

    Попробуйте в ваш static assert добавить std::move и он обвалится.
    Ответ написан
    Комментировать
  • Можно ли написать template deduction guide только для второго аргумента?

    @Mercury13
    Программист на «си с крестами» и не только
    Пока получилось через функцию.

    #include <utility>
    #include <iostream>
    
    class Cursor {
    public:
        Cursor(int aShape) noexcept : fShape(aShape) {}
        int shape() const noexcept { return fShape; }
    private:
        int fShape;
    };
    
    template <typename T, typename TFactory>
    class Lazy {
    public:
        Lazy(TFactory&& x) : factory(std::move(x)) {}
        Lazy(const TFactory& x) : factory(x) {}
        T operator()() const { return factory(); }
    private:
        mutable TFactory factory;
    };
    
    template <typename T, typename TFactory>
    inline auto lazy(TFactory&& factory)
    {
        return Lazy<T, std::decay_t<TFactory>>(std::forward<TFactory>(factory));
    }
    
    int main()
    {
        auto arrow = lazy<Cursor>([] { return Cursor(42); } );
        std::cout << arrow().shape() << '\n';
        return 0;
    }


    Может, шаблонного полиморфизма вам хватит, но я бы довольно быстро прикрутил виртуальный полиморфизм.
    Ответ написан
    Комментировать
  • Почему в c++ еще нету Null-Conditional Operator?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Это не достаточно частая операция в С++, чтобы срочно надо было вводить новый оператор в синтаксис. Комитет занят более интересными вещами на годы вперед.
    Ответ написан
    3 комментария
  • Почему в c++ еще нету Null-Conditional Operator?

    @Furax
    Используйте метод and_then, он как раз для этого.
    Ответ написан
    Комментировать
  • Можно ли не указывать полный путь до ресурса в другом проекте?

    MDiMaI666
    @MDiMaI666
    Талантливый программист
    - Написать свой img2 и тянуть оттуда надо
    - настроить сборку так чтобы он скопировал в запускаемый проект
    -закинуть файлы в ресурсы resx
    Ответ написан
    1 комментарий
  • Почему не запускается WebAssembly PWA страница?

    Fragster
    @Fragster
    помогло? отметь решением!
    Судя по ошибке надо сделать простейшую публикацию на веб сервере а не запускать как файл. Да, придется разогнать IIS, apache или nginx (я на винде использую IIS, ибо проще всего, но кому-то может быть проще apache в составе чего-то типа wampserver).
    Ответ написан
    2 комментария
  • Можно ли сделать концепт для функции у которой return value auto?

    @Acaunt
    template<class T>
    concept is_exist_metod = requires(T t, std::string_view name) {
        t.GetMember(name);
    };
    Ответ написан
    Комментировать
  • Можно ли в шаблоне через requires ограничить не typename?

    @maksam07
    template<size_t Number> 
    requires (Number <= 1000)
    class MyClass { };
    Ответ написан
    Комментировать
  • Почему может не заходить в обработчик таймер [STM32]?

    @AiR_WiZArD
    0) Где код?
    1) Настолько ли важно замеры проводить с помощью АЦП? Может простейший ФВЧ + компаратор + таймер в режиме input capture? Это проще с программной точки зрения, а рассыпуха копейки стоит
    2) Какие параметры АЦП? Какая частота АЦП, время семплирования, используется ли прерывание по окончании, или блокирующая функция в прерывании?
    3) Правильно ли я понял - вызывается обработчик 3 таймера? Если так, то другой вопрос - зачем? TIM3_TRGO может напрямую запускать преобразование
    4) DMA? Да! И ещё раз - да!
    5) Не понял, зачем тут упомянут TIM2 - если он используется для других задач, стоит выключить на время отладки АЦП, что бы не мешал.
    6) "Симуляцию произвожу в proteus" - не надо, отлаживать надо на реальном железе, симуляторы в таком виде не используются, только изредка qemu для юнит тестов
    7) "Это он не может так быстро обработать" - если симулятор не может обрабатывать в реальном времени, она начинает обрабатывать не в реальном времени, но на логику кода это никак не влияет, просто занимает больше времени.
    8) 8МГц это мало, если нет гонки за каждым миллиампером (в таком случае F1 выкидывается, ставится L0/L1), лучше выставить максимальную частоту (72МГц)
    Ответ написан
    6 комментариев
  • Возможно ли проверить является ли T std::function?

    @Acaunt
    Если правильно понял вопрос, то можно сделать так:
    Пример
    #include <iostream>
    #include <functional>
    
    template<class T>
    struct is_function {
        constexpr static bool value = false;
    };
    
    template<class T>
    struct is_function<std::function<T>> {
        constexpr static bool value = true;
    };
    
    template<class T>
    constexpr static bool is_function_v = is_function<T>::value;
    
    template<class T>
    void check(T t) {
        if constexpr (is_function_v<T>) {
            std::cout << "is std::function" << std::endl;
        }
        else {
            std::cout << "is not std::function" << std::endl;
        }
    }
    
    void f2() {}
    
    int main() {
        std::function f1 = [](){};
        std::function f3 = f2;
        check(f1); // is std::function
        check(f2); // is not std::function
        check(f3); // is std::function
        
        return 0;
    }
    Ответ написан
    Комментировать
  • Можно ли иначе скопировать значение указателя?

    maaGames
    @maaGames
    Погроммирую программы
    Добавь в IProperty чисто-виртуальную функцию Copy. А дальше уже каждый конкретный класс себя будет уметь копировать.
    Ответ написан
    Комментировать
  • Ошибка в вариативном шаблоне. Что не так?

    @Mercury13
    Программист на «си с крестами» и не только
    #include <iostream>
    #include <string>
    
    struct T {
        int x;
        std::string y;
    };
    
    T Deserialize(std::istream& stream, auto T::*... properties)
    {
        T object = {};
        auto FillObject = [&object, &stream] (auto property)
        {
            stream >> object.*property;
        };
    
        (FillObject(properties), ...);
        return object;
    };
    
    int main()
    {
        T r = Deserialize(std::cin, &T::x, &T::y);
        std::cout << "<" << r.x << "> <" << r.y << ">" "\n";
        return 0;
    }

    Что сделано: исправлен вызов FillObject (важно), уточнён тип properties (лучше).
    Ответ написан
    Комментировать
  • Используются ли контекстные меню в играх?

    GavriKos
    @GavriKos Куратор тега Разработка игр
    Да, есть игры с контекстым меню (в цезаре вроде было, в сеттлерсе, ну и наверняка в каких нить ММО легко найдется), есьт разновидность контекстного меню - радиальное меню (невервинтер)
    Ответ написан
    Комментировать
  • Используются ли контекстные меню в играх?

    @Mercury13
    Программист на «си с крестами» и не только
    По правой кнопке не помню, хотя вроде бывают.
    При щелчке показываются иконки вокруг, например, в Incredible Machine. Или во многих квестах. Или в Fallout 1/2.

    Что контекстному меню мешает.

    1. Плохая раскрываемость (discoverability, возможность найти всё это тыком и интуицией). Игры всё-таки должны собирать большую публику необученных пользователей, верно? Я когда-то учил одну даму ходить по Witness (у неё FPS-управление, но никакой реакции не нужно) — так и не смог. Сам прошёл с большим удовольствием, хотя посторонних головоломок нашёл от силы половину.

    Опытный пользователь рабочих программ просто привык — и то, например, в редакторе Unreal Tournament есть одно очень подлое контекстное меню, которое хрен раскроешь (на заголовке каждого из четырёх видов: спереди, сверху, слева, в перспективе).

    В том же Fallout 1/2 есть команда «оттолкнуть» — неписи ходят по своим делам, и если он загородил нужный проход и никуды, приходится на него действовать этой командой. Понятна только через инструкцию.

    2. Нежелание превращать игру в рабочую программу. Чем дальше интерфейс игры от программы, тем лучше иллюзия. Некоторые авторы — сейчас, правда, это сложно, с управлением из шести осей и десяти кнопок — вообще не делают интерфейса. Хоть «↑ = зайти» да и делают даже в играх вроде Braid и Fez.

    3. Если объект подвижный, бывают глюки, когда ты щёлкнул на него, а он ушёл или даже погиб. Если статус-панель опустела, пока мы нажимаем, мы жмём в никуда. Если меню исчезло — жмём куда-то на игровом поле. Подобное больше годится для чего-то неподвижного и прочного.

    4. Теряется правая кнопка мыши. У опытного игрока, который использует всю клавиатуру и даже больше, вдруг отбирают одну кнопку.

    5. Опять-таки раскрываемость — если есть команда, скажем, «патрулировать», не очень понятно, что кнопка P действует, даже если контекстное меню не раскрывать.

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

    7. А если ещё важно заранее раскрыть и момент улучить — меню мешать будет.

    В общем, контекстное меню может пригодиться, но, во-первых, в интерфейсе, а не на игровом поле. Ну или в медленной игре, где игровое поле мало чем отличается от интерфейса. А во-вторых, оно по определению дублирует команды, а если в игре их немного (иначе хрен этой игре обучишься), ничего не стоит вывалить их все другим методом. А те игры, которые делают доступ ТОЛЬКО через контекстное меню — ну, учитесь у Fallout 1/2 и Incredible Machine.

    UPD. Вспомнил. В Mafia и некоторых частях Hitman, если действий вокруг много, по кнопке «Действие» выводит меню: что выбираешь?
    Ответ написан
    Комментировать