LINUX.ORG.RU

Сообщения 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
()

Кэш CPU и сборка мусора

Форум — Development

Интересно, как влияет сборка мусора на эффективность использования кэша процессора?

Я так понимаю, что эффективное использование кэша завязано на то, как часто будут использоваться одни и те же участки памяти. Когда используется сборка мусора то повторное использование одного и того же куска памяти для новых целей возможно только после запуска GC. Последнее стараются отложить на как можно более поздний момент. Поэтому агрессивное выделение/освобождение объектов в определенных ситуациях должно приводить к постоянной перезагрузке кэша. Если реализация алгоритма на с++ допускает активное использование стека и при интенсивном создании/уничтожении объектов в стеке этот стек будет «топтаться на месте», то кэш может вообще не меняться.

С другой стороны данные, с которыми идет активная работа скорее всего были созданы в одно время и лежат в одном месте. Что хорошо, по сравнению с вариантом, когда используется malloc()/free(). В последнем случае сложно предсказать, где будут лежать данные после двух последовательных malloc() (При использовании GC данные почти наверняка будут лежать рядом).

Подводя итоги:

1. Поскольку полноценная и безопасная поддержка GC сильно ограничивает возможности использования стека, то реализации некоторых алгоритмов в языках с нативным GC будут всегда сливать по производительности в сравнении с реализацией на с++, так-как в последнем случае можно активно использовать стек для хранения объектов.

2. Если надо много работать с кучей (malloc/free), то GC покажет свои преимущества во всей красе, и по производительности, и по безопасности, и по удобству использования.

В интернете много разговоров про «ништяки» второго случая, и ничего про первый случай. Кто-нибудь может сказать что-нибудь путное по данной теме? Может я чего-то не понимаю и стек в реальных приложениях не дает больших преимуществ?

pathfinder
()

[extlinux] Защита от дурака

Форум — Development

Есть скрипт для создания специальной загрузочной флешки. Использую extlinux. Обычно у меня /dev/sdb - флешка, а /dev/sda - жесткий диск.

Сейчас скрипт на bash-e создает фаловую систему на флешке, копирует туда файлы, делает носитель загрузочным.

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

pathfinder
()

[c++] Сопрограммы в продакшене

Форум — Development

Интересует сабж. Насколько безопасно? Какими библиотеками лучше пользоваться? Есть ли грабли?

 

pathfinder
()

[c/c++] Размышления про close()

Форум — Development

Системный вызов close() теоретически может вернуть код ошибки EINTR. Я у себя использую заглушку try_close() которая перезапускает close() в случае EINTR и экстренно завершает приложение (с выбросом сообщения об ошибке) в случае остальных кодов ошибки.

Я тут смотрю многие вообще не проверяют возврат функции close().

Интересует:

1. Насколько это безопасно? Мне кажется, что очень небезопасно.

2. Кто? как? работает с close()? Если писать явно код обработки возвращаемого значения для каждого close(), то получится очень громоздко. Может у кого-нибудь есть красивые решения?

pathfinder
()

[В гугле забанили] Сборка своего toolchain-а

Форум — Development

Хочу собрать свой тулчейн под старую версию glibc (x86). Пробовал crosstool-ng, но как-то не пошло. Сейчас пытаюсь собрать вручную (почти) из исходников. Может кто-то даст хорошие мануалы на эту тему.

Заранее благодарю за доброту, терпение и понимание. :)

pathfinder
()

Вышел Parrot 3.3.0 «Fire in the Sky»

Новости — Open Source
Группа Open Source

Вышла новая версия виртуальной машины Parrot 3.3.0.

Parrot - это виртуальная машина, предназначенная для эффективного исполнения байт-кода динамических языков программирования, в первую очередь perl 6.

Некоторые из изменений:

  • IMCC имеет новый улучшенный внешний интерфейс
  • Теперь непосредственно из PIR могут быть переопределены виртуальные таблицы isa и isa_pmc
  • Новая обертка «IMCCompiler PMC», позволяющая обеспечить лучшее соответствие дизайн-документу PDD31
  • Новая опция "--with-llvm" для линковки с LLVM

>>> Подробности

 , ,

pathfinder
()

Проблема 2038 года (32 бита)

Форум — Development

Есть ли нормальный/стандартный способ решить проблему 2038 года на 32 битной платформе?

pathfinder
()

Ещё раз про корутины

Форум — Development

Навеяно недавним тредом про корутины. Можно ли использовать в продакшене корутины реализованные через функции getcontext()/setcontext(). Просто мысль возникла, никогда ничего подобного раньше не делал.

pathfinder
()

[Новость] Антивирусы для андроидов

Форум — Talks

Компании «Лаборатория Касперского» и «Доктор Веб» выпустили свои версии антивирусов для набирающей популярность ОС Андроид. Обе компании полагают, что появление большого количества вредоносных программ для этой операционной системы не за горами.

Объявлено так же, что продукты будут выполнять и другие функции обеспечения безопасности.

Kaspersky Mobile Security 9:

  • Защита от спама
  • Блокировка нежелательных звонков
  • Сокрытие списка контактов
  • Блокировка утраченного телефона через СМС (Бу-га-га)
  • Шифрование файлов
  • Определение местоположения смартфона
  • Родительский контроль

Dr.Web для Android:

  • Защита от спама
  • Гибкая фильтрация звонков и СМС
  • Ликвидация вредоносного Windows-автозапуска при присоединении флешки к смартфону

Kaspersky Mobile Security 9 для Android

Dr.Web для Android

 

pathfinder
()

[Artifical_Thought] Странный пользователь

Форум — Linux-org-ru

Вчера натолкнулся на тему, где меня предлагали забанить - ссылка. ТС давал пруф с картинкой. По какой-то непонятной причине скриншот был сделан неким пользователем Artifical_Thought а не самим FiXer. Зашел в профиль пользователя Artifical_Thought и тут самое странное.

У пользователя 0 комментарием и 0 сообщений, последнее посещение год назад (18.12.2009). При этом ясно видно, что на скриншоте с моим профилем дата последнего посещения 07.01.2011.

Вопрос: Что это за искривления пространства-времени?

pathfinder
()

Травля модераторов

Форум — Linux-org-ru

Я может затрагиваю ещё одну священную корову ЛОРа, но мне интересно, почему сабж возможен? Я имею ввиду надписи на аватарах типа «Привет(пока), isden». Явление приняло достаточно массовый характер и при этом вроде бы никого не побанили и скор не порезали. Значит ли это, что так можно поступать?

pathfinder
()

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