LINUX.ORG.RU

Сообщения vsrmis

 

Как узнать использует программа 1 процессор или несколько?

Программа написана на Cи++ ,скомпилирована в g++ работает с 100-200 потоками через p_thread. процессор Core - i5; top выдаёт 20% +/- 5% CPU

vsrmis
()

SafeThread ncurses

Нужно запустить около 100-200 потоков которые будут печатать на экран функцией addch(char ch); ncurses Не потоко-безопасный, потому я использовал мютексы. Вот таким велосипедом.

pthread_mutex_t mutex;
...

void TS_print_char(int x,int y){
// SafeThread функция вывода случайного символа на экран.
pthread_mutex_lock(&mutex);
        move(x,y);
        char ch = get_good_char();
        addch(ch);
        refresh();
pthread_mutex_unlock(&mutex);
}
Код упрощён для опытов, и чтоб отразить суть. Но при большом количестве потоков всё-равно происходят некие исключения. И вываливаются некрасивые белые строки( у меня всё зелёное) . Опытным путём определил что именно в функции addch() Почему? ведь этот код не могут использовать 2 потока! Или операция pthread_mutex_lock(&mutex); не такая уж и атомарная и не может выдержать натиск 100 потоков? Тогда какую систему синхронизации вы посоветуете?

vsrmis
()

ncurses цвета

Нужно чтоб все сиволы были зелёными на чёрном фоне. Поэтому перед выполнением основного кода сделал

    init_pair(1, COLOR_GREEN, COLOR_BLACK );
    bkgd( COLOR_PAIR(1) );
Н вот понадобилось сделать иногда некоторые символы белыми на чёрном фоне. Точнее символ должен появиться белым потом тут-же перекраситься в зелёный.

хотелось так

    init_pair(1, COLOR_GREEN, COLOR_BLACK );
    init_pair(2, COLOR_WHITE, COLOR_BLACK);
//...
// вывод символа.
        move(x,y);
        char ch = get_good_char()|COLOR_PAIR(1);
        addch(ch);
        refresh();
        usleep(10000);
        move(x,y);
        ch = get_good_char()|COLOR_PAIR(2);
        addch(ch);
        refresh();

Но всё получается белым. Да и ещё с некоторыми багами связаными уже с работой программы, это изза usleep(10000); внутри критической секции(pthread), тут либо архитектуру менять, либо придумывать другой способ мигающего белого символа.

Но самый главнй вопрос, всё-же почему вышеуказанный код рисует всё белым? Если добавить bkgd( COLOR_PAIR(1) ); то все символы зелёные, и никто не мигает.

vsrmis
()

struct ** Основы C работа с указателями

Сделал структуру


typedef struct{
        int col;
        int r_begin;
        int r_end;
}parm;
И мне надо целый массив этих структур. Думал сделать так

  parm *p[13];
        for (i=0;i<10;i++){
                p[i]->col = i;
                p[i]->r_begin = rand()%5;
                p[i]->r_end = rand()%30;
        } 

- ОШИБКА СЕГМЕНТИРОВАНИЯ. Думал так

parm **p = new parm*(10);
компилятор ругаеться alex@alex-Lenovo-B570 ~/Proj/Cpp $ ./build_and_run.sh first.cpp: В функции «void engine()»: first.cpp:71:25: ошибка: некорректное преобразование из «int» в «parm*» [-fpermissive]

vsrmis
()

Pyside Cannot parse file: ../data/typesystem.xml

Взял этот пример http://lynxline.com/superhybrids-part-2-now-qt-pyside/ при сборке выкидывает ошибку

alex@alex-Lenovo-B570 ~/Загрузки/superhybrids_macports $ ./build.sh
make: Цель `first' не требует выполнения команд.
Fatal error: line=3, column=62, message=Failed to parse: 'typesystem_core.xml'

Cannot parse file: ../data/typesystem.xmlWARNING: Failure to find: pyhybrid/pyhybrid_module_wrapper.cpp
WARNING: Failure to find: pyhybrid/mainwindow_wrapper.cpp
make: *** Нет правила для сборки цели `pyhybrid/pyhybrid_module_wrapper.cpp', требуемой для `pyhybrid_module_wrapper.o'.  Останов.

