С++: Отключаемый отладочный вывод

Чтобы иметь возможность отключить или подключить весь отладочный вывод в коде в одном месте, я использую следующую конструкцию:
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>

typedef enum {
    DL_INFO = 0,
    DL_ERROR
} DebugLevel;

char * dlToString(DebugLevel dl) {
    static char INFO [] = "INFO";
    static char ERROR [] = "ERROR";
    switch(dl) {
    default:
    case DL_INFO:
        return INFO;
    case DL_ERROR:
        return ERROR;
    }
}

void printDebugString(const char * file, int line, const char * method, DebugLevel dl, const char* format, ...) {
    va_list arglist;
    va_start(arglist, format);
    printf("%s: %s:%d:%s:", dlToString(dl), file, line, method);
    vprintf(format, arglist);
    va_end(arglist);
}

#define DEBUG_PRINT(LEVEL, FMT, ...)    printDebugString(__FILE__, __LINE__, __PRETTY_FUNCTION__, LEVEL, FMT, ##__VA_ARGS__)

Linux: перенаправление потоков stderr и stdout в файл

Перенаправить одновременно stderr и stdout в файл можно так:
program > log_file 2>&1
или, чтобы не перезаписывать каждый раз файл, а добавлять в конец, соответственно:
bash_command >> log_file 2>&1
Что значит выражение: 2>&1:
2 - это дескриптор потока stderr;
&1 - это дескриптор потока stdout (амперсант перед 1 означает, что 1 - это не имя файла, а именно дескриптор);
то есть мы перенаправляем stderr туда же, куда перенаправлен к этому моменту stdout. Поэтому сначала перенаправляем stdout в файл (посредством > log_file), а затем перенаправляем туда же stderr. Например, следующая команда:
program > err_file 2>&1 > log_file
Перенаправит stderr туда, куда был к этому моменту перенаправлен stdout (в файл err_file), а потом перенаправит stdout в log_file. Другой способ перенаправить stderr и stdout в разные файлы:
program > log_file 2> err_file

Qt 5.3 QML: как принудительно выполнить перерисовку элемента

Судя по всему, стандартные средства QML не позволяют просто взять и запросить перерисовку заданного объекта. Понятно, что объекты автоматчески перерисовываются при измении их свойств, списки автоматически перерисовываются при изменении привязанных к ним моделей. Но если есть какой-нибудь кастомный элемент интерфейса на основе, например, Rectangle, отрисовка которого зависит от какой-нибудь кастомной модели, проброшенной в QML из С++ кода, все это не поможет. Модель меняется, а вот метода, который бы заставил интерфейс перерисоваться заново с учетом этих изменений, я не нашел.
Единственное решение, которое я нашел, это удалить элемент и пересоздать его заново после изменения модели (как это делать, описано здесь). Правда, статически созданные элементы не рекомендуется удалять динамически, поэтому элементы, которые нужно будет пересоздавать, нужно сразу создавать динамически.

Настройка управления питанием в Xubuntu 14.04

Столкнулся с проблемой в Xubuntu 14.04 на ноутбуке: игнорируются настройки управления питанием - действия при закрытии крышки и нажатии на кнопку выключения питания. Выяснилось, что это баг в xfce4-power-manager-settings. Суть заключается в том, что Power Manager не перехватывает у systemd соответсвующие события.
Лечится настройкой systemd, как указано на ArchLinux Wiki. Надо отредактировать файл /etc/systemd/logind.conf:
HandlePowerKey=ignore
HandleSuspendKey=ignore
HandleHibernateKey=ignore
HandleLidSwitch=ignore

Qt 5.3 QML: создание линий без использования Canvas

В QtQuick практически отсутствуют элементы, представляющие собой геометрические фигуры (есть только Rectangle). Видимо, предполагается, что если требуется рисовать что-то хоть сколько-то сложное, нужно использовать элемент Canvas. Однако, в случае интерактивного интерфейса Canvas не очень удобен - чтобы обработать, например, нажатие клавиши мышки по элементу на Canvas, нужно получить координаты указателя мыши, понять, какой элемент расположен по этим координатам, понять, какие еще элементы затрагиваются этим событием, и перестроить Canvas. В случае, если интерфейс построен из отдельных элементов (типа Item или Rectangle), каждый элемент может сам обрабатывать свои события, а связывать элементы между собой можно через сигналы-слоты. Получается гораздо удобнее.
Итак, я не хочу использовать Canvas, но мне необходимо нарисовать линию. Так как у нас есть только Rectangle, то будем использовать именно его: ведь линия - это тот же прямоугольник, просто с очень маленькой высотой (например, один пиксель), повернутый на определенный угол.

Qt 5.3 QML: создание контейнера элементов больше размера окна

У меня возникла необходимость сделать в приложении, написанном на Qt 5.3 и использующим QML, контейнер элементов интерфейса, который был бы больше окна приложения, то есть какая-то его часть бы была видна пользователю, а все остальное - скрыто в данный момент. Это очень похоже на поведение любого графического редактора при увеличении открытого изображения - становится видна только часть изображения. Соответственно, необходимо также, чтоб была возможность "передвигать" мышкой видимую часть контейнера - при этом в окне должны отображаться скрытые ранее элементы.
В QML для этого есть специальный элемент-контейнер Flickable. Однако в чистом виде его использовать не удалось - поведение не совпадает с ожидаемым. Ниже представлен QML код, который реализует описанное поведение.

Подсветка кода на html-страницах

Для подсветки кода в этом блоге я использую Javascript билиотеку SyntaxHighlighter. Легко устанавливается (в случае с Blogger просто добавляются ссылки на нужные скрипты в заголовок шаблона), имеет довольно много разных синтаксисов.