18 червня 2016 р.

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*>(); 

10 червня 2016 р.

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