среда, 29 июня 2011 г.

Индикаторы для панели Unity

В Gnome 2 верхняя панель у меня выполняла роль системного монитора плюс, разумеется, меню и трей. При переходе на Unity, чего не хватало, так это старых добрых апплетов, к которым я привык во времена Gnome 2.
Хорошие новости! Похоже, что на сегодняшний день уже существует весьма приличное количество индикаторов (аналоги апплетов) для панели Unity, что разумеется не может не радовать.
Я использую следующие индикаторы:
  1. Системный монитор indicator-multiload (ppa:indicator-multiload/stable-daily);
  2. indicator-sensors для отображения показаний аппаратных датчиков температуры (ppa:alexmurray/indicator-sensors);
  3. Менеджер буфера обмена pastie (ppa:hel-sheep/pastie);
  4. indicator-cpufreq для управления режимами работы процессора (ppa:artfwo/ppa).
Более полный список доступных индикаторов см., например, здесь.

пятница, 24 июня 2011 г.

STL и QTL

На днях мне приспичило сравнить производительность std::vector и QVector при их простейшем использовании, а сегодня на глаза попалась хорошая заметка - сравнение STL и QTL.
Вообще, в консольных приложения я использую только STL, однако, при создании кросс платформенных приложений с графическим интерфейсом, Qt сильно облегчает жизнь.

четверг, 23 июня 2011 г.

Оформление исходного кода в статьях на blogger.com

Опять же чтоб не забыть и не потерять )
При написании предыдущей заметки столкнулся с тем, что движок blogger.com не поддерживает должного оформления листингов исходного кода в статьях. Удивительно конечно, ну да ничего не поделаешь. Тем более, что решение нашлось очень быстро.

Во-первых, необходимо внести небольшие изменения в шаблон блога. Заходим в "Дизайн" -> "Изменить HTML" и в коде шаблона, после тега <head>, вставляем следующий код.
<script src='http://yandex.st/highlightjs/6.0/highlight.min.js'/>
<script type='text/javascript'>
initHighlightingOnLoad();
</script>
<link href='http://yandex.st/highlightjs/6.0/styles/default.min.css' rel='stylesheet'/>
<style>
pre&gt;code {
width: 100%; 
overflow: auto;
}
</style>
Данный код обеспечивает автоматическое распознавание языка и стиль подсветки синтаксиса по умолчанию.

Во-вторых, необходимо скачать библиотеку highlight, запустить файл export.html и подготовить свой код для вставки в статью блога. Вставку производить в режиме "Изменить HTML".

std::vector и QVector

А что мы, собственно, теряем по скорости используя QVector вместо sdt::vector? Оказывается не так уж и мало...

Машина и ПО, использовавшиеся в тесте:


Код с использованием std::vector
#include <vector>

using std::vector;

int main(int argc, char *argv[]) {

    vector<double> v;
    v.resize(10000000);

    for (size_t i=0; i<v.size(); i++) {

        v[i] = 67.687353 * (i + 13.507867) /
        (i * 45.686754) - 12.56;
    }

    return 0;
}

Код с использованием QVector
#include <QVector>

int main(int argc, char *argv[]) {

    QVector<double> v;
    v.resize(10000000);

    for (int i=0; i<v.size(); i++) {

        v[i] = 67.687353 * (i + 13.507867) /
        (i * 45.686754) - 12.56;
    }

    return 0;
}

Замеры времени выполнения программы проводились с помощью утилиты time.

Результаты: в среднем, (по пяти замерам) использование QVector увеличило время выполнения программы на 10%...

среда, 22 июня 2011 г.

g++ -Ox...

Один программист провел интересное исследование: сравнение эффективности одного и того же простого действия при использовании глобальной функции, inline глобальной функции, чистого функтора, лямбда-функции C++11 и лямбда-функции Boost.Phoenix. Полученные результаты оказались весьма интересны, в особенности то, насколько на таблицу результатов повлиял флаг g++ -Ox. Итак, при -O0 в лидеры вышел код с использованием лямбда-функции C++11, а при использовании -O3 лямбда-функция C++11 оказалась на последнем месте! В лидерах при максимальной оптимизации глобальная функция, чистый функтор и лямбда-функция Boost.Phoenix. Вот так.

Более подробно - см. первоисточник.

"Горячие" клавиши Unity

Хочется поделиться с теми, кто еще не в курсе, да и, в общем-то, чтобы самому не забыть )

Итак, речь о Unity - замечательной и очень удобной оболочке рабочего стола ОС Ubuntu, используемой мной каждый божий день.
Лично мне, зачастую очень лениво отрывать руки от клавиатуры, тянуться к мыши и потом возить курсором по экрану (да и непродуктивно это), поэтому удобные "горячие" клавиши я считаю огромным плюсом ПО с GUI (а здесь речь вообще об оболочке рабочего стола). Собственно, Unity предлагает следующий набор "горячих" клавиш для навигации и вызова некоторых ходовых функций.

  • Ctrl + Alt + T - открыть терминал
  • Кратковременное нажатие Win - открыть Dash (меню выбора приложений и поиска файлов)
  • Удерживание Win - открытие боковой панели быстрого запуска (Launcher) с подписями на иконках, состоящих из цифр и букв (назовем это номером приложения)
  • Удерживание Win + номер приложения - запуск приложения, либо его активация (в случае, если оно уже запущено)
  • Удерживание Win + Shift + номер приложения - запуск ещё одной копии программы
  • Alt + F1 - перевод фокуса на Launcher с навигацией стрелками ↑ (вверх), ↓ (вниз), запуск - Enter
  • F10 - перевод фокуса на системный трей. Перемещение осуществляется стрелками ← (назад), → (вперёд)
  • F11 - растянуть текущее окно на весь экран (выход из полноэкранного режима осуществляется теми же кнопками)
  • Win + D - свернуть все окна текущего рабочего стола
  • Win + W - отобразить окна всех рабочих столов
  • Win + S - отобразить все рабочие столы
  • Ctrl + Alt + ← / → / ↑ / ↓ - перемещение по виртуальным рабочим столам
  • Ctrl + Alt + L - заблокировать экран
  • PrtScr - сделать снимок всего рабочего стола
  • Alt + PrtScr - сделать снимок только активного окна

Источник: unityenvironment.

понедельник, 20 июня 2011 г.

WRC 2011. R07. Rally Acropolis

Применение тактических ухищрений против команды-противника еще можно понять, хотя и это мне, как болельщику, сильно не по нраву, но внутри команды... Это уже, как говорится, ни в какие ворота. Лично мое мнение - победа Ожье на этом ралли - гнилая победа.

Итак, результаты (взято с worldrally.ru).
  1. Sebastien Ogier Citroen 4h04m44.3s
  2. Sebastien Loeb Citroen + 10.5s
  3. Mikko Hirvonen Ford + 13.5s
  4. Petter Solberg Solberg Citroen + 38.8s
  5. Henning Solberg Stobart Ford + 5m24.7s
  6. Matthew Wilson Stobart Ford + 6m54.7s
  7. Kimi Raikkonen Ice 1 Citroen + 8m29.4s
  8. Juho Hanninen Red Bull Skoda + 11m34.7s
  9. Jari-Matti Latvala Ford + 13m08.8s
  10. Dennis Kuipers FERM Ford + 15m10.1s