MYCSS

2016-06-18

Qt контрольована робота QRunnable, QThread, QThreadPool, на прикладі QWebSocket

За допомогою статті можна зробити контрольовану роботу QRunnable та QThreadPool у Qt.
Тобто передати результати роботу зовнішньому СЛОТУ.
Через симуляцію connect:
QMetaObject::invokeMethod(receiver, "updateProgressBar",
                                      Qt::QueuedConnection,
                                      Q_ARG(int, pFinished));


How to report progress and abort a long running operation with QRunnable and QThreadPool

P.S. Не забуваємо про попереднє використання qRegisterMetaType.
на кшталт 
qRegisterMetaType<QWebSocket*>(); 

2016-06-10

Ubuntu 16.04 віддалене підключення до робочого столу через x11vnc

Стала задача підключитися до віддаленого сервера під керуванням OS Ubuntu 16.04. Але потрібен був доступ не до віртуальних vnc сесій, а до реального робочого столу X11, з доступом до OpenGL ресурсів реальної відео карти.

 

 

Служба x11vnc

Реалізувати це можна за допомогою пакету x11vnc. Цей пакет копіює буфер екрану і передає до сервера vnc. А клієнт вже підключається до vnc сервера, за допомогою стандартних vnc клієнтів.
Програма повинна запускатися після запуску X11 сервера, і тому як зробити запуск x11vnc автоматичний у системі Ubuntu 16.04 описано у публікації: Ubuntu 16.04 – Configure your system to have x11vnc running at startup я протестував і це дійсно працює.
Основа це скрипт vnc-startup.sh.
Спочатку іде етап встановлення Spep 1, потім, Step 2, створення паролю за допомогою якого ми будемо підключатися до vnc сесії. Step 3 - віртуальне створення Service Unit File - /lib/systemd/system/x11vnc.service.

Розповсюдження готових програм створених за допомогою Qt у Ubuntu

Нова нотатка для себе.
Після компіляції програми у середовищі Qt  5.6 з використанням операційної системи Ubuntu 16.04 x64, стала задача перемістити програму на інший комп'ютер споживача, а не розробника.
Головна проблема що створити статичний файл програми не вийде у безкоштовній версії Qt, або може так я зрозумів. Для цього потрібно мати статично скомпільовану версію Qt. Тема про створення програм описана у документації Qt for Linux/X11 - Deployment.
Для роботи виконавчого файлу програми знадобляться динамічно завантажувальні бібліотеки. І головна задача зібрати усі бібліотеки що потрібні для роботи програми, на допомогу цьому прийде програма ldd (List Dynamic Dependencies). Вона покаже залежність, наприклад:
ldd ./Player 
 libesets_pac.so => /usr/lib/libesets_pac.so (0x00007f663b5ff000)
 libQtAV.so.1 => /home/lex/project-C/build/.../lib_linux_x86_64/libQtAV.so.1 (0x00007f663b221000)
 libQtAVWidgets.so.1 => /home/lex/project-C/build/.../libQtAVWidgets.so.1 (0x00007f663aff9000)
 libQt5Widgets.so.5 => /home/lex/Qt5.6.0/5.6/gcc_64/lib/libQt5Widgets.so.5 (0x00007f663a787000)
 libQt5Gui.so.5 => /home/lex/Qt5.6.0/5.6/gcc_64/lib/libQt5Gui.so.5 (0x00007f6639f8f000)
 libQt5Sql.so.5 => /home/lex/Qt5.6.0/5.6/gcc_64/lib/libQt5Sql.so.5 (0x00007f6639d4b000)
 libQt5Core.so.5 => /home/lex/Qt5.6.0/5.6/gcc_64/lib/libQt5Core.so.5 (0x00007f6639639000)
 libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f66392b6000)
...  

Коли забув ти рідну мову, біднієш духом ти щодня...
When you forgot your native language you would become a poor at spirit every day ...

Д.Білоус / D.Bilous
Рабів до раю не пускають. Будь вільним!

ipv6 ready