LINUX.ORG.RU

Сообщения minipooh

 

Qt4: использование connect в многопоточных приложениях

Есть класс

class A : public QwtPlot
{
   Q_OBJECT
   ...

protected slots:
   void conversionMouseCoordinates(int x, int y);
}

class B : public QwtPlotZoomer
{
   Q_OBJECT
   ...

signals:
   void sendMouseCoordinates(int x, int y);
}

A::A(QWidget *parent)
        :QwtPlot(parent)
{
   ...
   b = new B(this->canvas());
   connect(b, SIGNAL(sendMouseCoordinates(int, int)), this, SLOT(conversionMouseCoordinates(int, int)));
}

Всё работает нормально. При наследовании класса А дополнительно и от QThread:

class A : public QwtPlot, public QThread
{
   Q_OBJECT
   ...
}

Выдаётся:

ошибка: ссылка на ‘connect’ противоречива

С чем это связано? Как это победить?

minipooh
()

воспроизведение лицензионных DVD

Всем доброго!

Столкнулся с проблемой воспроизведения лицензионных DVD-видео дисков с защитой от копирования! Система Kubuntu10.04 плейер DragonPlayer! Диск попросту не воспроизводится, даже DVD-шное меню не появляется! Копировать понятное дело тоже не получается, но и доступа на чтение нет даже через sudo! Права стоят 40555 владелец я группа -1! Каким медиапроигрывателем можно посмотреть или конвертировать в *.avi подобные диски?

minipooh
()

Ограничение скорости канала Ethernet

Есть 2 компа на которых работают 2 проекта, с одного (Linux Gentoo Calculate 10.2) на другой (может быть как Linux Kubuntu 10.04, так и Windows XP) с определенной периодичностью гоняться некоторые данные по Ethernet каналу (соединение точка-точка). Необходимо проверить работоспособность всей системы при скорости канала в 64 Кб/с.

Какой самый простой и быстрый способ ограничить канал?

Есть ли гуёвые средства?

minipooh
()

настройка 32 битного цвета?

на машине используется

Kubuntu 9.10 X86_64-бит,

видюха GeForce 9800 GT,

моник Samsung SyncMaster,

для видюхи поставили драйвер NVIDIA Driver 185.18.36.

Пакет: xserver-xorg

Версия: 1:7.4+3ubuntu10

В прикладном графическом приложении написанном на Qt4.5.6 неправильно отображаются цвета - вместо плавных переходов (градиентов) на границах цветов происходит попиксельное отображение цвета и цвет отображается с гораздо меньшей яркостью. Предполагаем что связано это с невозможностью включения режима 32 битного цвета (RGB24 + AlphaChannel).

1. Как вообще узнать текущий цветовой режим?

2. Как установить 32 битный цветовой режим?

minipooh
()

Быстрая сортировка

Подскажите алгоритм быстрой сортировки массива размерности N = const вещественных чисел в известном диапазоне (n > x[i] > k). И, если есть, его реализацию на С++ (может в составе математических библиотек).

minipooh
()

Проблема обновления Kubuntu 9.04 до 9.10

Обновил через CD (раздел /home не трогал). После перезагрузки и входа в учетную запись, сначала появляется рабочий стол Kubuntu 9.10 а потом (практически сразу же) черный экран без возможности что либо добавить или изменить, так же отсутствуют мои панели, присутствовавшие в 9.04. Проги можно запустить только по Alt+F2. В чем может быть проблема?? Что нужно изменить в настройках чтобы вернуть мой настроенный рабочий стол как в 9.04, при это не трогая раздел /home??

minipooh
()

boost::thread VS openMP!!! Кто кого???

В программе есть большой внешний цикл (~10000 итераций) в который вложены еще некоторые более мелкие циклы с мат вычислениями (~2500 итераций), при попытке раскидать внешний цикл на несколько потоков столкнулись с проблематичной синхронизацией потоков (слишком сильная зависимость между итерациями), поэтому решили «раскидывать» на потоки вложенный цикл.
Но встали перед вопросом чем воспользоваться boost::thread или openMP?

