Pull to refresh

Comments 27

Поправил. Спасибо. На С++ чуть-чуть научился писать, а вот русский пока не освоил.
Добавьте скриншотов интерфейса. Не все готовы запускать бинарник, чтобы оценить красоту интерфейса. Это особенно трудно если у тебя не windows :)
Интерфейс, надо сказать, достаточно страшненький, с QML можно было сделать намного лучше, нагляднее и без такого количества пустого пространства, с более четким разделением на колонки.
Мы сосредоточились на скорости достижения нужной функциональности. В плане эстетики, мы остановились тогда, когда это стало достаточно наглядно и удобно (для нас). Но если вы предложите улучшения и наведете большую красоту будем Вам благодарны.

Было бы очень хорошо и правильно пример изображения этого самого интерфейса выложить, чтобы людям читающим статью не приходилось скачивать 44 мегабайта проекта.

Для человека, незнакомого с qml из статьи абсолютно непонятно, чем qml в данной задаче оказался лучше PHP или java
Типа, «я ходил в такой-то ресторан, было вкусно».
А если статья о вашем конечном продукте, то смените название.
PHP нет, потому что нужен сервер для его отработки. А Java vs QML — можно использовать то, что нравиться и что больше знаешь, хотя у QML есть свои особые бонусы при разработке. Вот хорошая статья на эту тему.
В QML сервер (VM) сразу вшит, оттуда и такой размер
Вне всякого сомнения. Мы говорим про разработку на прикладных языках высокого уровня, поэтому какой бы инструмент мы не взяли будет frontend, backend и т.д., где-то это интерпретатор + скрипт, где то виртуальная машина + код. В случае Java это VM+код на Java, в варианте Qt это код на С + java script, и т.д. Думаю нет смысла искать ответ на эзотерический вопрос «что является лучшим всегда везде и при всех обстоятельствах?», поскольку каждый будет ратовать за свой любимый фраймворк. В данном случае выбор пал на Qt, поскольку мы его хорошо знали и qml, поскольку он предоставляет удобный декларативный интерфейс описания интерфейса. Все всякого сомнения данную задачу можно решить и при помощи других инструментальных и языковых средств. Целью же данной статьи было поделиться радостью и удивлением от того насколько быстро этого удалось достичь, сравнительно небольшим объемом кода.
сравнительно небольшим объемом кода.

На php/css подобную выборку из базы я думаю можно уложиться в 3-4 килобайта текста
У вас какой объем?

И что такое «Upload to file»?
Выборка из базы осуществляется в классе MobyGamesItemsModel (260 строк кода). Возможно вы имели ввиду размер exe файла + библиотеки?
В любом случае, буду рад решению на php (люблю это язык), и читателям, думаю, оно будет полезно.
PHP нет, потому что нужен сервер для его отработки.

Небольшое замечание: Для PHP не нужен сервер. Для него нужен бинарник с интерпретатором, точно так же, как и Java.
Согласен. Оговорился. Имелось ввиду, что в отличии от Java, которая стоит практически на каждом компьютере интерпретатор PHP стоит не везде.
Про могущество и простоту в статье ничего не нашел. Слово «брат» в тексте статьи фигурирует 3 раза, слово «qml» один раз. Никаких технических подробностей реализации (кроме скорости разработки, но без сравнения с аналогами) не приведено.

Подождав пару часов и скоротав время за партией в Age of Wonders, у нас в руках оказалась полная база со всей необходимой информацией.

Вопиющее несогласование, надо либо «После пары часов за партией ...» или "… мы получили полную базу ...".

Увидев заголовок, подумал, что будет что-то обстоятельное, с описанием подходов работы со сложно структурированными данными и написанием красивого гуя, а тут
я ходил в такой-то ресторан, было вкусно


