Qt, libfcgi и многопоточность
Для создания приложений FastCGI на C/C++ есть библиотека libfcgi. Не буду вдаваться в дискуссию, зачем нужны приложения FastCGI на C/C++/подставить нужный язык, когда Python/PHP/Perl/подставить нужное гораздо удобнее. Отмечу лишь, что по работе понадобилось написать FastCGI-приложение на Qt (в основном из-за наличия нескольких высокопроизводительных библиотек, написанных на Qt, но не суть).
Строго говоря, libfcgi, хотя и является официальной библиотекой от создателей протокола, не лучший вариант для поддержки FastCGI — API, предоставляемое библиотекой, сильно ограничено (в плане функциональности) и недостаточно гибко. Далее »
Автор: Vladimir, опубликовано в: Qt, комментариев: 2Янв
2012
HTML Parser для Qt
XML — это, конечно, хорошо, но очень часто требуется разбирать документы HTML, которые могут и не быть валидными.
В Qt есть множество классов для работы с XML, но они не подходят для HTML, так как ошибки в HTML для них фатальны.
Ниже приведён вариант парсера для HTML, основанный на библиотеке libxml2. Далее »
Автор: Vladimir, опубликовано в: Qt, комментариев: 4Сен
2011
Пример рабочей реализации QDomDocument::elementById
Так сложилось, что в Qt реализация метода QDomDocument::elementById() нерабочая: при попытке использования данного метода выдаётся предупреждение elementById() is not implemented and will always return a null node и возвращается пустой элемент DOM.
Временами это очень неудобно: например, вместо использования XPath из QXmlPatterns может быть проще получить элемент DOM по его id и пройтись по его потомкам. А при использовании XPath функцию id() использовать не получится в силу тех же причин. Далее »
Мар
2011
Cannot mix incompatible Qt libraries
В последнее время на разных Ubuntu Intrepid Ibex я стал довольно часто сталкиваться с ошибкой
Очень сильно этим грешит Skype. Но в последнее время такая проблема стала возникать для приложений KDE4.
Данная ошибка, как правило, вызывается одной из следующих причин:
- В системе установлены библиотеки Qt разных версий. Проверяется это очень просто:
[-]View Code Bashdpkg -l | grep qt | grep -r "^[ih]"
Если в выдаче присутствуют библиотеки разных версий (третья колонка), значит, именно это вызвало проблему. Удаление старых библиотек, как правило, решает проблему.
В этом случае, например, конфликта нет:
[-]View Code (Unknown Language)Тем не менее, если ошибка всё еще выдаётся, переходим к пункту 2.ii libqt4-dbus 4.4.2-0ubuntu2 Qt 4 D-Bus module
ii libqt4-designer 4.4.2-0ubuntu2 Qt 4 designer module
ii libqt4-network 4.4.2-0ubuntu2 Qt 4 network module
ii libqt4-opengl 4.4.2-0ubuntu2 Qt 4 OpenGL module
ii libqt4-qt3support 4.4.2-0ubuntu2 Qt 3 compatibility library for Qt 4
ii libqt4-script 4.4.2-0ubuntu2 Qt 4 script module
ii libqt4-sql 4.4.2-0ubuntu2 Qt 4 SQL module
ii libqt4-svg 4.4.2-0ubuntu2 Qt 4 SVG module
ii libqt4-xml 4.4.2-0ubuntu2 Qt 4 XML module
ii libqtcore4 4.4.2-0ubuntu2 Qt 4 core module
ii libqtgui4 4.4.2-0ubuntu2 Qt 4 GUI module
ii libstrigiqtdbusclient0 0.5.11-1 library for writing D-Bus clients for Strigi Desktop Se
ii qt4-qtconfig 4.4.2-0ubuntu2 Qt 4 configuration tool - Если используется 64-битная платформа, проблема может возникать из-за того, что загрузчик пытается использовать 32-битные библиотеки. Определить это можно при помощи
ldd.Например,
[-]View Code Bashldd /usr/bin/ktorrent | grep '/lib32/'
# libQtDBus.so.4 => /lib32/libQtDBus.so.4 (0x00007f191cce7000)В данном случае при загрузке libQtDBus загрузчик будет загружать её 32-битную версию (из
/lib32) вместо 64-битной (из/lib).Я использую следующее решение (оно не идеальное, но работает):
[-]View Code Bashsudo -i
echo /lib32 > /etc/ld.so.conf.d/libQtDBus32.conf
echo /usr/lib > /etc/ld.so.conf.d/libQtDBus64.conf
ldconfig - Наконец, если подобная проблема возникает при использовании Skype на 64-битной платформе, то проще всего скачать static version. Очень сильно экономит нервы
Окт
2008

Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.