Насчет openMP документации нашел много, и везде указывалось что на разветвление программы и потом обратный сбор уходит довольно много времени (пишут порядка 2000 операций), насчет boost::thread подобных замечаний не нашел. И даже прочитал где-то что мол boost::thread при организации мелких циклов имеет преимущество по производительности по сравнению с openMP. Ну и естественно решил попробовать....

Написал 2 идентичные по объему операций программки:

На openMP:
_______________________________________
#include <iostream>
#include <omp.h>
#include <time.h>
#define Npar 4
#define Nmas 1000
int main(int argc, char* argv[])
{
float* a = new float[Nmas];
float* b = new float[Nmas];
float* c = new float[Nmas];
for (int k = 0; k < 100000; k++)
{
#pragma omp parallel shared(a, b, c) num_threads(Npar)
{
int myid = omp_get_thread_num();
for (int i = myid; i < Nmas; i += Npar)
{
a[i] = (float) i;
b[i] = a[i] * a[i];
c[i] = 0.3 * a[i] - b[i] / a[i];
}
}
}
delete[] a;
delete[] b;
delete[] c;
std::cout << clock() << std::endl;
return 0;
}
_________________________________________

И на boost::thread :
_________________________________________
#include <boost/thread/thread.hpp>
#include <iostream>
#include <time.h>
#define Nmas   1000
#define Npar   4
using namespace std;

void proga(int ind, float* a, float* b, float* c)
{
for (int i = ind; i < Nmas; i += Npar)
{
a[i] = (float) i;
b[i] = a[i] * a[i];
c[i] = 0.3 * a[i] - b[i] / a[i];
}
}

int main(int argc, char* argv[])
{
float* a = new float[Nmas];
float* b = new float[Nmas];
float* c = new float[Nmas];
for (int j = 0; j < 100000; j++)
{
boost::thread my_thread1(&proga, 0, a, b, c);
boost::thread my_thread2(&proga, 1, a, b, c);
boost::thread my_thread3(&proga, 2, a, b, c);
boost::thread my_thread4(&proga, 3, a, b, c);
my_thread1.join();
my_thread2.join();
my_thread3.join();
my_thread4.join();
}
delete[] a;
delete[] b;
delete[] c;
std::cout << clock() << endl;
return 0;
}
________________________________________

Компилятор g++-4.3, ОС Kubunta 9.04,
проц. CPU Intel Core 2 Quad Q8300 2.5ГГц.

Откомпилил обе проги запустил проверить кто же быстрее и на сколько, и в ответ получил замечательные данные:
(программы запускал по 10 раз каждую привожу средние данные)
по данным ф-ции clock():
boost 8700000 (8.7c)
openMP 8800000 (8.8c)

по данным ф-ции time:
boost
real 0m8.588s
user 0m4.616s
sys 0m4.176s
__________________
openMP
real 0m7.438s
user 0m6.828s
sys 0m3.132s
__________________

В сфязи с чем у меня возникает 4 вопроса:
1. кому верить time или clock???
2. так кто же быстрее boost или openMP???
3. для каких случаев обычно используют тот или другой метод распараллеливания???
4. может я что-то не так делаю?

minipooh
()

не работает openMP

Написал простенькую програмку с распараллеливанием
собрал откомпилил,
но распараллеливания нет.
Программка выглядит так:
--------------------------------
#include <iostream>
#include <omp.h>
int main(int argc, char* argv[])
{
#pragma omp parallel num_threads(4)
{
std::cout << «процесс №» << omp_get_thread_num() << " Hello World!!!\n";
}
return 0;
}
-------------------------------
Makefile:
-------------------------------

CC = g++-4.3
CXXFLAGS = -fopenmp

MPI_test : main.o
$(CC) $(CXXFLAGS) -o MPI_test main.o

