Ответы пользователя по тегу C++
  • Есть ли кроссплатформенный (десктопы) способ предотвратить засыпание компьютера?

    Obukhoff
    @Obukhoff
    Программист С++
    Кроссплатформенного полагаю способа нет
    Вот пример для винды:

    //--------------------------------------------------------------------------------
    void ISysUtils::displayOn(bool aOn)
    {
    	enum {
    		DISPLAY_ON = -1,
    		DISPLAY_OFF = 2
    	};
    
    	if (aOn)
    	{
    		PostMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, DISPLAY_ON);
    		
    		// имитируем дёргание мышки для включения монитора в Windows 8
    		INPUT input;
    		SecureZeroMemory(&input, sizeof(input));
    		input.type = INPUT_MOUSE;
    		input.mi.dy = 1;
    		input.mi.dwFlags = MOUSEEVENTF_MOVE;
    
    		SendInput(1, &input, sizeof(input));
    		SleepEx(40, TRUE);
    
    		input.mi.dy = -1;
    		SendInput(1, &input, sizeof(input));
    	}
    	else
    	{
    		PostMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, DISPLAY_OFF);
    	}
    }
    Ответ написан
    Комментировать
  • Бесконечный цикл в Qthead, как сделать правильно?

    Obukhoff
    @Obukhoff
    Программист С++
    Для постоянного цикла вам лучше реализовать слот, который будет постоянно вызываться в конце самого себя:

    test.h:
    private slots:
       void workMethod();

    test.cpp:
    void Class:workMethod()
    {
         ....
        QMetaObject::invokeMethod(this, "workMethod", Qt::QueuedConnection);
    }

    Тогда ваш метод будет выполнять каждую итерацию под управлением очереди сообщений и в любой момент вы можете остановить поток.
    Ответ написан
    2 комментария
  • При соотношении сторон отличном от 4:3 изображение при конвертации из IplImage в QImage искажается. Как исправить код?

    Obukhoff
    @Obukhoff
    Программист С++
    Моё подозрение что opencv хранит строку пикселей с выравниванием по некоторому размеру буфера.
    При преобразования хвост строки пикселов залезает на следующую строку и получается что каждая последующая строка уезжает на пиксель/другой.
    Ответ написан
    Комментировать
  • Шифрование базы SQLite3

    Obukhoff
    @Obukhoff
    Программист С++
    С помощью функции вы сможете зашифровать только отдельные поля в БД.
    Причём придется эту функцию вставлять во все запросы, использующие шифрованные поля. Не очень удобно.

    Правда с шифрованием всей БД есть свои минусы:
    — накладные расходы на шифрование всякой служебной информации (можно было бы и не делать)
    — в случае повреждения БД всю базу можно выкинуть.

    Но в моём случае эти минусы не существенны.
    Ответ написан
    Комментировать
  • Шифрование базы SQLite3

    Obukhoff
    @Obukhoff
    Программист С++
    Поскольку на библиотеки деньги в нашей конторе выбить нереально, то реализовывал свой велосипед с шифрованием посредством vfs.
    Использовал постраничное RCA шифрование. Ключ генерил на лету на основании кодовой фразы.
    Внутри vfs шифрование осуществляется всех страниц, кроме первой. Т.к. к ней движок sqlite обращается очень часто для блокировки/разблокировки файла базы.
    Потом уже дописывал исключение для журнальных файлов, мне их шифровать незачем.

    Если руки не кривые — работы 2 дня + тесты автоматизировать под вашу задачу.
    У меня БД не нагруженная и общая производительность приложения упала в пределах погрешностей измерения.

    З.Ы. И еще — для детектирования что БД зашифрована на первой странице файла БД вставляю метку в неиспользуемую часть заголовка базы.
    Ответ написан
    1 комментарий