LINUX.ORG.RU

Сообщения vladimirsmirnov9

 

всю жизнь работал с высокоуровневыми штуками, нужно писать без них

В общем, всегда писал приложения независимо от платформы (шindoшs, liпuх, мас, bb, апdгoid) и направления (консольные\гуёвые) с использованием, собственно, фреймворка Qt. И тут, внезапно, появилась интересная вакансия - писать придётся на Pure C (sic!) для Linux страшные сетевые да многопоточные штуки. И не то, чтобы меня это пугает, нет. Всю жизнь мечтал изучить низкоуровневое программирование - ведь true way, но, похоже, у меня one love, обмазался сегодня Йоном Снайдером да Шоном Уолтоном и сейчас испытываю большую попоболь. Ну ведь и вправду, всё это жутко неудобно - PF_INET, SOCK_STREAM, sockaddr_in, СТРУКТУРЫ и НИКАКОГО ООП (и это только начало Пути). Кому это может понравиться? То ли дело - взял QTcpServer, взял QTcpSocket, прикрутил QThread или QtConcurrent по задаче да желанию - готово.
Вопрос к сообществу - стоит ли учить всё это дело (объективно - разумеется, эти знания никогда не повредят, субъективно - есть вариант продолжить работу с meego\maemo\tizen и любимым няшенькой Qt, параллельно занимаясь собственными проектами), или я навсегда потерян для высокого общества низкоуровневых программистов? Раньше я даже об STL старался руки не марать, а тут, право, настоящая чернуха начнётся.

 , , , ,

vladimirsmirnov9
()

C++ библиотека для форматирования (подсветки) кода

В общем нужна либа, которая парсит текст (ориентировочно - JavaScript, но хорошо, если и что-нибудь ещё) и выдаёт на выходе его же, но подсвеченным с помощью HTML-тегов. Source-highlight не подходит, потому что GPL. Вообще использовать планирую в связке с Qt, да, я знаю, что там есть QSyntaxHighlighter, но на первый взгляд он показался каким-то неповоротливым и мерзким (я известный неосилятор и лентяй, а ему там, видите ли, нужно регулярки задавать руками), поэтому решил спросить здесь (видите, мне даже самому искать лень!). Ну и на всякий случай озвучу - хотелось бы, чтобы при повторном парсинге уже подсвеченного кода значит всё это дело корректно обрабатывалось и лишние теги не добавлялись. Спасибо.

 , , , ,

vladimirsmirnov9
()

BlackBerry PlayBook: заменить QNX на Linux

Сабж. Уж больно, братцы, охота увидеть KDE (Plasma Active) на любимом (ха-ха) планшете. Лёгкий гуглинг подсказал только то, что загрузчик заблочен и вряд ли что-то путное из этого выйдет. С другой стороны, ведь многие устройства взламывают, несмотря на разную защиту.
Сам я не спец по всякого рода железкам, поэтому обращаюсь к сообществу. Вдруг найдётся добрый (и умный) человек, который захочет этим заняться.

 , , ,

vladimirsmirnov9
()

распарсить лицо и нарисовать все черты отдельными линиями

Сабж. До чего дошёл - применяю cvSmooth, cvCanny и затем cvHoughLines2 - эффект не совсем тот. Нужно как-то построить по точкам линии регрессии (линейную регрессию?), но похоже, что подобных средств в OpenCV нет (поправьте, если не прав).
Получить нужно примерное следующее: контур лица и на нём отдельными сплошными линиями контуры носа, глаз, бровей, губ.

 ,

vladimirsmirnov9
()

Qt 5 из git: не собирается qtdeclarative

Пилил проект для BlackBerry PlayBook на Qt 5, тестил на десктопе с OpenSUSE 12.2.
И всё было хорошо, пока, наконец, официально не был пофикшен один баг, что, в свою очередь, сподвигло меня обновиться до OpenSUSE 12.3.
Много раз собирал Qt, думал, получится без особых проблем и сейчас...

qtbase собрался ок; устанавливаю, прописываю в переменные окружения
qtjsbackend собрался ок
qtdeclarative не собирается! вот листинг: http://pastebin.com/nu1nBCNJ

Понятно, что дело в заголовках, но как теперь его собрать? пробовал и INCLUDEPATH в qtdeclarative.pro до qtdeclarative/include/QtQml/5.1.0/QtQml/private, и INC = -I%то-же-самое% в makefile (вообще я не спец в этих делах)
Сливать всё заново и пытаться собрать тоже уже пробовал, результат не изменился.

Версия NDK 2.1.0-linux-1032-201209271809-201209280007

 , , unacceptablecondition

vladimirsmirnov9
()

QtQuick 2.0: сохранить QQuickItem как QPixmap

Срочно нужен способ сохранения текстурок Item'ов в изображения. В QtQuick 2.0 всё хитро устроено внутри, и на самом деле сделать это не так-то просто. Стандартные элементы работают через QSGNode и наследуются от QQuickItem (не QQuickPaintedItem). Заграбить всё окно целиком легко, но мне нужно сохранять текстуры по отдельности: так, как собственно мы с ними работаем. Пробовал уже делать фон окна прозрачным, но тогда при сохранении в png фон не прозрачный, а чёрный.

