Pull to refresh

Comments 59

В версии 4.8 также должен был быть добавлен модуль телеметрии, но в этот релиз он не попал, так что ожидайте в 4.9.
Да немного не успели мы к 4.8 :) Потом планируется добавить в Qt Design Studio и, возможно, в 3D Studio.
Но в размещении микроконтроллерной статьи НЛО автору отказало

Если работа по переводу уже проделана, может есть возможность выложить материал на другой площадке (https://telegra.ph/ или что для этого случая будет удобным), а тут в комментариях просто оставить ссылку?
Думаю, что не только я буду за это благодарен ;)

Я автору предлагал ещё тогда опубликовать в своём блоге, но что-то не пошло. Да, telegra.ph это хорошая идея, спрошу его.

… Спросил, он сказал что будет в telegra.ph, но пока не сделал. Буду его пинговать периодически.

Можете больше рассказать о Qt Remote Objects, как они позиционируются вообще? Я посмотрел документацию, примеры, но так и не понял, какое прикладное решение можно с ними нагородить.
Для обеспечения «банального» IPC куда лучше QtDbus сейчас справляется (он кросплатформенный и так же может работать и по сети).
Примеры какие-то уж больно синтетические в документации.

Ну D-Bus это только Linux, потому на Mac OS и Windows он не работает, а вот Remote Objects — это уже действительно кросс-платформенный модуль. Отличие от других механизмов IPC в том, что он "заточен" под Qt — оригинальный объект и реплика оба являются являются QObject, то есть вы работаете не с чем-то там, а со знакомыми сигналами и слотами.

«Ну D-Bus это только Linux, потому на Mac OS и Windows он не работает»
чегоооооо
О_О
А я его использовал в промышленной системе на Windows, причем таки в его обертке QtDbus как раз, а оказывается он там не работает…
(картинка со столом и водкой)
(а, ну я вроде сам libdbus собирал, не помню, шел ли модуль в стандартном инсталляторе, правда, но факт -это все заводится вполне).

Вы ничего не перепутали?
Да, под win сейчас там отключена работа через pipe-ы (там вроде туду было в коде), но через сетевые сокеты все норм работает, и судя по замерам производетельности, это не такая уж большая потеря (большой объем данный по dbus все равно не гоняется)

«то есть вы работаете не с чем-то там, а со знакомыми сигналами и слотами.»
вот именно dbus в qt — работаешь с сигналами и слотами. Совершенно естественным кутешным образом. Что не так?

Из коробки D-Bus только в Linux, на Windows его ещё надо приделать, чтобы пользоваться. Если вот сейчас запустить на любом десктопном Windows пример с машинкой, то приложение контроллера/пульта скажет, что нет подключения к шине, потому что самой шины нет в системе. Но спасибо за информацию, что он таки может там работать, я до этого только знал из вики, что теоретически порт под Windows существует.


Да, тоже сигналы-слоты, но если говорить о "банальном" IPC как о работающем одинаково на всех платформах, то в этом плане Remote Objects предпочтительнее, потому что им не требуется наличие какой-то системной шины как в случае с D-Bus. Ну и я бы не назвал Qt D-Bus банальным IPC, там не сразу всё так просто работает, надо сначала сгенерировать специальный XML для регистрации методов (впрочем, с Remote Objects почти такая же история).


Мне самому пока ни разу не пригождался ни тот, ни другой (может просто задач таких не было), потому синтетические примеры из документации реальными дополнить не могу, к сожалению. Ну хотя вот было демо с комбинацией WebGL стриминга и Remote Objects с целью реализации мирроринга (зеркалирования?) GUI между устройствами по сети — можно его рассмотреть в качестве более-менее примера из реальной жизни.

Ну хорошо, по крайней мере из вашего коммента я понял, что сфера применения у них примерно одна и та же, спасибо.
Генерация XML протокола — ну да, пожалуй, этого отличия достаточно.
Переходят значит на CMake… С софтом часто так — чем уродливей, тем успешней, а все говорят, что красота спасет мир, врут наверное…
В плане лицензирования инструмент вроде как заявлен в Open Source (GPLv3), но в то же время вроде как для распространения результатов работы требуется коммерческая лицензия
А так вообще можно? Это не противоречит GPL?

Отличный вопрос, я его сам задавал менеджерам продукта, когда стало известно о модели лицензирования, но как я понял они сами ещё не до конца определились, потому что однозначно мне так и не ответили.


Если бы Qt Design Studio была исключительно коммерческим инструментом (как например Qt Configuration Tool), то и вопросов бы не было.


Но ведь они же захотели как бы и в Open Source, но одновременно с этим и ограничить использование без коммерческой лицензии. В итоге получилось как в анекдоте про "крестик или трусы": вроде и GPL, а распространять без лицензии нельзя.


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

