Как узнать использует программа 1 процессор или несколько?
Программа написана на Cи++ ,скомпилирована в g++ работает с 100-200 потоками через p_thread. процессор Core - i5; top выдаёт 20% +/- 5% CPU
Программа написана на Cи++ ,скомпилирована в g++ работает с 100-200 потоками через p_thread. процессор Core - i5; top выдаёт 20% +/- 5% CPU
Нужно запустить около 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);
}
Нужно чтоб все сиволы были зелёными на чёрном фоне. Поэтому перед выполнением основного кода сделал
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) ); то все символы зелёные, и никто не мигает.
Сделал структуру
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);
Взял этот пример 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>
Возможно я сильно разбалован ООП. Но я хотел бы на 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() и т.д. Как бы реализовать что-то подобное.
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/
Курсач. В качестве исходных данных. Пара столбиков из документа 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, а сдавать надо под виндой.
Установил 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. Как это побороть?
Всё просто как сапог. Но почему он говорит Нет файла?
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: Нет такого файла или каталога
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() вызывается уже после закрытия формы диалога. Как бы сделать так, чтоб я мог отменить её закрытие в случае неправильных данных.
Клиент посылает сообщение
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;
}
Хочу сделать клиент серверное приложение ЧАТ. Пишу сначала сервер, в качестве клиента взял 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);
Никак не выходит, как только делаю 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
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 я ещё вообще не рыл.
Установил 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 перепробовал. не работает.
Есть сайт На нём примерно такое содержание
var a='блаблабла ТЕЕГИ ТЕКСТ, РАМКИ ЦВЕТА, Текст, Теги,';
document.write(a);
view->page()->mainFrame()->evaluateJavaScript(
view->page()->mainFrame()->toPlainText()
);
S = view->page()->mainFrame().toHtml();
какзалось бы куда проще
QWebView *view = new QWebView(this);
view->load(QUrl("www.google.ru"));
ui->textBrowser->setText(view->page()->mainFrame()->toHtml()
);
view->show();
Нужно в программе выполнить простой JavaSkript И получить текст который он возвратит. Как это сделать ? Я замучался читая про навороченые V8 и WebKit. Мне не надо Выдавать целую HTML страницу? нужет именно текст HTML страницы. Что-то подобного роды
QSkriptEngine* engine = new QSkriptEngine(
"<script src='/js/head.js' type='text/javascript'></script>"
);
QString MyString = engine.run();
Выкидывает ошибку что /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 файле вписать эти настройки?
← назад | следующие → |