Низачет
В данном случае, с технической точки зрения особенно и нечего обсуждать, поскольку благодаря декларативному стилю описания интерфейса в qml все получилось очень быстро и просто, чем мне и хотелось поделиться. Сожалею, что Вас расстроил. любом случае спасибо. Мне важно знать мнения читателей, для написания будущих статей.
Статья немного кажется неполной. Было бы не плохо добавить скриншотами и фрагментами кода.
Так же интересно почему выбрали провязку с c++ через setContextProperty а не qmlRegisterType?
Код получился достаточно коротким и простым (если не сказать), поэтому не хотел захламлять место. Все же основная идея статьи то, что при помощи qml можно разрабатывать UI быстро (очень быстро), а если верить QtCompany, то после выхода Qt Design Studio 1.0 практически молниеносно.
P.S. Спасибо, что посмотрели код. setContextProperty использовали вместо qmlRegisterType по той причине, что модель в нашем случае не является тиражируемой сущностью, а единичным объектом к которому нужно получить доступ из кода на qml. Так что mobyGamesModel это просто связующее звено между моделью на С++ и кодом на java script.
Вся статья умещается в одно предложение «Написал просмотрщик для базы данных игр на qml, qml тащит.»
Почему вы думаете что этой статье место на хабре? (честно говоря из-за подобных статей хабр всё больше и больше становится похожим на помойку. Хабр это не площадка для блога)
Для того чтобы делится информацией и опытом, а не для того чтобы писать «Я написал такую-то тулзу, как я это сделал я вам конечно не расскажу, но вам это и не нужно, ибо там всё просто.»
Ну да, согласен, блоги вести могут тут только «корпорации». Они так и называются — "корпоративный блог".

А вообще я намекал на то, что термин «блог» слишком размытый и означает как и полноценные труды, так и сообщения в виде «твиттер-заметок», где второе поощрается крайне редко.

Я полагал, что хабр это место где разработчики (и другие люди связанные с разработкой ) могут обмениваться опытом и мнениями. Пока я человек новый и пробую себя в различных жанрах. Этот часть моего обучения. Вы можете указать какого рода бы статьи Вам хотелось видеть — это будет ценно для меня. Критика мало конструктивная.

Очевидно что если статья ничему не обучает, или если не даёт никакой информации, то это плохая статья. Нужно чтобы статья отвечала вопросу «Что нового я могу узнать?» ваша статья на этот вопрос не отвечает, если бы вы написали, как пришли к выбору, как вы реализовали это приложение (даже если это пару строчек), с какими проблемами столкнулись или почему приняли те или иные решения при разработке, и продемонстрировали результат (скриншоты хотя бы). Вот это была бы действительно полезная статья. В которой кто-нибудь что-нибудь смог бы для себя найти. А так, это просто мусор.

Хорошо. Я понял. Никогда не поздно исправиться, поэтому давайте обсудим это сейчас. Вне всякого сомнения, эта заметка подобна короткому сообщению или твиту и смысл её, как отмечено в комментариях "qml позволяет разрабатывать интерфейс очень быстро, qml рулит", поэтому возможно её стоит переименовать в "qml: могущество и простота. Часть 1-ая. Смысловая", а все технические подробности продолжить в статье "qml: могущество и простота. Часть 2-ая. Техническая". Но пока ограничимся этим комментарием.


  1. Почему сделали такой выбор? Одним из наиболее значимых факторов в выборе того или иного инструмента является полнота знания — умение им пользоваться. Особенно важен этот фактор когда мы говорим о скоростных характеристиках разработки. Другой момент, что в qt вшит мощный механизм model/view, который я не знаю как можно было бы реализовать при помощи связки php+html/css/js или что тоже python+html/css/js, о которых говорилось в комментариях выше. Возможно постраничный вывод? Но зачем? В противном случае все перенесется в код на js + jquery (или подобные технологии). Java в этом смысле обладают с qt похожими возможностями, но ввиду того, что с java знаком чуть хуже выбор склонился в сторону qt.
  2. С какими сложностями столкнулись? Ввиду того что задача была понятна, а инструменты хорошо известны трудностей практически не возникло. За исключением пожалуй совета придерживаться более четной нотации в именовании объектов и переменных в коде на qml (js), поскольку неакуратность в этом отношении может приводить к непредсказуемым результатам.
  3. Почему приняли именно такие решения в процессе разработки? Поскольку в качестве источника данных выбрали базу данных, использование model/view было естественным продолжением этого решения, а благодаря мощной поддержке моделей в коде на qml, код отвечающий за интерфейс оказался очень компактным, практически таким же как если бы мы определяли шаблон для генерации html страницы.
Sign up to leave a comment.

Articles