Насколько я понимаю ошибка при чтении файла typesystem.xml

вот он

<?xml version="1.0"?>
<typesystem package="PyHybrid">
    <load-typesystem name="typesystem_core.xml" generate="no"/>
    <load-typesystem name="typesystem_gui.xml" generate="no"/>
    <object-type name="MainWindow"/>
</typesystem>
Где тут подвох?

vsrmis
()

Qt OpenGl объекты

Возможно я сильно разбалован ООП. Но я хотел бы на Gl сцену помещать обьекты которые знают как себя рисовать, им нужно только сообщит на чём рисовать.

То есть что-то около этого

class Fig{
public:
    float A1,A2,B1,B2,C1,C2,D1,D2;
    Fig(float a1,float a2,float b1,float b2, float c1 ,float c2,float d1,float d2){
        A1=a1;
        A2=a2;
        B1=b1;
        B2=b2;
        C1=c1;
        C2=c2;
        D1=d1;
        D2=d2;
     }

    void draw(QGLWidget widget){
        QColor sqare(90, 60, 90, 150);
        widget.qglColor(sqare);
        widget.glBegin(widget.GL_QUADS);
            widget.glVertex3f( A1,A2, 0.0f);  // Слева вверху
            widget.glVertex3f( B1,B2, 0.0f);  // Справа вверху
            widget.glVertex3f( C1,C2, 0.f);  // Справа внизу
            widget.glVertex3f( D1 ,D2, 0.0f);  // Слева внизу
        widget.glEnd();
    }
};

Но компилятор ругается что QGLWidget не содержит тех функций. widget.glBegin и widget.glEnd() и т.д. Как бы реализовать что-то подобное.

vsrmis
()

relocation R_X86_64_32S