С одной стороны жаль, что qbs закрывают, он мог бы стать более изящной заменой для cmake, но с другой стороны, я давно уже ожидал отказ от qbs и qmake. Это было закономерно.

Никогда не понимал, зачем эти велосипеды. Проблема в том, что разработчики qbs и qmake никогда не претендовали на универсальность и конкуренцию с cmake, всегда позиционировали qbs и qmake как инструмент нацеленный на Qt инфраструктуру. В такой ситуации, они были обречены на провал рано или поздно т.к. более универсальный инструмент лучше в данной ситуации. Куча популярных C++ библиотек поддерживает интеграцию в cmake-проекты, но я не знаю ни одной популярной (не header-only), которую легко было бы интегрировать в qmake/qbs проект, что бы можно было обойтись без cmake. В результате от cmake отказаться все равно никакой возможности нет.
За полгода вышло две версии Qt Creator: 4.7 и 4.8.

Частые обновление QtCreator — боль для плагинописателей. С каждым обновлением API немного, но меняется, а значит старые плагины перестают подходить к новым версиям и разработчикам сторонних плагинов приходится вносить в них изменения под каждую свежую версию.
Не обновление как таковое, а отсутствие стабильного API. Это как в Linux kernel. По сути, мотивация пропихнуть свой плагин в апстрим примерно такая же — чтобы снять головную боль при изменении API.

Более того, не знаю как у вас, я сталкивался с тем что в минорном апдейте все отваливалось даже.
Похоже, что нет… Таки как был там qRound так и остался.

Написал менеджеру продукта, ответственному за Qt Widgets и вообще десктопы. Надеюсь, он обсудит с командой и что-нибудь сдвинется с места (или таки продолжат работу, или закроют окончательно).

Если будут новости, напишите пожалуйста.
А нормальную сборку для Windows 64-bit так и не завезли? Без зависимостей от Visual Studio? И кстати, в чем тут проблема?

Ну там прям уж не зависимость от Visual Studio, а требование наличия MSVC. А если вы имеете в виду MinGW, то завезли:


MinGWx64

Завезли же. Сейчас сборка Qt для Windows есть с MinGW 7, 64-bit only
Проблема была и наверное есть в Mingw64. Который как бы странный, что ли неофициальный он, не знаю как сейчас, я его как-то не с первого раза подобрал и уже много лет сам собираю Qt на нем для своих проектов.
VS было лень использовать по причине большого легаси кода, который всегда работал на GCC и есть проблемы переносимости на VS, такие как работа с указателями на функции члены класса, инициализация массивов на стеке и прочие нестыковки с мелкомягкими.
Mingw64 это форк Mingw, в нем нет ничего неофициального. Запиливание полноценной работы с 64-битной виндой изначально было одним из приоритетов проекта.

Меня немного удивило то что 32-битных сборок mingw теперь нет)

Не только вас. В рассылке это как раз обсуждают. Там кстати привели отличный аргумент, что для никому не нужного UWP поставляется аж 6 комплектов бинарников, а для MinGW не могли x32 оставить. Ну и вроде команда внезапно задумалась, как так получилось.

Так поддержки QtWebEngine все равно же под mingw нет и не будет. Ожидается ли поддержка clang?
Since October 2017, clang is the default [Chromium] compiler on Windows.

И даже сборка с lld вроде работает.
Но даже если WebEngine переведут на clang/lld, clang не входит в список поддерживаемых Qt платформ под win, в отличии от mingw.
А не планируется никак переписывать внутренности Qt'а с поддержкой C++11/14/17/2a и ближе интегрироваться с stl? Или может быть как-то влиять на этот самый stl и стандарт?

А то QString очень приятно использовать, но некоторые вещи хочется взять из boost'а, некоторые из std (тот же string_view, например) и получается, что в одном проекте в разных неймспейсах 10 видов одних и тех же контейнеров.
Чур меня. В QtCore слишком много вкусного чего нет в stl.
Если и так, то лучше бы они выделили это в отдельную небольшую библиотеку, которую можно было бы использовать отдельно от фреймворка и под более permissive лицензией чем LGPL. Что-то вроде Eigen, rapid_json, Catch2 и т.п.

