Имеется l2tp vpn, в систему «заводится» через network manager, при включении начинает через впн ходить вся система - как включать впн только для конкретного приложения\ий? ОСь арч, ядро свежее, стоит aur/networkmanager-l2tp.
Нашел статью на хабре (https://habr.com/ru/post/310646/), но она под опенвпн, а знакомый говорит что под l2tp не подойдет " L2TP, если мне не изменяет память, работает в kernel space, просто так в netns ты его не поднимешь"
Что еще попробовать?
Имеется класс со слотом, выполняющим некоторую работу, по окончанию которой должен испуститься сигнал с результатом:
class Worker : public QObject
{
Q_OBJECT
public:
// ...
bool isWorking();
signals:
void resultReady(int);
public slots:
void doWork() {
{
QMutexLocker locker(&isWorkingLock_);
isWorking_ = true;
}
// ...
emit resulReady(res);
{
QMutexLocker locker(&isWorkingLock_);
isWorking_ = false;
}
}
private:
bool isWorking_ {false};
QMutex isWorkingLock_;
};
worker_ типа Worker прикреплен к потоку и запускает работу doWork() по таймеру:
workerThread_.setPriority(QThread::LowestPriority);
worker_->moveToThread(&workerThread_);
connect(workerTimer_, &QTimer::timeout, worker_, &Worker::doWork);
Остановка worker_ выполняется путем остановки таймера. Но, после выключения таймера некоторое время dT работа doWork() продолжается (похоже, что извлекаются сигналы, накопленные в events queue).
Как снизить время dT до нуля. Можно ли реализовать в рамках С++/Qt какую-то из идей:
1. сигнал timeout испускать при условии, что worker_.isWorking() вернул false?
2. очистить events queue?
Если можно, то как? Может какие-то другие решения существуют.
Имеется класс со слотом, выполняющим некоторую работу, по окончанию которой должен испуститься сигнал с результатом:
class Worker : public QObject
{
Q_OBJECT
public:
// ...
bool isWorking();
signals:
void resultReady(int);
public slots:
void doWork() {
{
QMutexLocker locker(&isWorkingLock_);
isWorking_ = true;
}
// ...
emit resulReady(res);
{
QMutexLocker locker(&isWorkingLock_);
isWorking_ = false;
}
}
private:
bool isWorking_ {false};
QMutex isWorkingLock_;
};
worker_ типа Worker прикреплен к потоку и запускает работу doWork() по таймеру:
workerThread_.setPriority(QThread::LowestPriority);
worker_->moveToThread(&workerThread_);
connect(workerTimer_, &QTimer::timeout, worker_, &Worker::doWork);
Остановка worker_ выполняется путем остановки таймера. Но, после выключения таймера некоторое время dT работа doWork() продолжается (похоже, что извлекаются сигналы, накопленные в events queue).
Как снизить время dT до нуля. Можно ли реализовать в рамках С++/Qt какую-то из идей:
1. сигнал timeout испускать при условии, что worker_.isWorking() вернул false?
2. очистить events queue?
Если можно, то как? Может какие-то другие решения существуют.
Гугл завален инструкциями с переадресацией stderr в stdout и использованием popen. Адекватного описания как сделать то, что мне надо не нашел. Такая задача никогда передо мной не вставала, поэтому прошу пояснить, как сделать то, что мне надо.
Что мне надо:
- Запустить заданную программу с аргументами
- По ее завершению прочитать весь её stdout и stderr отдельно
Переадресовать их в физические файлы и потом их прочитать нельзя - саму команду редактировать нельзя (там могут быть и редиректы и всё прочее), нужно только актуально то, что она выплюнула в out/err.
Вангую что тут надо как-то совокупить dup2, exec а потом вычитать через fgets. Но чот оно у меня не стыкуется.
Кто может направить в правильную сторону?
Гугл завален инструкциями с переадресацией stderr в stdout и использованием popen. Адекватного описания как сделать то, что мне надо не нашел. Такая задача никогда передо мной не вставала, поэтому прошу пояснить, как сделать то, что мне надо.
Что мне надо:
- Запустить заданную программу с аргументами
- По ее завершению прочитать весь её stdout и stderr отдельно
Переадресовать их в физические файлы и потом их прочитать нельзя - саму команду редактировать нельзя (там могут быть и редиректы и всё прочее), нужно только актуально то, что она выплюнула в out/err.
Вангую что тут надо как-то совокупить dup2, exec а потом вычитать через fgets. Но чот оно у меня не стыкуется.
Кто может направить в правильную сторону?
Почти неделю назад увидел на Ютубе в видеоблоге, и до сих пор мучаюсь вопросом.
Где-то в Нью-Йорке, фасадом на Wadsworth Terrace тылом на Fairview Avenue стоят вот такие дома: https://i.ytimg.com/vi/ZDWi46DqfEg/hqdefault.jpg (вид с тыла). В 1920-х годах на крутом склоне возвели стальные фермы. С уровня проходившей по склону улицы и выше облицевали фермы в полкирпича и получили типовые 6-этажные дома. (Строго говоря, нижний этаж — под уровнем улицы, и с фасада дом выглядит 5-этажным.) А пространство под домами осталось неиспользуемым.
Вопрос: учитывая ценность земли в этих местах, 4 этажа пустоты площадью в пол-дома — расточительство; почему их не использовали под квартиры или нежилые помещения? Кто-нибудь знаком с историей подобной архитектуры?
Не хватает так называемого score для участия в Talks. Попасть в этот раздел для меня жизненно важно, так как я единственный на Лоре, у кого есть мозги и какая-никакая эрудиция. Не могли бы модераторы мне посодействовать в этом начинании. Заранее благодарен.
Предлагаю себя в модераторы, особых намерений нет, разве что иногда поудалять откровенно клоунские и кормёжные комментарии ну и ещё по крайней мере если придёт калиюзер то сможете закрыть тред на ТС и модераторы и прокастовать меня туда для воспитательной работы.
Заголовок именно такой, потому что я не опознал растение на обоях.
От скуки представляю вашему вниманию то рабочее место на которое я смотрю и которым пользуюсь последние два месяца. Самое примечательное здесь — это нижняя полоса рабочих столов. Обычно я переключаюсь ctrl+super+left:right, но когда рука на мыши, то колёсиком, указывая на низ экрана. Для меня это безумно удобно.
Железо старое, все то же одно ядро, два гига. Под ногами два ядра, два гига с Debian Testing на борту и файловым DLNA сервером направленым на SmartTV. Для разработки я подключаюсь к нему через TRAMP в emacs, и пользуюсь его ресурсами для lsp или сборки.
UPD: если кому-то покажется потребление чрезмерным, то могу возразить. Со старта обычно система занимает 180мб. Потребление обычно обусловлено множеством вкладок в браузере Chromium. Когда мне не требуется js для чтения документации, то я пользуюсь elinks, что в разы экономит мне свободную память.
>>> Просмотр
(1920x1080,
3083 Kb)
У меня есть несколько C++ проектов, связанных друг с другом. Код располагается примерно так:
/main/src
/idk/src
/device_module/device1/src
/device_module/device50/src
/control_panel/src
/logging/src
...
/doxygen_documentation <-- Здесь Doxyfile, здесь запускаю Doxygen
Мне нужно сгенерировать документацию так, чтобы на титульной странице были ссылки на проекты, и на страницах проектов был перечень только тех классов, которые относятся к текущему проекту.
Другими словами, нужно, чтобы была общая страница с перечнем проектов, и для каждого проекта была своя титульная страница, взятая из файла readme.md соответствующего src-каталога, а перечень классов данного проекта была на вкладке «Классы».
Как нужно расписать Doxyfile, чтобы получить такую организацию документации?
Сейчас у меня опции прописаны так:
INPUT = . \
../main/src \
../idk/src \
../device_module/device1/src \
../device_module/device50/src \
../control_panel/src \
../logging/src
SEPARATE_MEMBER_PAGES=YES
С такими опциями я смог добиться того, что документация генерируется в виде начальной общей страницы, взятой из файла /main/src/readme.md, в котором прописана команда @mainpage. Есть вкладка «Описания», в которую попадают md-файлы из подкаталогов, так как в них прописана команда @page.
Но если открыть вкладку «Классы», то там будут вперемешку перечислены все классы без разбивки на проекты. Вот это и нужно исправить.
Я так понял, что вся настройка через конфигфайл? Или есть простое ГУИ решение?
Подскажите как добавить\удалить программы в системный трэй?
Я так понял, что вся настройка через конфигфайл? Или есть простое ГУИ решение?
Подскажите как добавить\удалить программы в системный трэй?
Всем доброго дня! Несколько недель назад Gmail отказался меня впускать. Пользовался им с начала нулевых и проблем не было, но в конце апреля доступ был заблокирован. Как потом выяснилось, провайдер сменил IP-адреса для нашего района, и Google меня больше не признает.
Единственная возможность войти - ответить на секретный вопрос, который давно забыт. Нет даже опции отправить смс на телефон.
В почте много нужной инфы по работе и переписок с клиентами. Это принесло мне чудовищные проблемы и убытки. Не знаю что делать.
Всем доброго дня! Несколько недель назад Gmail отказался меня впускать. Пользовался им с начала нулевых и проблем не было, но в конце апреля доступ был заблокирован. Как потом выяснилось, провайдер сменил IP-адреса для нашего района, и Google меня больше не признает.
Единственная возможность войти - ответить на секретный вопрос, который давно забыт. Нет даже опции отправить смс на телефон.
В почте много нужной инфы по работе и переписок с клиентами. Это принесло мне чудовищные проблемы и убытки. Не знаю что делать.
Не могу войти в систему, сегодня включил ноут, какое-то необычное окно с маленьким окошком где был мой логон и строка для ввода пароля, ввёл и дальше окно, какое бывает перед запуском:
Linux Mint 19.3 Tricia (мой логин) tty1 - это первая строка
(мой логин) login: _ маргает - это вторая строка
Не могу войти в систему, сегодня включил ноут, какое-то необычное окно с маленьким окошком где был мой логон и строка для ввода пароля, ввёл и дальше окно, какое бывает перед запуском:
Linux Mint 19.3 Tricia (мой логин) tty1 - это первая строка
(мой логин) login: _ маргает - это вторая строка
Наша медицинская организация получила регистратор выбытия. Нужно пробросить порт на него чтобы программа Паруса видела его извне. Портсканом просмотрел открытые порты (есть 53, 3128), но все равно не робит… Шлюз на дебиане 8, бодаюсь с iptables v1.4.21…
Вводил команды по шаблону на http://sys.dmitrow.com/sys/node/41, там тире заменил на двойные дефисы шоп проглатывало…
Внешний наш статический айпи будем здесь писать как «внешний».
РВ на вай-фае адрес 192.168.123.6:8080
Наша медицинская организация получила регистратор выбытия. Нужно пробросить порт на него чтобы программа Паруса видела его извне. Портсканом просмотрел открытые порты (есть 53, 3128), но все равно не робит… Шлюз на дебиане 8, бодаюсь с iptables v1.4.21…
Вводил команды по шаблону на http://sys.dmitrow.com/sys/node/41, там тире заменил на двойные дефисы шоп проглатывало…
Внешний наш статический айпи будем здесь писать как «внешний».
РВ на вай-фае адрес 192.168.123.6:8080
Собственно ищу данный сабж, ищу довольно давно и без особой надежды найти. Нужна именно СДК (файлы включения, документация по API etc), а не сам голосовой движок (его найти не проблема).
Я в курсе, что синтезатор SAPI4-совместимый, но нужна именно его API, без дополнительных лейеров и прокладок.
Возможные имена файлов включения
ttssdk32.h
lhtypes.h
Возможные имена функций
TtsInitialize
TtsUninitialize
TtsSpeakText
TtsStopSpeech
TtsPauseSpeech
TtsResumeSpeech
TtsGenPcmBuf
TtsGenNextPcmBuf
TtsGenPcmFile
TtsGetSpeechMode
TtsSetSpeechMode
TtsGetFreq
TtsSetFreq
TtsLoadUsrDict
TtsUnloadUsrDict
TtsEnableUsrDict
TtsUnloadAllUsrDict
TtsGetChannelStatus
TtsGetIdentity
TtsSetCmdSymbol
TtsSetSpeedUpMode
TtsGenUsrDict
TtsGetLastErrMsg
TtsGetAppInfo
TtsGetEngineInfo
TtsSelectEngine
TtsEnableNotify
TtsSetCallback
TtsSetSystemMode
TtsStopSpeechEx
TtsPauseSpeechEx
TtsGetAboutText
TtsGetSysInfo
TtsGetUsrDictEntry
TtsUpdateUsrDictEntry
TtsGetUsrDictInfo
TtsSaveUsrDict
TtsDeleteUsrDictEntry
TtsAddUsrDictEntry
TtsGenPcmBufEx
TtsResumeSpeechEx
TtsSetEngineMode
TtsGetMrkMode
TtsSetMrkMode
TtsGenPhonString
TtsSpeakTextEx
TtsAppendText
TtsGetMrkRecords
TtsSpeakPhonString
TtsGetVisual
TtsInitGetSysInfo
TtsSelectCtxMode^^^
TtsEnableCtxMode
TtsDisableCtxMode
TtsRegUsrCtxMode
TtsGetCtxModeInfo
TtsGetVoiceInfo
TtsSelectVoice
TtsGetCtxData
TtsGetCtxModeInfoEx
TtsSelectCtxModeEx
_TtsMgrCallBack
TtsGenPhonPcmFile
TtsPlayMidiSound
TtsPauseMidiSound
TtsResumeMidiSound
TtsStopMidiSound
TtsContinueMidiSound
TtsGetVoiceInfoEx
TtsGetUsrDictList
TtsGetCurrentEngineInfo
TtsGetCurrentVoiceInfo
TtsGetCurrentCtxModeInfo
TtsGetCmdList
TtsConvString
TtsSetVoiceMode
TtsGetVoiceMode
TtsGetCurrentVoiceUuid
TtsGetVoiceUuid
DllRegisterServer
DllUnregisterServer
Основная проблема в том, что продукт родом из девяностых и соответственно никаких ссылок (если они и были) не осталось, но может быть кто-то живет на свете достаточно и располагает данной SDK. В сети нашел какие-то отдельные упоминания и обрывки кода.