rm -f libHybrid.so.1.0.0 libHybrid.so libHybrid.so.1 libHybrid.so.1.0
g++ -m64 -Wl,-O1 -shared -Wl,-soname,libHybrid.so.1 -o libHybrid.so.1.0.0 build/MainWindow.o build/moc_MainWindow.o   -L/usr/lib/x86_64-linux-gnu -lQtGui -lQtCore -lpthread  
/usr/bin/ld: build/MainWindow.o: relocation R_X86_64_32S against `vtable for MainWindow' can not be used when making a shared object; recompile with -fPIC
build/MainWindow.o: could not read symbols: Bad value
collect2: выполнение ld завершилось с кодом возврата 1
make: *** [../libHybrid.so.1.0.0] Ошибка 1

Прочёл что должны быть установлены быть добавлены к CXXFLAGS и CFLAGS -fPIC . Но они у меня добавлены. Теряюсь в чём принина. PS. Реализую этот мануал. http://habrahabr.ru/blogs/qt_software/120479/

vsrmis
()

Qt + xls

Курсач. В качестве исходных данных. Пара столбиков из документа xls. Как их прочесть? Нашел неплохо вот тут.http://www.code-guru.ru/code/%D1%81%D0%B8%D0%BD%D1%82%D0%B5%D0%B7-qt-%D0%B8-excel Но там есть как считать. Насколько я понял нужно давать запросы. Но где их найти. Есть ещё варианты работы как с базой. Но как, где есть какие-либо примеры или документация, как прочесть какие либо значения из xls. Желательно кросплатформенно, ибо писать буду на Linux, а сдавать надо под виндой.

vsrmis
()

Jdeveloper на X64

Установил Jdeveloper Запускаю, вижу ошибку

alex@alex-desktop:~/Oracle/Middleware/jdeveloper/jdev/bin$ sudo ./jdev
[sudo] password for alex: 

Oracle JDeveloper 11g Release 2 (11.1.2.1.0)
Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. 

08.12.2011 10:18:00 oracle.ide.osgi.boot.LauncherUtil throttleLocale
INFO: Locale ru_UA is not supported by this product. Forcing locale to en_US.
Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/alex/Oracle/Middleware/jdk160_24/jre/lib/i386/libsplashscreen.so: libX11.so.6: cannot open shared object file: No such file or directory
	at java.lang.ClassLoader$NativeLibrary.load(Native Method)
	at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1806)
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1723)
	at java.lang.Runtime.loadLibrary0(Runtime.java:823)
	at java.lang.System.loadLibrary(System.java:1028)
	at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:50)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.awt.SplashScreen.getSplashScreen(SplashScreen.java:91)
	at oracle.ide.osgi.boot.OracleIdeLauncher.getSimpleSplashImage(OracleIdeLauncher.java:539)
	at oracle.ide.osgi.boot.OracleIdeLauncher.main(OracleIdeLauncher.java:82)
	at oracle.ide.osgi.boot.JDeveloper.main(JDeveloper.java:14)



Насколько я понимаю, это изза того что моя платформа 64 бита, и устанавляимаю я под i386. Как это побороть?
vsrmis
()

Не запускаеться исполняемый фаил

Всё просто как сапог. Но почему он говорит Нет файла?

bash: ./jdevstudio11121install.bin: Нет такого файла или каталога
alex@alex-desktop:~$ chmod 777 jdevstudio11121install.bin 
alex@alex-desktop:~$ ls -l
итого 1196756
-rw-r--r-- 1 alex alex        179 2011-11-25 10:39 examples.desktop
-rwxrwxrwx 1 alex alex 1225430667 2011-11-29 13:50 jdevstudio11121install.bin
drwxr-xr-x 3 alex alex       4096 2011-11-29 02:38 oradiag_alex
drwxr-xr-x 2 alex alex       4096 2011-11-25 10:44 Видео
drwxr-xr-x 2 alex alex       4096 2011-11-25 10:44 Документы
drwxr-xr-x 5 alex alex       4096 2011-12-02 10:29 Загрузки
drwxr-xr-x 2 alex alex       4096 2011-11-25 10:44 Картинки
drwxr-xr-x 2 alex alex       4096 2011-11-25 10:44 Музыка
drwxr-xr-x 2 alex alex       4096 2011-11-25 10:44 Общедоступные
drwxr-xr-x 2 alex alex       4096 2011-11-25 10:44 Рабочий стол
drwxr-xr-x 2 alex alex       4096 2011-11-25 10:44 Шаблоны
alex@alex-desktop:~$ ./jdevstudio11121install.bin
bash: ./jdevstudio11121install.bin: Нет такого файла или каталога
vsrmis
()

Qdialog отменить согласие

void HelloDialog::on_buttonBox_accepted()
{
    if (!(ui->lineEdit->text().isEmpty())){
        emit SendResults(ui->lineEdit->text());
    }
    else {
        QMessageBox::information(this, "Empty Fields!!","Some fields are empty,you will cach error connecting to server");
    }
}

on_buttonBox_accepted() вызывается уже после закрытия формы диалога. Как бы сделать так, чтоб я мог отменить её закрытие в случае неправильных данных.

vsrmis
()

QStrind to DataStrem to byte array to data streem to byte array to QString

Клиент посылает сообщение

    QByteArray block;
    QDataStream out(&block, QIODevice::WriteOnly);
    out.setVersion(QDataStream::Qt_4_0);
    out << "Hello Server";
    tcpSocket->write(block);
как бы серверу его принять?
 QByteArray data = con->readAll();
    if(!data.isEmpty()) {

        QDataStream streem(&data, QIODevice::ReadOnly);
        streem.setVersion(QDataStream::Qt_4_0);
        QString S;
        // как бы взять и из QDataStream перенести даные в S
       // stream>>S; выдаёт пустой S
        qDebug()<<S;
    }

vsrmis
()

QtNetwork

Хочу сделать клиент серверное приложение ЧАТ. Пишу сначала сервер, в качестве клиента взял example подредактированый мной.У сервера есть много клиентов, я их храню в в Qlist< QTcpSocket*>. Сервер уже умеет отправлять клиентам сообщение. Надо сделать так чтоб умел и принимать. Перед заносом в Qlist< QTcpSocket*> я делаю connect(clientConnection,SIGNAL(readyRead()), this,SLOT(getMess())); А в getMess() проверяю кто мне что-то послал.

void Server::getMess(){
    QTcpSocket * con;
    foreach(con,Users){
        if (con->bytesAvailable()>0){
            QByteArray data = con->read(con->bytesAvailable());
            QString myString(data);
            qDebug()<<myString;
        }
    }

}

Но почему-то myString выходит пустой.

В клиенте посылаю так

    QByteArray block;
    QDataStream out(&block, QIODevice::WriteOnly);
    out.setVersion(QDataStream::Qt_4_0);
    out << (quint16)0;
    out << "Hello Server";
    out.device()->seek(0);
    out << (quint16)(block.size() - sizeof(quint16));
    tcpSocket->write(block);
vsrmis
()

Установка Oracle на 11.10

Никак не выходит, как только делаю sudo /etc/init.d/oracle-xe configure так вылетает

Starting Oracle Net Listener...touch: cannot touch `/var/lock/subsys/listener': No such file or directory Done Configuring database... Database Configuration failed. Look into /u01/app/oracle/product/11.2.0/xe/config/log for details