main.o: main.cpp
$(CC) -c main.cpp
-------------------------------
Программа компилируется без ошибок (естественно) но выводит одно
сообщение только от главного процесса:
-------------------------------
процесс №0 Hello World!!!
-------------------------------
Использую Kubuntu 9.04 и gcc 4.3.3

Судя по описаниям работы с openMP выложенным в интернете моя программа
должна выдать результат типа:
-------------------------------
процесс №0 Hello World!!!
процесс №1 Hello World!!!
процесс №2 Hello World!!!
процесс №3 Hello World!!!
-------------------------------
ну или наподобие того (может в другом порядке может вперемешку).
Подскажите почему не происходит распараллеливание?

minipooh
()

Выбор WM

Посоветуйте легкий, удобный, настраиваемый WM Ынтерпрайз уровня. Кеды, гном, XFCE не предлагать.

minipooh
()

Создание библиотеки QT

Создал класс для отображения на основе QT и QWT.
1. Как мне оформить этот класс в виде подключаемой библиотеки *.so?
2. Как статически в нее залинковать QT и QWT, что бы они не
требовались при работе на других машинах?

minipooh
()

проблема прав доступа в ssh

На хосте 2 пользователя А и Б. К пользователю Б через ssh имеется доступ с других компов (своеобразная шара), но при этом если для домашней директории /home/Б задаются права на запись даже для группы, то доступ к нему по ssh невозможен. Т.е. получается оригинальная "шара" либо к ней могут обращаться все кроме пользователя А на хосте, либо только пользователь А на хосте)))

Можно ли решить данную проблему??? Может нужно что то прописать в sshd_config-е??

minipooh
()

ssh и tunneling

При попытке создать туннель так:

~$ sudo ssh -v -N -p22 -L 1300:Host_Name:1310 SSH_SRV_NAME

Идет сначала все ОК, а потом выдает:

debug1: channel 2: new [tun]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: Remote: Failed to open the tunnel device.
channel 2: open failed: administratively prohibited: open failed
debug1: channel 2: free: tun, nchannels 3

channel 0 и 1 создает нормально.
Я так понимаю, что просто не находит доступа к девайсу туннеля.
Вроде он называется tun0(1...). Но в /dev его нет, есть только
/dev/net/tun но получается его мало.Сделал с него симлинк /dev/tun0 -
пофиг.
Как правильно создать или где взять это девайс tun ?
P.S.
С правами на /dev/net/tun все ОК 666 и на серваке и на клиенте.

minipooh
()

Проблема с kdevelop 4

Создал проект "Simple Hello World Program"
Делаю Build, выдает

linking test (CC)
../libtool: line 821: X--tag=CC: command not found
../libtool: line 854: libtool: ignoring unknown tag : command not found
../libtool: line 821: X--mode=link: command not found
../libtool: line 988: *** Warning: inferring the mode of operation is deprecated.: command not found
../libtool: line 989: *** Future versions of Libtool will require --mode=MODE be specified.: command not found
../libtool: line 2226: X-g: command not found
../libtool: line 2226: X-O2: command not found
../libtool: line 2395: Xtest: command not found
X: user not authorized to run the X server, aborting.
../libtool: line 2407: Xtest: command not found
../libtool: line 2415: mkdir /.libs: No such file or directory

Откуда берется какой-то Х ?
Почему что-то хочет создать в / ?
Как ӕто вылечить ?

minipooh
()

git и ssh

ssh соединение устанавлено. При "git push" выдается ошибка:

Tunnel device open failed.
Could not request tunnel forwarding.

В конфигах (сервака и клиента) все параметры использования туннелинга
разрешены.

При попытке создать туннель через ssh выдает ошибку:

channel 0: open failed: administratively prohibited: open failed

Пользователь к которому пытаюсь подключиться добавлен только в группу ssh.

Как использовать git совместно с ssh, можно ли исправить данную проблему? Может нужно создать устройство типа tun0...?

minipooh
()

RSS подписка на новые темы