Форма ожидания

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Re: Форма ожидания

Сообщение zoltanleo » 10.09.2019 01:04:35

S_Gur писал(а):Постраничная подгрузка данных при работе с обычными гридами малопродуктивна и очень сильно нагружает сервер

не совсем уверен, что правильно тебя понял, но мне кажется ты что-то путаешь :)

Именно постраничная подгрузка (это когда грид к уже имеющимся у него данным подгружает в кэш с сервера ровно столько данных, сколько может показать на экране дисплея, не так ли?) НЕ нагружает сервер и является весьма продуктивной в противовес полному фетчу. Опять же сортировка может быть серверной (когда ты запрашиваешь N записей, отсортированных по ORDER BY) и локальная (когда ты выкачиваешь ВСЕ данные с сервера, а потом сортируешь их на клиенте). То же и в отношении фильтрации, построении деревьев и проч.проч.

Упомянутая тобой в стартовом посте "StayOnTop форма" и есть предложенный мною Splash-скрин, который отображается поверх остальных окон, "не дает" увидеть пользователю, как мелькают меняющиеся данные в гриде и других db-aware контролах. Наверное, стоит уточнить, чего же ты хочешь.
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 457
Зарегистрирован: 17.10.2013 10:55:01

Re: Форма ожидания

Сообщение S_Gur » 10.09.2019 09:16:38

zoltanleo писал(а):Именно постраничная подгрузка (это когда грид к уже имеющимся у него данным подгружает в кэш с сервера ровно столько данных, сколько может показать на экране дисплея, не так ли?) НЕ нагружает сервер и является весьма продуктивной в противовес полному фетчу.


Нет, не так. Постраничная подгрузка может и получает за один подход меньше данных, но зато дергает сервер каждый раз, когда пользователь выполняет любое постраничное перемещение по данным. В случае, когда, например, какой-нибудь кладовщик или менеджер в торговой фирме целые сутки работает со списком находящейся на складе продукции, таких обращений к серваку будет по несколько раз в минуту. Если таких менеджеров на фирме 100, то сервак пашет без отдыха. Насчет сортировки, фильтрации и - особенно - построения деревьев - ситуация еще хуже. Сервер должен сначала отсортировать ВЕСЬ список, и только потом возвратить тебе запрошенное количество записей из этого списка. И проч. проч... Я уже не говорю про итоги. Когда внизу списка ты хочешь видеть общее количество элементов или общую сумму цен товаров (а в EhLib несколько видов расчета итогов), независимо от того, сколько записей в гриде у тебя перед глазами на данный момент, тебе придется каждый раз выполнять дополнительные запросы для расчета этих самых итогов - а это опять же запросы, работающие со ВСЕМ списком записей. В общем, если хочешь, я могу тебе кинуть руководство разработчика к последней версии EhLib, подробности почитаешь сам

zoltanleo писал(а):Наверное, стоит уточнить, чего же ты хочешь


Я достаточно внятно объяснил, чего я хочу. Я хочу, чтобы при запуске потенциально относительно долго выполнимых операций, юзеру на глаза вешалось окно, сообщающее о выполнении в настоящее время этой операции, желательно с возможностью выдачи внятной информации о том, какая именно операция сейчас выполняется, и чтобы это окно после окончания операции закрывалось (Кстати, если при таких операциях в гриде и других db-aware контролах мелькают данные, то это обычно означает, что программиста в дата-компонентах забыл использовать DisableControls и EnableControls. При обновлении данных ничего мелькать не должно, соответственно и твоя форма не должна ничего загораживать, ее предназначение не в этом). И, собственно, как я уже писал выше, то, что я хочу, я уже сделал, и полностью удовлетворен сделанным. Я просто хотел уточнить, нет ли чего-то подходящего в компонентах стандартного набора Лазаруса, но в итоге подгрузил RxLib и взял оттуда TSecretPanel
S_Gur
постоялец
 
Сообщения: 120
Зарегистрирован: 30.12.2018 22:17:42

Re: Форма ожидания

Сообщение Vadim » 10.09.2019 09:36:41

S_Gur
Кстати говоря, даже для неопределённых текущих состояний ожидаемого процесса вполне можно использовать стандартный ProgressBar. Только привязать его не к проценту выполнения, а , к примеру, к таймеру...
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Форма ожидания

Сообщение S_Gur » 10.09.2019 10:03:45

Vadim, как вариант, почему бы и нет...
S_Gur
постоялец
 