Но вообще, я не знаю, что такого вкусного* есть в Qt, что лучше имеющихся универсальных аналогов. Даже реализация signal/slot механизма из Qt выглядит на сегодня не самой удачной.
* кроме вещей связанных с GUI напрямую, естественно.
Тем, что накладывает ограничения на static linkage, а также bare metal, например. MPL, к примеру, не страдает от таких недостатков.
This allows, for example, programs using MPL-licensed code to be statically linked to and distributed as part of a larger proprietary piece of software, which would not generally be possible under the terms of stronger copyleft licenses.
Это распространенное заблуждение, про то что GPL/LGPL речь только о dll-ках.
Ты можешь Qt поставлять и в виде dll-ки, но если в приложении будешь проверять его чексумму, например, LGPL будет нарушен, т.к. пользователь не сможет сам заменить библиотеку.
Что не подходит для header-only библиотек, что было бы в данном случае вполне уместно. Кроме того, необходимость предоставлять объектные файлы — не очень.
«Кроме того, необходимость предоставлять объектные файлы — не очень.»
а что конкретно не очень?
в них содержится столько же информации, сколько и в dylib/so, ну если не оставлять дебажные символы, конечно. Я не прав?
Неудобно для пользователя — возможно, но мы же о соблюдении лицензии и ее свобод говорим.

Не очень то, что разработчику неудобно. Lgpl не может быть header only. Защита свобода пользователя, с моей точки зрения, все равно достижима только если вся программа свободна, a LGPL этого не гарантирует. Свобода части программы ничем не лучше полностью несвободной программы, мне кажется. Зато LGPL удобству разработчика препятствует.

Я не знал про эти особенности LGPL, но сейчас авторы Eigen поменяли лицензию на MPL2:
This page used to have a long FAQ that we thought was useful when Eigen was LGPL-licensed.
Now that Eigen is MPL2-licensed, there is no need anymore for that.
Не буду расписывать всё что использую — остановлюсь на одном.
QByteArray/QDataStream — для работы с бинарными данными великолепные инструменты. Заменить конечно можно но функционала не будет хватать. Я писал два варианта небольшой библиотеки с stl и c qt — так вот без QByteArray как без рук.
Ну библиотек для сериализации под C++ хватает. Если нравятся потоки — Boost.Serialization, а так — protobuf, cereal, etc. И они более портируемы и софт с ними легче поддерживать. Лицензии более разрешительные.
Вы не поняли. Сериализация это то же хорошо и QDataStream неплохо решает. Но я про работу с сырыми бинарными данными. Например у меня задача работы со смарткартами по APDU. Там туда-сюда пересылаются пакеты в бинарном виде которые мне надо формировать и парсить. QByteArray для этого очень удобен. А вот вами перечисленное нет ибо переусложнено.
А по поводу портируемости и поддержки я бы поспорил. Чем вам портируемость Qt не нравиться. А поддержка ИМХО удобней чистого ООП как в Qt, чем например шаблонного ада boost или С-style protobuf.
UFO just landed and posted this here
UFO just landed and posted this here
Еще нигде не упоминается, но в Qt Creator добавили плагин Cppcheck.
Помечен как экспериментальный и по умолчанию отключен.
Можно включить через меню About Plugins…
Это он код превращает в желтый ад? Или это еще один из тех кто будет свистеть каждому неявному касту — мол потеря точности и прочим вещам подпадающим под примитивные правила без разбора контекста? Увы без возможности фильтрации сообщений, несмотря на всю ценность статических анализаторов — вынужден был отключить это безобразие, ведь код я все еще пишу для людей и не намерен превращать код в нагромождение static_cast<...>(...) и прочих излишеств в угоду подавления сообщений.
Нет, это вы о Cland Code model.
Как я уже сказал, Cppcheck отключен по умолчанию.
Ясно, как обновлюсь, надо будет попробовать, может он все же поумнее окажется.
Плохо, что настроек нет для отключения конкретных сообщений, для Cppcheck наверное тоже не стоит ожидать настройки фильтров?
Для clang code model тоже все отключается. Задайте флаги -Wall, например, исключите там то что вам не нравится и радуйтесь.
C++->Code Model-> Manage…
Вот вроде прекрасная и, наверное, единственная платформа в С++, но какая-то не законченная для прикладной разработки.

Начинаешь писать мобильный факультативчик, быстро выясняется, что из коробки для рекламы и аналитики ничего нет (н-р, интеграции с Firebase).

А далее выясняется, что для крашрепортинга тоже ничего нет, хотя, как я понимаю, платформа сейчас нацелена на embed разработку. При этом с каждом релизом появляются и исчезают модули сомнительной полезности.

Да, мобильные платформы «из коробки» обделены вниманием, мягко говоря.


Но есть хороший сторонний фреймворк — Felgo (ранее V-Play). Там многое из перечисленного вами присутствует.

Вот это удивляет.

Про V-Play знаю, но дело даже не в том, что они денег хотят. Они привносят слишком много своего, включая базовые компоненты, плюс получается сразу слишком много новых интеграций.
Sign up to leave a comment.

Articles