Поиски решения для адекватной работы compiz меня привели к Bumblebee. Проект Bumblebee нацелен на поддержку технологии NVIDIA Optimus на ноутбуках с операционными системами GNU/Linux. Используя Bumblebee вы можете дать команду видеокарте NVIDIA заняться процессом обработки изображения, которое потом будет выведено через карту Intel.
Читать
Архив автора: admin
Настраиваем Unity в Ubuntu
MyUnity – небольшая утилита позволяющая пользователям настроить различные компоненты Unity такие, как шрифты, темы, Dash, панель Unity и ещё многое другое.

Светящийся террариум
В этом необычном уроке будем делать светящийся террариум своими руками с птицей внутри. Эта декоративная банка своими руками способна украсить совершенно любой интерьер, а не только детскую.
Таймеры высокого разрешения Linux C/C++
В операционной системе Linux помимо обычных задержек(sleep) и таймеров, реализованы таймеры высокого разрешения. Таймер и задержки высокого разрешения позволяет измерять временные промежутки с точностью до наносекунд, а так же позволяют приложения «засыпать» на непродолжительное время(в зависимости от конфигурации системы) соизмеримое с несколькими микросекундами.
//===============================================================
// Name : HiTimer.c
// Author : D.Falko
// Version : 1.0
// Description : High Resolution timer test
//===============================================================
#include
#include
#include
#include
#include
#include
int main(int argc, char *argv[])
{
if(0 == geteuid()) // приложение должно быть запущенно с правами суперпользователя
{
struct sched_param sp;
memset(&sp, 0, sizeof(sp));
sp.__sched_priority = sched_get_priority_max(SCHED_FIFO);
sched_setscheduler(0, SCHED_FIFO, &sp);
mlockall(MCL_CURRENT | MCL_FUTURE);
}
else
{
printf("Not running with superuser rigthsn");
exit(1);
}
if(argc < 3)
{
printf("Using: HiTimer iterations delayn");
exit(1);
}
int iter = atoi(argv[1]);
int delay = atoi(argv[2]);
int i=0;
struct timespec tS, startT, stopT;
clock_getres(CLOCK_MONOTONIC, &tS); // узнаем разрешение таймера
printf("Timer res: %ld sec, %ld nsecn", tS.tv_sec, tS.tv_nsec);
struct timespec time;
clock_gettime(CLOCK_MONOTONIC, &startT); // засекаем время начала теста
while(i<iter)
{ // повторяем iter раз задержку delay
i++;
clock_gett
ime(CLOCK_MONOTONIC, &time); получаем актуальное время
time.tv_nsec+=delay; // добавляем требуемую задержку
clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME,
&time, NULL); // засыпаем
}
clock_gettime(CLOCK_MONOTONIC, &stopT);
long int nsec=stopT.tv_sec*1000000000 + stopT.tv_nsec
-startT.tv_sec*1000000000 + startT.tv_nsec;
// iter*delay должно примерно равняться nsec, узнаем погрешность задержек
printf("Number of iterations: %d timer value: %d nsecn",
iter, delay);
printf("Time elapsed: %ld nsecn", nsec);
return 0;
}А теперь подробней о использованных компонентах.
Используемая структура времени определена в <sys/time.h> и выглядят следующим образом:
struct timespec {
long tv_sec; /* секунды */
long tv_nsec; /* наносекунды */
};Далее мы узнаем и выводим на экран точность(разрешение) системных часов, при помощи функции:int clock_getres(clockid_t clk_id, struct timespec *res);в структуру struct timespec *res записывается разрешения, указанных в clockid_t clk_id часов.clockid_t clk_id может быть:
▪ CLOCK_REALTIME: часы реального времени, доступные всем процессам в системе. Часы измеряются в секундах и наносекундах с начала эпохи (то есть 00:00:00 1 января 1970 по Гринвичу). Точность 1/HZ секунд.
▪ CLOCK_MONOTONIC: время непрерывной работы ОС, доступное всем процессам. В Линукс оно измеряются в секундах и наносекундах после загрузки ОС. Точность 1/HZ с. Время в этих часах не может быть изменено каким-либо процессом, по этому рек Знакомимся с virtualenv (Перевод)
Виртуальное окружение может быть очень полезно для тестирования программ. Ian Bicking создал проект virtualenv, который и является инструментом для создания изолированного окружения Python. Вы можете использовать эти окружения для проверки новых версий ваших программ, новых версий пакетов, которые Вы используете или просто в качестве песочницы для новых пакетов. Кроме того, Вы можете использовать virtualenv в качестве рабочего места в случаях, если Вы не можете копировать файлы в site-packages по какой-либо причине. Когда Вы создаёте виртуальное окружение при помощи virtualenv, он создаёт папку и копирует Python в неё с папкой site-packages и несколькими другими. Кроме того устанавливается pip. Пока активно ваше виртуальное окружение оно используется как обычный Python. Когда же Вам оно перестаёт быть нужным — Вы просто удаляете папку. И всё. Или можете продолжать её использовать для работы.В этой статье мы потратим немного времени для знакомства с virtualenv.Установка
Для начала понадобится установить virtualenv. Вы можете использовать для этого pip или easy_install или просто загрузить файл virtualenv.py с их сайта и просто использовать его. На данный момент предположим, что ваша папка Python находится в системном пути поиска и Вы можете использовать virtualenv в командной строке.Создаём виртуальное окружение
Для создания песочницы выполните следующую команду:
python virtualenv.py FOLDER_NAMEГде FOLDER_NAME — это имя папки, которую Вы будете использовать в качестве песочницы. На моём компьютере Windows 7, я добавил папку C:Python26Scripts в путь поиска так что я могу использовать команду virtualenv.py FOLDER_NAME без слова python. Если Вы не укажете имя папки, то получите в ответ список опций, которые можно передать скрипту. Давайте создадим проект с названием sandbox. Как его использовать? Для начала надо его активировать:На POSIX системах Вам нужно source bin/activate тогда как на Windows Вам нужна команда путь_к_песочницеScriptsactivate. Давайте пройдём через эти шаги. Песочницу создадим на рабочем столе:
C:UsersmdriscollDesktop>virtualenv sandbox
New python executable in sandboxScriptspython.exe
Installing setuptools................done.
Installing pip...................done.
C:UsersmdriscollDesktop>sandboxScriptsactivate
(sandbox) C:UsersmdriscollDesktop>Вы можете заметить что как только Вы активировали ваше виртуальное окружение, Вы увидите в приглашении командной строки префикс с названием папки для вашей песочницы (в нашем случае — “sandbox”). Так Вы можете определить, используется ли песочница или нет. После этого Вы можете использовать pip для установки пакетов в ваше виртуальное окружение. Когда закончите работать просто вызовите команду декативации для того, чтобы выйти из виртуального окружения.Есть несколько флагов, которые Вы можете передать скрипту virtualenv при создании виртуального окружения. Например, можно использовать –system-site-packages для переноса пакетов из установки Python. Если Вы хотите использовать distribute вместо setuptools, можете использовать флаг –distribute.virtualenv так же предоставляет способ просто установить библиотеки, но использовать их при помощи стандартного Python. Согласно документации, для этого Вам надо лишь написать специальный скрипт. Подробнее смотрите тут.Кроме того, есть экспериментальный флаг –relocatable который можно использовать для того, чтобы сделать папку переместимой. Однако, на данный момент, это не работает на Windows.Наконец, есть флаг –extra-search-dir, который можно использовать, чтобы сохранить ваше виртуальное окружение оффлайн. Это позволяет Вам добавить папку в путь поиска, по которому pip или easy_install будет искать пакеты для установки, даже если у Вас нет доступа к интернету.Итог
К этому времени Вы должны уметь сами использовать virtualenv. Есть несколько других проектов, которые теперь могут Вам пригодиться. Есть библиотека Doug Hellman’а virtualenvwrapper, которая облегчает создание, удаление и управление виртуальных окружений. Есть zc.buildout, который похож на virtualenv и является его конкурентом. Я рекомендую посмотреть их и изучить — они могут помочь Вам в вашей работе.Автор: Ishayahu Lastov
Python 101: pip –замена для easy_install (Перевод)
Pip Installs Python или pip — это инструмент для установки и управления пакетами Python, многие из которых расположены на Python Package Index (PyPI). Он является альтернативой easy_install. В этой статье мы потратим немного времени на то, чтобы посмотреть, как он работает и как он может помочь нам в нашей работе с Python.Установка
Для работы Вам потребуется distribute или setuptools. Если Вы работаете с Python 3, тогда ваш единственный выбор — distribute, так как setuptools на данный момент ещё не портирован на эту версию. На сайте pip есть установщик, так то вы можете использовать get-pip.py или просто перейти на PyPI и скачать исходники.Как Вы уже знаете, для установки большинства модулей из исходников необходимо распаковать полученный архив, перейти в его папку и запустить в ней команду “python setup.py install”. Обратите внимание, что для установки могут понадобиться права администратора. На сайте pip рекомендуется использовать pip в virtualenv, поскольку в таком случае он устанавливается автоматически, “не требует прав администратора и не изменяет вашу установку Python”. Но это на ваш выбор.использование pip
Чаще всего pip используют для установки, обновления или удаления пакетов. Все эти процедуры описаны на официальном сайте, но мы по ним всё равно пройдёмся. Так как мы упомянули про virtualenv, давайте и установим его при помощи pip:
pip install virtualenvЕсли Вы запустите эту команду в терминале, Вы увидите что-то вроде этого:
Downloading/unpacking virtualenv
Downloading virtualenv-1.7.2.tar.gz (2.2Mb): 2.2Mb downloaded
Running setup.py egg_info for package virtualenv
warning: no previously-included files matching '*' found under directory 'do
cs_templates'
warning: no previously-included files matching '*' found under directory 'do
cs_build'
Installing collected packages: virtualenv
Running setup.py install for virtualenv
warning: no previously-included files matching '*' found under directory 'do
cs_templates'
warning: no previously-included files matching '*' found under directory 'do
cs_build'
Installing virtualenv-script.py script to C:Python26Scripts
Installing virtualenv.exe script to C:Python26Scripts
Installing virtualenv.exe.manifest script to C:Python26Scripts
Installing virtualenv-2.6-script.py script to C:Python26Scripts
Installing virtualenv-2.6.exe script to C:Python26Scripts
Installing virtualenv-2.6.exe.manifest script to C:Python26Scripts
Successfully installed virtualenv
Cleaning up...Похоже, что работает. Обратите внимание, что pip загружает пакет ДО начала установки, чего не делает easy_install (за другими отличиями обраща

