metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2009-11-03 10:58 am

О выборе платформы для новых проектов

Вот тут ребе [livejournal.com profile] belnetmon спрашивает совета про выбор платформы для новых проектов. Для проектов типа GUI или типа веб. Там в комментах советуют всякое страшное, но не в этом суть.

Что-то меня вообще такая формулировка вопроса смущает. Основная проблема при переходе с используемых платформ на новые - это то, что "все нужно переделывать". Вот, к примеру, я как-то попытался повторить идеи, использумые в софте на дельфи (обобщенный MDI-клиент для Firebird), на дотнете (сделать клиент к произвольной реляционной БД). Оно вообще получилось и работает. Но поголовно "все не так". Не так работают дата-гриды, не та модель работы с данными, непонятно, что использовать в качестве генератора отчетов, итд.


Если переходить на что-то еще менее привычное - предвижу всякое безумие, в плане того, что обязательно чего-нибудь привычного будет не хватать. Вот к примеру кроссплатформенная библиотека для RS232. Советуют boost.asio, но там нету ручного управления линиями(в документации с первого раза я это не нашел). Потому, что "никому не надо". И так, скорее всего, будет со всем. По опыту - будут библиотеки для любых целей, но конкретно мои задачи будут требовать от них каких-то функций, которых нет, потому что "никому не нужны".

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

[identity profile] zamotivator.livejournal.com 2009-11-04 12:48 pm (UTC)(link)
Это у тебя сплошное словоблудие.
В студию пример, который "делать дорого".
Проперти в qt есть, если что.

[identity profile] vp.livejournal.com 2009-11-04 01:06 pm (UTC)(link)
Дык я именно про это и говорю, что придется делать самостоятельно.
Допустим, есть проект, в нем три десятка отображаемых таблиц, под каждой из которых будет своя модель.
У меня есть под это какие-то метаданные, как должна выглядеть таблица.
И есть метод. как я могу эти таблицы рисовать в qt - а именно вариацией на тему перекрытия, допустим, QSqlQueryModel::data, расписывая там все внутри по ролям.
То есть все равно нужно создавать реализацию для этого дела, обобщенную, чтобы я мог из метаданных загрузить вид таблицы в зависимости от случая, эта моя перекрытая модель бы это дело рассосала и показала бы мне таблицу как положено.
А речь о том, что можно было бы сделать для 99% случаев такой функционал внутри модели, ну или обозвать ее там пусть QSqlQueryModelMostUsed, и для подавляющей массы случаев этого бы хватило выше крыши.

Или я не понял твоего вопроса? :)
ЗЫ проперти qt тут ни при чем

[identity profile] zamotivator.livejournal.com 2009-11-04 01:09 pm (UTC)(link)
Я не понял твоей проблемы.
Нахера ты вручную делаешь модели для таблиц?
Бери QSqlMode, наворачивай поверх QSortFilterProxy - и получай profit.

[identity profile] vp.livejournal.com 2009-11-04 01:16 pm (UTC)(link)
Я про базовые желание при реализации таблиц сделать такие-то капшыны в заголовках, таким-то цветом. таким=то шрифтом и т.п.
В какой последовательности ты такие типовые задачи решаешь?

[identity profile] zamotivator.livejournal.com 2009-11-04 08:08 pm (UTC)(link)
Ёлы палы!
Капшены:
http://doc.trolltech.com/4.5/qsqltablemodel.html
QSqlTableModel *model = new QSqlTableModel;
//...
model->setHeaderData(0, Qt::Horizontal, tr("Name"));
model->setHeaderData(1, Qt::Horizontal, tr("Salary"));
Нужно вечно задавать цвет и шрифт?
Настрой стиль на application глобально.
Нужно лишь для некоторых?
Ищи в документацию в QWidget setBackgroundRole/setForegroundRole, либо пронаследуйся от QSqlTableModel один раз, определи всё по рялом, вытащи нужные тебе параметры в Property, и юзай свой один раз написанный класс для моделей.

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

[identity profile] vp.livejournal.com 2009-11-04 08:48 pm (UTC)(link)
либо пронаследуйся от QSqlTableModel один раз, определи всё по рялом, вытащи нужные тебе параметры в Property, и юзай свой один раз написанный класс для моделей.

Вот именно про это я и писал и именно так и делал :)

Речь шла не об этом. А о том, что на мою точку зрения, имея за горами 2009 год и вагон чужого опыта в лице MS-Borland можно было бы придумать "в базовой поставке" средства поприятнее. Например, в упомянутых продуктах есть почти что интерактивные средства дизайна таблиц, сопоставление типа "имя поля из базы - колонка - параметры". Почему такое хотя бы было не повторить кроме как по причинам религиозным - я ума не приложу, то что это неудобно - не поверю, ибо скорость опять таки разработки увеличивается в разы. Да, я понимаю, что [livejournal.com profile] zabivator сделает обертку и получит то что хочет, но вот это и есть тот самый входной порог. А 99% программистов "опердней" пойдет на вижуал бейсик или еще куда...
Короче, философия :)

[identity profile] zamotivator.livejournal.com 2009-11-04 08:54 pm (UTC)(link)
Ребята, ваша критика просто смешна.
Qt - библиотека общего назначения, она достаточно гибка и расширяема.
Вас не устраивает, что нужно написать порядка десятка кастомных контролов? Это вздор.

Нету времени? Ребята, у меня есть предложение - я вам напишу и доработаю эти контролы по вашим требованиям по цене 10 баксов в час (стандартная такса). Деньги за результат, а не за время. Идёт?

[identity profile] vp.livejournal.com 2009-11-04 09:04 pm (UTC)(link)
Ну вот таки и зочем ви травете и сгазу переходите на тему шекелей? :)

[identity profile] zamotivator.livejournal.com 2009-11-04 09:06 pm (UTC)(link)
Я рейт обозначил.
Вам попиздеть как всё хуёво, или работать надо? Брюзжать и я могу.
А то ишь, не нравится им что нету виджета "бухгалтерский отчёт для БР".

[identity profile] zamotivator.livejournal.com 2009-11-04 01:09 pm (UTC)(link)
*QSqlModel