В логах фигурирует ошибка

ERROR at line 1:
ORA-01034: ORACLE not available
Process ID: 0
Session ID: 0 Serial number: 0


как тут быть?

Перемещено JB из Development

vsrmis
()

Неудовлетворённые зависимости


alex@alex-Lenovo-B570:~/Загрузки/Disk1$ rpm -i ./*.rpm
rpm: RPM should not be used directly install RPM packages, use Alien instead!
rpm: However assuming you know what you are doing...
error: Failed dependencies:
	glibc >= 2.3.4 is needed by oracle-xe-11.2.0-1.0.x86_64
	libaio >= 0.3.104 is needed by oracle-xe-11.2.0-1.0.x86_64
	/bin/sh is needed by oracle-xe-11.2.0-1.0.x86_64
alex@alex-Lenovo-B570:~/Загрузки/Disk1$ getconf GNU_LIBC_VERSION
glibc 2.13


ПО чемуто инсталятор не вилит моего glibc
А до libaio  я ещё вообще не рыл.
vsrmis
()

Ubunto 11.10 Grub не работает

Установил Ubuntu 11.10. Grub теперь не работает. мигает что-то,И черный экран. Пытался делать c Linux Mint 9 grub-install. Результата ноль. Но он мне давал. list of partitions not found в конце, Но ядра линукс находил.

На машине стоят: Ubuntu 11.10 Linux Mint 11 debian.

Но в Grub Я не могу войти. Как его восстановить? update-grub, grub-install перепробовал. не работает.

vsrmis
()

evaluateJavaScript QT

Есть сайт На нём примерно такое содержание

var a='блаблабла ТЕЕГИ ТЕКСТ, РАМКИ ЦВЕТА, Текст, Теги,';
document.write(a);
Надо это проинтерпретировать как Яваскрипт. Думал этот код справиться, но нет:( Почему?

view->page()->mainFrame()->evaluateJavaScript(
          view->page()->mainFrame()->toPlainText()
                     ); 
S =  view->page()->mainFrame().toHtml();

vsrmis
()

Qt WebView не работает

какзалось бы куда проще

    QWebView *view = new QWebView(this);
    view->load(QUrl("www.google.ru"));
    ui->textBrowser->setText(view->page()->mainFrame()->toHtml()
            );
    view->show();
Но после выполнения textbrowser остаётся пустым, и его show() показывает белый прямоугольничек.

vsrmis
()

простой JavaSkript в Qt

Нужно в программе выполнить простой JavaSkript И получить текст который он возвратит. Как это сделать ? Я замучался читая про навороченые V8 и WebKit. Мне не надо Выдавать целую HTML страницу? нужет именно текст HTML страницы. Что-то подобного роды

QSkriptEngine* engine = new QSkriptEngine(
"<script src='/js/head.js' type='text/javascript'></script>"
);

QString MyString = engine.run();
Есть ли что-то подобное мною выдуманому QSkriptEngine

vsrmis
()

QT #include <glib.h>

Выкидывает ошибку что /media/Files/Media/Programming/Cpp/Qt/Projects/Notify/Notify/main.cpp:2: fatal error: glib.h: Нет такого файла или каталога

libglib2.0-dev установлен. В чём тут проблема может быть?

В интернете нашет такую информацию g++ -c b.c -o b.o `pkg-config --cflags glib-2.0`

Но это для gcc, как подобное прописать в QT ГДЕ В *.PRO файле вписать эти настройки?

vsrmis
()

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