Сообщения: 120
Зарегистрирован: 30.12.2018 22:17:42

Re: Форма ожидания

Сообщение zoltanleo » 10.09.2019 11:05:12

S_Gur писал(а):В случае, когда, например, какой-нибудь кладовщик или менеджер в торговой фирме целые сутки работает со списком находящейся на складе продукции, таких обращений к серваку будет по несколько раз в минуту.

Насколько часто обновляется список продукции на складе? Представь, ты выкачал огромный объем данных с сервера, а через 3 мин справочник обновился и твой кладовщик вынужден опять качать весь объем. Через 2 мин в справочник на сервере опять обновился. Ы?

S_Gur писал(а):Я хочу, чтобы при запуске потенциально относительно долго выполнимых операций, юзеру на глаза вешалось окно, сообщающее о выполнении в настоящее время этой операции, желательно с возможностью выдачи внятной информации о том, какая именно операция сейчас выполняется

Про сплэш я уже говорил, можно еще вместо него приделать в основную форму значок анимации (прогресс, гифка - тут я согласен) - но все равно: я сомневаюсь, что в основном потоке ты одновременно сможешь делать какие-то расчеты и рисовать на форме.

Про DisableControls/EnableControls - тоже согласен, это свойство наследников TDataSet, про которое я просто забыл упомянуть :)
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 457
Зарегистрирован: 17.10.2013 10:55:01

Re: Форма ожидания

Сообщение S_Gur » 10.09.2019 11:18:56

zoltanleo писал(а):Насколько часто обновляется список продукции на складе? Представь, ты выкачал огромный объем данных с сервера, а через 3 мин справочник обновился и твой кладовщик вынужден опять качать весь объем. Через 2 мин в справочник на сервере опять обновился. Ы?


Список продукции на складе обычно обновляется гораздо реже, чем пользователь ползает по этому списку и делает поиск, сортировку или фильтрацию. В любом случае, у пользователя есть кнопка "Обновить" и данные обновляются исключительно по запросу. Хочет - будет нажимать раз в 10 секунд, хочет - пусть вообще не нажимает. Его дело. Короче, давай заканчивать этот глупый спор. Если тебя не устраивают принципы работы с данными EhLib, можешь поспорить с ними. Я использую их гриды уже лет 10. Никто пока не жаловался, в том числе и на производительность. А возможностей на порядок больше, чем в стандартном гриде. Можно, конечно, потратить еще пару лет и написать свой грид. Как говаривал Бендер из "Футурамы", с блэкджеком и шлюхами

zoltanleo писал(а):я сомневаюсь, что в основном потоке ты одновременно сможешь делать какие-то расчеты и рисовать на форме


В дельфях при открытии набора данных такая форма прекрасно работает. В Лазарусе, вроде бы, тоже
S_Gur
постоялец
 
Сообщения: 120
Зарегистрирован: 30.12.2018 22:17:42

Re: Форма ожидания

Сообщение zoltanleo » 10.09.2019 14:44:03

S_Gur писал(а):Если тебя не устраивают принципы работы с данными EhLib, можешь поспорить с ними. Я использую их гриды уже лет 10.

больно уж деловой ты, как я посмотрю. Я их тоже пользую с 3-й версии со времен, когда у Большакова брал их на бета-тестирование. Но не кичусь этим.

А спор между нами, действительно, мало продуктивен. Ты можешь делать, как хочешь, только зачем советы спрашивать, если ты к ним не прислушиваешься, не понятно.
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 457
Зарегистрирован: 17.10.2013 10:55:01

Re: Форма ожидания

Сообщение S_Gur » 10.09.2019 15:08:32

zoltanleo, ты плохо прочел тему. Я не спрашивал, как работать с базами данных. Я спрашивал, какие компоненты можно поставить на форму ожидания. К советам на эту тему я прислушался, другое дело, что они мне не совсем подошли. У меня есть отработанный годами подход к написанию аппликаций, все, что мне нужно на данный момент - перенести его под Лазарус. И в данном конкретном случае я лучше совсем откажусь от какой бы то ни было сплэш-формы, чем изменю этот подход, тем более, что его-то я перенес без проблем, все работает. И кичиться мне в общем-то нечем, EhLib писал не я. Так что, не надо передергивать и не надо переходить на оскорбления
S_Gur
постоялец
 
Сообщения: 120
Зарегистрирован: 30.12.2018 22:17:42

Пред.

Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

Рейтинг@Mail.ru