• MinGW. Как использовать WMI ?

    EXL
    @EXL
    Энтузиаст
    Я не совсем уверен в том, что C++-библиотеку скомпилированную в MSVC можно подсунуть в MinGW. Почитайте это:

    stackoverflow.com/questions/7064160/using-msvc-lib...
    www.mingw.org/wiki/Interoperability_of_Libraries_C...
    mingw.5.n7.nabble.com/using-VC-lib-with-mingw-td19...

    Я не знаю, что такое WMI, но вдруг в вашем случае всё решится оборачиванием хедера в extern "C"
    Ответ написан
  • Почему программа не работает вне Qt Creator?

    EXL
    @EXL
    Энтузиаст
    Я вижу несколько способов разрешения зависимостей.
    Во-первых, можно собрать libcurl и libjansson статически и прилинковать к вашему приложению.
    Во-вторых, помимо статических libcurl и libjansson можно собрать сам Qt тоже в статику и прилинковать к вашему приложению. На выходе вы получите исполнительный файл большого размера (размер можно урезать с помощью утилиты upx), который будет запускаться во всех современных дистрибутивах GNU/Linux, где есть иксы.
    В-третьих, самый рациональный способ - собрать DEB- или RPM-пакет, в котором в зависимостях прописать пакеты libcurl3(4), libjansson4, и необходимые модули с qt4(5).

    Ну а запустить сам бинарь просто. У вас в Qt Creator'е есть переменная окружения LD_LIBRARY_PATH. Просто скопируйте в терминал её значение перед запуском программы:
    LD_LIBRARY_PATH="/opt/QtSDKs/Qt5.3.1/5.3/gcc_64/lib:/opt/QtSDKs/Qt5.3.1/5.3/gcc_64/lib:/home/user/projects/jansson/lib:$LD_LIBRARY_PATH" ./my_cool_app


    Curl у вас, похоже, собран статически. Попробуйте собрать jansson тоже в статику. Тогда ошибки error while loading shared libraries: libjansson.so.4: cannot open shared object file: No such file or directory вы не получите.
    Ответ написан
    Комментировать
  • Как изменить название коммита в Git?

    EXL
    @EXL
    Энтузиаст
    git commit --amend исправляет (перезаписывает) только последний коммит. Если вам требуется изменить всю историю проекта - воспользуйтесь командой git rebase -i --root, про которую можно прочитать тут. Естественно коммиты не должны быть публичными.
    Ответ написан
    Комментировать
  • Как развернуть(deployment) Qt приложение на windows?

    EXL
    @EXL
    Энтузиаст
    Вы неправильно развертываете плагины, они должны располагаться в каталоге с программой в поддиректориях.

    Структура проекта, который будет запускаться на других компьютерах должна быть такой:

    Current Directory/
    	|
    	+-platforms/
    	|	|
    	|	+-qwindows.dll
    	|
    	+-sqldrivers/
    	|	|
    	|	+-qsqlite.dll
    	|
    	+-DatabaseAnime.exe
    	|
    	+-Qt5Core.dll
    	|
    	+-Qt5Gui.dll
    	|
    	+-Qt5Sql.dll
    	|
    	+-Qt5Widgets.dll
    	|
    	+-icudt52.dll
    	|
    	+-icuin52.dll
    	|
    	+-icuuc52.dll
    	|
    	+-libgcc_s_dw2-1.dll
    	|
    	+-libstdc++-6.dll
    	|
    	+-libwinpthread-1.dll

    И ещё несколько советов.
    1. Если ваш проект не использует QtWebkit, вы можете пересобрать библиотеку Qt 5.3.1, без библиотеки icu, тогда ваше приложение "похудеет" на 27 MB.
    2. Опять же, если вы не используете QtWebkit, вы можете собрать Qt 5.3.1 статически, получив единый испольнительный файл без всяких внешних DLL-библиотек и плагинов, который можно сжать upx'ом и получить exe-файл приемлемых размеров (~3-5 MB).

    Подробнее про развертывание можно прочитать в официальной документации.
    Ответ написан
    2 комментария
  • Запустил на сборку проект Qt. Антивирус заругался на qsvgicond.dll. Безопасный ли это файл?

    EXL
    @EXL
    Энтузиаст
    Если Qt был установлен с официального сайта, то всё безопасно; просто антивирус (вы кстати не указали какой) у вас параноик и ложно сработал. На всякий случай загрузите файл qsvgicond.dll на https://www.virustotal.com/ и посмотрите, сколько антивирусов отреагируют на него подозрительно.
    Ответ написан
    1 комментарий
  • В чем отличие между git push -u origin master и git push origin master? Зачем ключ -u для команды git push?

    EXL
    @EXL
    Энтузиаст
    В том случае, если ветка master (или branch_name) не является отслеживаемой веткой origin/master (или origin/branch_name), а вы хотите сделать её таковой.

    Выполнив команду git push -u origin master вы устанавливаете связь между той веткой, в которой вы находитесь и веткой master на удалённом сервере. Команду требуется выполнить единожды, чтобы потом можно было отправлять/принимать изменения лишь выполняя git push из ветки без указания всяких алиасов для сервера и удалённых веток. Это сделано для удобства.
    Ответ написан
    2 комментария
  • В чем преимущество Windows-серверов?

    EXL
    @EXL
    Энтузиаст
    Обойтись конечно можно. Причем многие компании весьма и весьма успешно обходятся, современные тенденции таковы, что с Windows пытаются слазить, в Германии, например, да и у нас в школах активно внедряется СПО. Преимуществ у Windows-серверов особых нет, но всё зависит от проекта. Linux-серверы банально легче администрировать, да и рынок труда переполнен вакансиями системных администраторов, которые имеют опыт настройки и обслуживания Unix-like серверов. Да и в случае нахождения каких-либо критических дыр - моментально выходят обновления. Но это не исключает того, что и на крупных проектах могут использоваться технологии Microsoft, причем весьма успешно. Примером может служить StackOverflow. Понимаете, вопрос холиварный и тут многое зависит как от самой компании, так и от продукта, который она реализует, да даже от предпочтения системных администраторов.
    Ответ написан
  • Как исправить ошибку при компилировании библиотеки Qt5.3.1?

    EXL
    @EXL
    Энтузиаст
    Есть идеи?

    Есть.
    Во-первых, по первому же запросу гуглится решение этой проблемы.
    Во-вторых, Qt больше не использует MinGW, а использует MinGW-w64 (32- и 64-битные сборки). Следовательно поддержка MinGW второстепенна, отсюда и вылазят подобные ошибки компиляции. Рекомендую вам установить MinGW-w64.
    Ответ написан
    2 комментария
  • Наличие руководств по статической сборке qt 5.2 программы под windows msvc 13?

    EXL
    @EXL
    Энтузиаст
    Там всё просто - пересобираете сам Qt-5.3/Qt-5.2 с опцией -static и, желательно, с отключенной библиотекой icu (очень много занимает), а затем компилируете свою программу статически с использованием новоиспечённого инструментария.

    Подробнее можно почитать тут.

    Ещё не забудьте прикрутить статически C++/C-Runtime библиотеки от MSVC. Как это делается в MSVC, я не знаю, в MinGW элементарно:
    QMAKE_LFLAGS += -static -static-libgcc -static-libstdc++
    Кстати, при статической сборке QtWebkit не будет собираться.

    И ещё, если размер статически слинкованной программы слишком велик - сожмите её upx'ом.
    Ответ написан
  • Как избавиться от ошибок при компиляции sfml примера?

    EXL
    @EXL
    Энтузиаст
    sudo apt-get install libglew-dev и линковать, как
    g++ -Wall -o "Shader" "Shader.cpp" -lsfml-graphics -lsfml-window -lsfml-system -lGL -lGLEW
    Ответ написан
    Комментировать
  • Как оставить след за движущейся линией QPainter?

    EXL
    @EXL
    Энтузиаст
    Возможно вам следует воспользоваться Qwt - Qt Widgets for Technical Applications.

    Или же посмотреть в сторону QPainterPath.

    mjBUA7j.png

    Там можно рисовать такие вот штуки, посмотрите примеры из документации.
    Ответ написан
    Комментировать
  • Есть ли стандарт для line separator?

    EXL
    @EXL
    Энтузиаст
    Если у вас имеется Git-репозиторий, то можно выполнить:

    git config --global core.autocrlf input
    Благодаря этому параметру код, полученный из репозиториев, на всех системах будет точно с таким же переносом строк, как и в репозитории. Однако, перед записью в репозиторий окончания строк будут конвертированы в LF. Эта настройка удобна для кросс-платформенной разработки в Unix-like системах, но так же может использоваться и в Windows. А если в Windows вам срочно потребуется CRLF, просто измените параметр input на true, таким образом при выгрузке кода из репозитория на машине пользователя будут CRLF-переносы, тогда как в самом репозитории так и останутся LF-переносы строк.
    Ответ написан
    Комментировать
  • Возможно ли перепрограммировать флешку на эмулятор клавиатуры?

    EXL
    @EXL
    Энтузиаст
    Или для подобного надо с нуля делать девайс на особой программируемой микросхеме?


    Правильный ход мыслей. Такие девайсы существуют. Гуглите "хакерские визитки".

    FNYY46TGQ5PYP4K.MEDIUM.jpg

    Прочитав инструкцию на визитке, её обладатель подключает оную к USB-порту компьтера, затем запускает Notepad, нажимает несколько раз Caps Lock и видит приветствие/доп. информацию от хакера, которая вводится как раз методом эмуляции клавиатуры.

    Флешку в такое устройство не переделать, однако засунуть подобное железо в корпус флешки можно.
    Ответ написан
    1 комментарий
  • Как правильно мержить ветки в git?

    EXL
    @EXL
    Энтузиаст
    Зачем разные части одного проекта помещать в отдельные ветки? Кажется, у вас неправильное представление смысла веток, которые используется в Git'е. Ветка в этой DCVS -- это всего лишь указатель на состояние рабочего каталога. И реализовать Work Flow, описанный вами на ветках Git'а не то чтобы сложновато, но зачем и для чего мучить бедный Git, который при каждом

    git checkout
    будет вам разворачивать поддерево то одного проекта в ваш рабочий каталог, то другого. Это во-первых, жутко неоптимально с точки зрения той же производительности, а во-вторых вы так совсем запутаетесь, тем более раз вы ещё включили в рабочий процесс слияния между этими ветками. Конфликтов слияния и трудностей таким образом можно достигнуть множество. Пожалуйста, обратите внимание на работающие подходы, используемые для разработки с использованием Git:

    Если в ваших частях проекта выражена очень разная функциональность, то можно создать два отдельных репозитория (к примеру, fronted и backend), а затем, при необходимости, соединить их в один Git-суперрепозиторий в качестве его подмодулей.

    Если одна часть -- зависимость от другой, то следует подключить эту зависимость submodule'ем или вообще поддеревом (см. главу 6.7. из книги Скотта Чакона - Pro Git).

    Если это всё же монолитный проект, имеющий две части, например, первая часть содержит реализацию логики приложения в "./src/core", а вторая -- пользовательский интерфейс в "./src/ui", то их и вовсе не нужно разделять.
    Ответ написан
    Комментировать
  • Как починить статистику на github?

    EXL
    @EXL
    Энтузиаст
    Всегда используйте справку в подобных ситуациях.

    Скорее всего статистика у вас не отображается из-за того, что не выполнено условие:
    The email address used for the commits is associated with your GitHub account.
    То есть ваш E-mail адрес, не совпадает с тем, что находится в GitHub account'е.

    P. S. И да, русские символы в вашем приложении не отображаются через Wine. Возможно в Windows с английской локалью тоже будут проблемы (приду домой, проверю и отпишусь вам).

    P. P. S. В репозитории на Github'е принято хранить только исходные коды, лицензии, документацию и ресурсы приложения. В общем необходимый минимум для построения рабочей программы. Хранить бинарные сборки (exe-файлы) и библиотеки (dll-файлы) - плохой тон. Для этого существует вкладка "Releases", куда вы можете выложить рабочую копию приложения.

    P. P. P. S. Как я и предполагал, ваша программа некорректно работает в Windows с английской локалью. Так что оберните строки как-нибудь в Unicode'ную кодировку. И ещё, у вас в репозитории есть пара скриншотов, можете добавить их на страничку проекта, если измените свой README.txt на README.md (MarkDown разметка). Вставить изображение в README.md можно так:

    ![English](https://raw.githubusercontent.com/Areso/hydrostatic_test/master/screenshot_eng.png)
    ![Russian](https://raw.githubusercontent.com/Areso/hydrostatic_test/master/screenshot_rus.png)

    Пример подобной странички с изображениями можно посмотреть тут.
    Ответ написан
    2 комментария
  • Можно, ли на Delphi, или C++ способ отображать цифры на иконке задач Windows?

    EXL
    @EXL
    Энтузиаст
    С использованием фреймворка Qt эта задача становится тривиальной. Во-первых, можно сделать "в лоб" и перерисовывать иконку тогда, когда это нужно:

    MKgjNiO.gif
    Ссылка на исходный код-пример.

    Но правильнее использовать специальные платформозависимые классы для Windows, которые специально предназначены, например, для отображения прогресса на кнопке программы или overlay-иконки, которую можно генерировать собственными силами.

    YjbMHvz.gif
    Ссылка на исходный код-пример.
    Ответ написан
    Комментировать
  • Как отрисовать большое количество интерактивных элементов в Qt?

    EXL
    @EXL
    Энтузиаст
    Смотрели в сторону QGraphicsScene/QGraphicsView для квадратиков?
    Ответ написан
    Комментировать
  • Как отобразить пробелы в VIM (ВСЕ пробелы, а не только trailing)?

    EXL
    @EXL
    Энтузиаст
    Сталкивался тоже с такой проблемой, так и не нашёл вменяемого решения. Очень привык, к тому, как визуализирует пробелы и табы Qt Creator.

    QH39XFC.png

    Так можно сразу найти проблемы с форматированием кода.
    Подпишусь на вопрос, если вы найдёте решение вне этого ресурса, пожалуйста сообщите об этом мне (коннтакты в профиле).
    Ответ написан
    1 комментарий
  • Как собрать проект open source в Qt?

    EXL
    @EXL
    Энтузиаст
    Если в этом проекте есть файл "Makefile.am", то активируйте в "Help -> About Plugins..." плагин AutotoolsProjectManager, а затем перезапустите Qt Creator и откройте этот файл в программе;

    Если ничего подобного нету, то сделайте проектный файл ручками с помощью "File -> New File or Project... -> Import Project". Ттаким образом на основе созданных файлов можно будет сделать полноценный и привычный "*.pro"-файл.
    Ответ написан
    Комментировать