layer.format: ShaderEffectSource.Alpha тоже пробовал, ничего не изменилось
получить текстуру через QQuickItem::textureProvider() тоже не получается (всегда возвращается 0 - стандартная реализация)

 , ,

vladimirsmirnov9
()

Qt 5 на Android

Кто-нибудь пробовал? Какие подводные камни? Есть один проект на QtQuick 2.0 для BB10, хочу портировать на Андроид. http://necessitas.kde.org/necessitas/qt5.php - тут пока пусто. И да, можно ли собирать пакет статично - чтобы все кьютовые либы были включены в apk и не требовали Ministro (2gis ведь как-то так и работает)?

 , necessitas, ,

vladimirsmirnov9
()

[svg] «вырезать» содержимое по маске

имеется svg-рисунок со множеством элементов, в том числе полупрозрачных, которые накладываются друг на друга. фон изображения - прозрачный. можно ли каким-нибудь образом вырезать по маске содержимое конечного изображения так, чтобы фон оставался прозрачным?
например, как можно сделать следующее: изображение с прозрачным фоном, на нём 100% на 100% квадрат, залитый цветом, поверх которого расположен текст, буквы которого просвечивают в изображении насквозь? лучше объяснить не могу, хотя вроде понятно получилось

 

vladimirsmirnov9
()

рендеринг css в png

сабж. хочу таким образом добыть спрайты няшных кнопок, так как дизайнер из меня весьма посредственный.
как вариант можно найти способ сохранить содержимое вьюшки браузера в png, так как поиск «css to png» ничего не дал. но обязательное условие - прозрачный фон изображения, так как там ещё местами тени бывают.

Перемещено true_admin из development

 ,

vladimirsmirnov9
()

чем собрать Qt для QNX: gcc или qcc

собрал Qt5 по этой инструкции: http://qt-project.org/wiki/Building-Qt5-for-the-Playbook (компилировал под оффтопиком с помощью mingw)
настроил Qt Creator 2.6 beta на компиляцию под Blackberry Playbook с помощью qcc из bbndk-2.1.0-beta1, да только вот беда - любое приложение (widgets или qtquick2) успешно собравшись в .bar (который весит около 80мб - внутри лежат все необходимые либы) и установившись на реальный playbook (os 2.1.0.1032), вылетает сразу же после splash-скрина. и тут, почесав репу, я задумался: а как же либы, собранные с помощью mingw, пусть даже с Qt сконфигурированным для blackberry-armv7le-qcc, могут работать на плэйбуке? ведь если бы gcc мог выдавать код, пригодный для этой архитектуры, то не нужен был бы qcc
удалив всё, решил попробовать собрать Qt на этот раз с помощью qcc - добавил в самое начало PATH C:\bbndk-2.1.0-beta1\host\win32\x86\usr\bin, запустил make - но не тут-то было. в выводе всё равно мелькало g++, что мне не понравилось
вопрос к знатокам: правильно ли, что для сборки кьютовых приложений под плэйбук необходимо собрать Qt обязательно с помощью qcc? и как это сделать в моём случае? мне что теперь, удалить на время сборки mingw, чтоб он не мешался? просто я думал, что пути в PATH учитываются приоритетно, а тут такое

 , , ,

vladimirsmirnov9
()

javascript: одна глобальная переменная принимает различные значения в разных функциях?

пилю проект на QML
логику описываю на Javascript
и вроде всё у меня получалось - до этого момента

var bombCount = 0
// много кода
function createBomb() {
    if (bombCount<3) {
        // создаю бомбу
        bombCount++
    } else console.log("CANNOT", bombCount)
}

function removeBomb(n) {
    // удаляю бомбу
    bombCount--
    console.log(bombCount)
}
при создании bombCount инкриминируется верно; при удалении в консоль всегда падает -1, бомбы не создаются больше трёх
в чём причина сего действа?

 , ,

vladimirsmirnov9
()

Виртуальный джостик на QML

Хочу сделать что-то вроде этого: http://savepic.su/2745811.png
Мой код: http://pastebin.com/sxfEftfu
С геометрией у меня никакне очень, поэтому прошу помощи. Дополнить необходимо ветку else в onPositionChanged у joystickArea
Используются эти изображения:
background.png http://savepic.su/2747776m.png
finger.png http://savepic.su/2731392m.png

 ,

vladimirsmirnov9
()

std::map от std::pair

мне нужен словарь для хранения информации о расстоянии между двумя вершинами графа (вершины заданы их номерами, расстояние - положительное целое)
хотел написать что-то вроде std::map< std::pair<int, int>, int>, для чего первым делом унаследовался от std::pair и перегрузил оператор ==, чтобы не хранить в словаре избыточную информацию (из 1 к 20 вершине это то же самое, что из 20 к 1)
но тут возникла проблема:

