LINUX.ORG.RU

Сообщения pathfinder

 

CMake компиляция под ARM и пути до библиотек

Форум — Development

Собираю под arm компилятором. CMake живет своей жизнью и упорно в параметры линковки вставляет пути вида "-L/usr/lib/x86_64-linux-gnu", хотя я об этом эго не просил. Естественно не собирается. Как это побороть?

 

pathfinder ()

Чем плох GLOB для задания исходных кодов в проектах CMake?

Форум — Development

Собственно сабж

 

pathfinder ()

stty виснет

Форум — Development

Я пытаюсь в своей программе через system() запустить stty c параметрами для того, чтобы настроить скорость COM-порта (/dev/ttyS0). И (иногда) процесс stty «зависает», соответственно вызов system() не заканчивается никогда.

Разве должны быть какие-то блокирующие процесс операции при настройке параметров порта? Чего оно может ждать? Почему ожидание длится вечность?

 

pathfinder ()

Вопрос про mmap() файлов в память.

Форум — Development

Предположим у меня есть файл большого размера с данными в некоторой древовидной структуре.

Необходимо в режиме read only иметь быстрый случайный доступ к разным узлам дерева, но при этом не хотелось бы, что процесс отъедал много реальной оперативной памяти, так как есть другой процесс, которому она нужна. Думаю замапить весь файл в память с помощью функции mmap().

Правильно ли я понимаю, что ОС будет автоматически подгружать в память странички по мере чтения и только те, к которым обратились? И выгружать те странички, которыми давно не пользовались, если физической оперативной памяти на всех не хватает и она нужна другому процессу.

Или я слишком много хочу от ОС?

 

pathfinder ()

Нужен альтернативный аллокатор для контейнеров

Форум — Development

Есть несколько STL контейнеров, которые в некоторый момент хранят в себе огромное количество мелких объектов съедая большое количество памяти. Потом все данные этих контейнеров освобождаются. Но из-за фрагментации данных в куче стандартный аллокатор не отдает ОС память.

Есть ли какие-нибудь готовые аллокаторы для таких случаев? Или надо писать свой велосипед?

 

pathfinder ()

Нубский вопрос про чтение данных

Форум — Development

Раньше я с базами данных не работал а тут неожиданно пришлось иметь дело.

Есть БД на postgresql. В ней есть таблица на 1-2 млн. записей. В конечном итоге надо её всю считать, и записать данные на диск разбив по группам. Группы определяются значением полей. На группу приходится около 10 тыс. записей

Вопрос:

Что рациональнее с точки зрения производительности и потребляемой памяти - переложить выборку по группам на БД или делать это самому?

Насколько быстрее запросы вида " SELECT ... WHERE some_field='some_id' " выполняются по сравнению с ручной обработкой?

 ,

pathfinder ()

Несколько libstdc++

Форум — Development

Есть железка, на ней нормально запускаются программы, собранные gcc 4.9.2

Но кое-что собрано gcc 5.1. Эти бинарники не хотят запускаться из-за несовместимости библиотеки libstdc++.

Можно как-то сделать, чтобы было несколько версий libstdc++, а загружаемая выбиралась сама?

Под оффтопиком есть же redistributable package?

 ,

pathfinder ()

msync() vs fsync()/fdatasync()

Форум — Development

Пускай у нас есть некий файл, который через mmap() отображается в память. Запись в отображаемую память делается редко и лишь в небольшой части. После каждой записи надо сбрасывать изменения на диск.

Так как у диском у нас является флешь, хотелось бы поменьше операций записи. Если в этом плане разница между msync()/fsync()/fdatasync()? Что лучше использовать?

 ,

pathfinder ()

Проблема с удаленной отладкой

Форум — Development

Пытаюсь я запустить отладку приложения, запущенного на другой машине через gdbserver.

При нажатии кнопки «с» в gdb вылетает SIGSEGV:

(gdb) target remote 10.19.32.24:10000
Remote debugging using 10.19.32.24:10000
Reading symbols from /lib/ld-linux.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/ld-linux.so.2
0xb7fdfd00 in ?? () from /lib/ld-linux.so.2
(gdb) c
Continuing.

Program received signal SIGSEGV, Segmentation fault.
0xb7feebf4 in ?? () from /lib/ld-linux.so.2

Если просто запустить приложение на удаленной машине, то все нормально запускается.

Если сначала запустить удаленное приложение, а потом к нему подключить gdbserver через параметр attach, то тоже все нормально отлаживается.

Может кто сталкивался с чем-то подобным и может сказать в чем дело?

 ,

pathfinder ()

GC и большое количество объектов

Форум — Development

Предположим, что надо написать некую программу с GUI, назовем её «конфигуратор». И этот конфигуратор должен работать с очень большим количеством объектов в памяти. Пускай, типичная конфигурация представляет собой сложную древовидную структуру, состоящую из нескольких миллионов объектов.

Насколько я понимаю, если запустится сборщик мусора, то программа надолго зависнет на весьма заметный промежуток времени.

Можно ли утверждать, что С#/Java для написания таких программ не подходят?

Вообще, что можно сказать о неприменимости языков с нативной сборкой мусора для решения определенных задач?

 

pathfinder ()

Использование workqueue

Форум — Development

