[EN] Rendering DPI in Qt’s WebKit

250px-Compass_in_a_box.svg

Some time ago, I stuck on reading manuals trying to find correct and clear way to enlarge DPI of images rendered by WebKit (in Qt).

If you need to render HTML page in your Qt app, you can use widgets that use QTextDocument, such as QLabel and QTextEdit. But all of them support limited subset of HTML 4 and CSS 2.1 (Qt Project — Supported HTML Subset). But if you need to use some more complicated things (or even some typical CSS styles) excluded from that list, you should use WebKit (WebKit in Qt).

Читати далі

[EN] FIXME story

Got some complaint from customer. My program got strange and unexpected behavior in some cases. It is needed to solve that problem.

When I find that peace of code, where problem happened, I become very confused and surprised.

In that code I find next line:

// FIXME: show msg after dbmanager say OK

I’m a bit embarrassing, but in the same time proud, that wrote that FIXME, respectively, thought forward…

Сonclusion:

  • Always write lot of TODO, FIXME, WARN,... in doubtful situations.
  • Always try to decrease amount of TODO, FIXME, WARN,... by avoiding all that issues (especially, FIXME).
  • Think on architecture of software.

Fuzzy queries to relational databases [EN]

Translation of article BaseGroup Labs — Нечеткие запросы к реляционным базам данных (Nikolay Palkin)

[D R A F T]

Intro

Mechanisms of fuzzy queries (fuzzy queries, flexible queries) to relational databases are based on the Zadeh theory of
fuzzy sets, first proposed in 1984 and subsequently developed in works of Dubois, Prada.

Читати далі

Компіляція Qt 4.8 під Лінукс

Вирішив трошки “get hands dirty”. Постійно використовую Qt та QtCreator як середовище для розробки як під Windows так і під Linux.

Цього разу вирішив зібрати бібліотеку Qt з вихідних кодів.

Читати далі

Image

Надихнутий вищезагаданою картинкою (що є негласним символом журналу КоМА факультету Міжнародних відносин СНУ ім. Лесі Українки — http://goo.gl/ahi8o), і взагалі, темою лігатур http://plentyofcolour.com/2011/05/31/how-to-make-a-ligature/, задався задачею, як би можна реалізувати лігатуру тиду “знак оклику-кома”.

 

Трошки обдумавши все, реалізував це наступним чином:

  1. Описую змінну ComaLen — ширина символу “,”
    \newlength{\ComaLen}
  2. Для типової гарнітури — змінній ComaLen покладаю значення ширини символу “,”
    \settowidth{\ComaLen}{,}
  3. Друкую символ “!
  4. Засобами makebox досягаю друку коми зі зміщенням саме на необхідному місці
    makebox шириною в ширину символу “,“, в який поміщаю текст “,..” — де
    дві крапки — займають місце, проте невилимі (\phantom).

Отримав на виході: PDF-файл.

Результат можна побачити на ГітХабі — https://github.com/troyane/ComaSign.

Якщо у когось будуть кращі, чи оригінальніші пропозиції — пишіть.

Знак “знак-оклику-кома” засобами LaTeX

“Педантичні” ключі GCC

Статичний аналіз

Цікавився питаннями статичного аналізу програмного коду програм на С/С++.

Статичний аналіз програмного коду – аналіз коду програмного забезпечення, що відбувається без реального запуску програм, що досліджуються (інакше, такий аналіз називається динамічним).

Здоровий глузд і здорова логіка підказує “Якщо такі є, то чого б не використовувати доступні засоби не виходячи за межі середовища програмування?!”

Читати далі

HOWTO: Як скомпілювати динамічні бібліотеки MySQL для Qt 4.8

Параметри системи, на якій все відбувається:

  • Windows 7, x64
  • Qt 4.8.4
  • MinGW 4.4

За замовчуванням, в Qt драйвери для роботи з базою даних MySQL відсутні. Щоб переконатися в цьому можна виконати наступний код:

QStringList driverList;
driverList = QSqlDatabase::drivers();
if (!driverList.contains("QMYSQL", Qt::CaseInsensitive))
{
    qDebug() << "No QMYSQL support! Check all needed dll-files!";
} else {
    qDebug() << "QMYSQL support is avaiable.";
}

Для того, щоб зібрати необхідну для роботи бібліотеку, потрібно мати вихідні коди Qt та вихідні коди MySQL (при встановленні обох поставити галочки “Встановлювати вихідні коди”). Для Qt вихідні коди будуть знаходитися в каталозі ...\Qt\4.8.4\src\ (конкретно, нас цікавить підкаталог \src\plugins\sqldrivers\mysql\), а для MySQL те що нам потрібно — ...\MySQL\MySQL Server 5.5\include\. Ці шляхи шляхи в мене в системі були c:\Program Files (x86)\MySQL\MySQL Server 5.5\include\ (C:\PROGRA~2\MySQL\MYSQLS~1.5) та d:\Qt\4.8.4\src\plugins\sqldrivers\mysql\.

Для автоматизації збірки бібліотек, пропоную використати скрипт (.bat-файл):

set mysql=C:\PROGRA~2\MySQL\MYSQLS~1.5
cd d:\Qt\4.8.4\src\plugins\sqldrivers\mysql\
qmake "INCLUDEPATH+=%mysql%\include" "LIBS+=%mysql%\lib\libmysql.lib" 
-o Makefile mysql.pro "CONFIG+=release"
c:\MinGW\bin\mingw32-make.exe
pause

В якому c:\MinGW\bin\mingw32-make.exe — шлях до вашого mingw32-make.exe.

В результаті успішного виконання скрипта, в каталозі d:\Qt\4.8.4\src\plugins\sqldrivers\mysql\release\ з’явиться файл qsqlmysql4.dll.

Увага. Файл qsqlmysql4.dll (а також, за необхідності qsqlmysqld4.dll) та libmysql.dll (з каталогу MySQL\MySQL Server 5.5\lib\) потрібно скопіювати в папку з Qt — Qt\4.8.4\plugins\sqldrivers\ і надалі розповсюджувати з програмою, де використовується доступ до баз даних MySQL.