std::map< myPair<int, int>, int> map;
myPair<int, int> p1;
p1.first = 10;
p1.second = 20;
myPair<int, int> p2;
p2.first = 20;
p2.second = 10;
// p1 == p2 возвращает true
map[p1] = 100;
// map[p2] == 0
[/cpp]
почему?

 cpp srl

vladimirsmirnov9
()

конвертация IplImage в QPixmap и назад

как? в интернете много способов, но всё сводится либо к сохранению\загрузке изображений, либо попиксельному копированию. неужели нет способа конвертации через IplImage::imageData?

 , ,

vladimirsmirnov9
()

оператор = и конструктор копирования QObject

кто-нибудь может внятно объяснить, почему конструктор копирования и оператор присваивания у QObject объявлены как private? написал тут пару потомков, а оно не компилируется :(
ну нужно мне копирование (удобно для текущей задачи размещать много-много потомков QObject в стеке - и нужна поддержка собственно сигналов\слотов, там таймеры внутри)

 , ,

vladimirsmirnov9
()

внутреннее устройство контейнеров Qt

вопросы:
1) где располагаются данные (положим, валидные указатели), забубененные в контейнер, находящийся в стеке и целесообразно ли размещать сами контейнеры в динамической памяти (плюсы и минусы обоих вариантов).
2) есть ли принципиальное отличие (по данному критерию) контейнеров Qt от контейнеров STL

 , ,

vladimirsmirnov9
()

сообщения между потоками

пытаюсь разобраться с многопоточностью Qt\C++
объясните, пожалйста, почему вот этот мой код работает не так, как задумывалось:

phyThread.h

#include <QThread>

class phyThread : public QThread {
    Q_OBJECT
public:
    void run();
signals:
    void count(int);
};

phyThread.cpp
#include "phyThread.h"

void phyThread::run() {
    int i = 0;
    while (i < 5) {
        emit count(i);
        i = i + 1;
        sleep(1000);
    }
}

phyView.h
#include <QtGui/QtGui>
#include "phyThread.h"

class phyView : public QGraphicsView {
    Q_OBJECT
    
public:
    phyView(QWidget *parent = 0);
    ~phyView();
protected:
    QGraphicsTextItem *text;
    phyThread *thread;
public slots:
    void changeCount(int);
};

phyView.cpp
#include "phyView.h"

phyView::phyView(QWidget *parent) : QGraphicsView(parent) {
    QGraphicsScene *scene = new QGraphicsScene(this);
    scene->setSceneRect(0, 0, 640, 480);
    setScene(scene);

    text = new QGraphicsTextItem();
    text->setPlainText("test");
    scene->addItem(text);

    thread = new phyThread();
    thread->moveToThread(thread);
    connect(thread, SIGNAL(count(int)), this, SLOT(changeCount(int)));
    thread->start();
}

phyView::~phyView() {
}

void phyView::changeCount(int i) {
    text->setPlainText(QString::number(i));
}

main.cpp
#include <QtGui/QApplication>
#include "phyView.h"

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    phyView w;
    w.show();
    
    return app.exec();
}

стоит добавить, что кучу материала по теме я уже прочитал;
понятно, что сигнально\слотовые соединения между потоками внутри превращаются в события;
понятно, что тип соединения Qt::DirectConnection ни к чему хорошему в данном случае не приведёт;
thread->moveToThread(thread) - подобное решение нашёл в постах '08-09 годов на различных форумах; необходимо для того, чтобы слоты выполнялись в контексте моего потока
пробовал запускать в потоке свой цикл обработки событий, это ничего не изменило, оно и понятно: в потоке без своего цикла сигналы будут эмитироваться, но слоты работать не будут;

в общем, на деле здесь я получаю text с установленной строкой 0, хотя ожидаю последовательную смену значения от 0 до 4 с интервалом в секунду

 , , ,

vladimirsmirnov9
()

QGraphicsScene в отдельном потоке

можно ли вынести QGraphicsScene в отдельный поток, а отображать её виджетом, находящемся в главном?

 , ,

vladimirsmirnov9
()

кроссплатформенная библиотека для воспроизведения mp3 или ogg

посоветуйте что-нибудь по сабжу (бесплатное, и чтоб работало на основных десктопных платформах, на которых есть Qt - Windows, X11, MacOS). обязательное требование - привязка к C++, поэтому SDL не подходит. phonon также не предлагать, он глючен и ужасен. будет шикарно, если найдётся решение, которые заведётся без пинков под android'ом - в связке с necessitas'ом, но это необязательно.

 ,

vladimirsmirnov9
()

QKeyEvent, убрать интервал между первым и последующими событиями

QApplication::setKeyboardInputInterval(int);

и

if (keyEvent->isAutoRepeat()) keyEvent->ignore();
не предлагать, всё не то.

собственно, нужно для игрушки, где управление осуществляется с клавиатуры.
понятно, что в обыкновенных виджетах autoRepeat нужен, но почему у QPushButton есть такие свойства, как autoRepeatDelay и autoRepeatInterval, а у QGraphicsView нет?

 , ,

vladimirsmirnov9
()

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