Вынужден писать драйвер ядра для одной железяки. :(

Работа с устройством ведется через активный поллинг. Мне нужно некое подобие нити, которая будет просыпаться каждые 10мс и опрашивать устройство.

Хочу сделать это через workqueue в который заталкивается «вечный» work, который в цикле опрашивает устройство и засыпает на 10мс и т.д.

Вот думаю, можно ли так делать? Может есть способ лучше?

 ,

pathfinder ()

qmake vs CMake vs qbs

Форум — Development

Пишу некоторые программы на Qt в QtCreator. Пробовал все три системы сборки. Сейчас мне кажется, что с точки зрения удобства, qbs на голову выше всего остального. qmake малофункционален, а CMake страшен как чёрт.

Но это моя точка зрения. Хотел бы узнать аргументированное мнение других.

 ,

pathfinder ()

Лыжи не едут

Форум — Development

Есть такой кусок кода

    gr1 = new QGraphicsItemGroup();
    scene.addItem(gr1);

    for(int i=-20;i<=20;i++)
    {
        QGraphicsLineItem* line1 = new QGraphicsLineItem(i*10.0,-200.0,i*10.0,200.0,gr1);
        QGraphicsLineItem* line2 = new QGraphicsLineItem(-200.0,i*10.0,200.0,i*10.0,gr1);

        QPointF oldp1 = line1->pos();
        QPointF oldp2 = line2->pos();
        int a=0;
    }

Ставлю breakpoint в точке int a=0, оно мне показывает координаты oldp1 и oldp2 как (0.0,0.0). При этом сетка отображается нормально. Такое ощущение, будто каждый элемент существует в своей системе координат, а не в системе координат предка. Моя нипанимать. :(

 ,

pathfinder ()

Qt Model/View проблема с битыми индексами

Форум — Development

У меня реализована своя модель, унаследованная от QAbstractItemModel. В QModelIndex я храню не только row и column, но и указатель на объект, к которому относится этот индекс. Если объект удалить, то индекс будет содержать в себе ссылку на удаленный объект и я с этим ничего поделать не могу, так как индексы принадлежат не мне.

Проблема возникает вот в такой ситуации. Есть дерево вида:

A
B
+B1
+B2
+B3
Здесь B1,B2,B3 субэлементы B. В QTreeView выделен элемент B3.

Надо удалить B. Вызываем сначала beginRemoveRows(), потом delete для объекта B, потом endRemoveRows(). Деструктор объекта B уничтожает B1, B2, B3. Потом приложение падает в месте, где QTreeView пытается узнать у модели parent(const QModelIndex &child) для индекса B3. Естественно объекты B3 и B уже мертвы а их индексы должны быть битыми.

Как с этим бороться?

pathfinder ()

QtCreator c++11 анализатор

Форум — Development

Пишу программу под оффтопик. Среда QtCreator 2.8.1, система сборки Qbs, какая-то там. В файле .qbs прописана опция компилятора "-std=c++11". Код использует возможности с++11. Все компилируется нормально. Но сама IDE не понимает с++11. Слышал, что там внутри используется CLang для анализа кода. Я точно знаю, что QtCreator 2.8.1 умеет работать с с++11. По крайней мере при использовании QMake среда все правильно понимает.

Вопрос:

Как настроить анализатор QtCreator 2.8.1 на режим с++11?

pathfinder ()

/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found

Форум — Development
$ ./qt-linux-opensource-5.0.0-x86_64-offline.run
./qt-linux-opensource-5.0.0-x86_64-offline.run: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./qt-linux-opensource-5.0.0-x86_64-offline.run)

Не, ну сколько можно? Когда же это кончится? *плачет*

Надо собирать из сырцов? Или есть способ обойтись без задродства?

P.S. У меня стоит Debian 6.

 ,

pathfinder ()

Чем CMake лучше qmake?

Форум — Development

Предположим мы хотим написать приложение средних размеров на Qt c использованием IDE QtCreator. Надо определиться с системой автоматизации сборки. Что лучше выбрать CMake или qmake?

pathfinder ()

Глупый вопрос про удаление объектов

Форум — Development

Недавно начал писать на Qt более или менее серьезное приложение. И сразу возникла проблема.

Есть у меня класс TcpLinkManager. Он содержит член QTcpSocket. В TcpLinkManager есть методы-слоты, которые реагируют на события connect/disconnect, идущие от QTcpSocket. И есть ещё один класс Log. Когда происходят события разрыва/установки соединения из класса TcpLinkManager вызываются методы Log, которые должны делать запись в лог. Экземпляры TcpLinkManager и Log сделаны ввиде глобальных переменных. И они видят друг-друга.

Когда я закрывю приложение, то наблюдается следующая картина:

  • Вызывается деструктор глобальной переменной Log::~Log(). Объект Log уничтожен.
  • Вызывается деструктор глобальной переменной TcpLinkManager::~TcpLinkManager(). Вызывается деструктор QTcpSocket. Он закрывает сокет и выбрасывает сигнал в метод-слот TcpLinkManager. Тот пытается вызвать метод объекта Log для записи сообщения. Но объект Log уже уничтожен.
  • Segmentation fault....

Раньше я не сталкивался с подобными случаями. И не задумывался о таких вещах. Привык, что деструкторы уничтожают объект и не вызывают кучу сторонних методов с неожиданными сайд-эффектами. Я решил проблему добавлением в код TcpLinkManager::~TcpLinkManager() вызова метода .blockSignals(true) для экземпляра QTcpSocket. Но такое решение мне не нравится. Хочется так писать код, чтобы не задумываться о том, в какой последовательности будут уничтожаться объекты.

Вопрос: Какой есть способ «красиво» решить проблему? Как пишут те, кто много работает с Qt?

 

pathfinder ()

Верните aho

Форум — Linux-org-ru

сабж, ну хотя бы в Development

pathfinder ()

[Гуй] Насколько реально?

Форум — General

Я не знаю как там обстоят дела с кодовой базой, которая досталась в наследие. Но мне интересно, насколько реально отделить функционал от отображения? Было бы классно, если бы можно было менять систему интерфейса пользователя: консоль/«гуй на Qt или GTK». Насколько достижима подобная задача?

pathfinder ()

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