powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Где взять хорошие LAF-ы?
25 сообщений из 132, страница 4 из 6
Где взять хорошие LAF-ы?
    #34095350
Vladimir Kozlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carper Vladimir Kozlov
А я вот никак понять не могу - даже при суперумном гриде (кстати, энтузиастам DevExpress рекомендую отселектить 200000 записей и включить в гриде фильтрацию) - неужели найдется такой пользователь который осилит все 200000 в гриде просмотреть? :)

Да не осилит никто, это все тайно понимают. Но иначе ведь придется ломать голову как клиенту не дать этого сделать не вызвав неудовольствия последнего, а психология это слабое место программистов. :)


Да тут даже не психология нужна а книги по юзабилити :)

carper

А какие при этом финты ушами вытворяет ADODataset в связке с MSSQL - вообще не передать словами...

А какие, а то я не разбирался? Что-то особенного? :)


На больших запросах - таки да, вплоть до наглого пожирания виртуальной памяти в момент открытия датасета. Шаманство с серверными курсорами тоже не всегда помогает. А вот SQLDirect от российского автора работает на тех же запросах прекрасно.

carper

Но можно написать своё. Да, время теряется, которое можно было бы потратить на собственно логику программы. Но - время теряется один раз. Пишешь один раз - юзаешь везде.

Просто далеко не всем это нужно, а вхождение новичка в JAVA неоправдано замедляет. Чисто психологически очень приятно, когда тебе подставляют надежное плечо, а не бросают в прорубь - может последний метод и хорош, но почему-то мало кому нравится. :)


Согласен. Влезая в жабу нужно быть готовым к тому что попотеть придется.

carper

У меня в наследнике TableModel живет более-менее похожий на дельфийский FieldsCollection :) Ну и соответственно всякие FindField, GetFieldByName, SetFieldByName. А теперь сюрприз - для вычисляемых полей есть флажок - вычислять один раз в пределах жизни модели или при каждом обращении. Причем это где-то там в кишках модели кэшируется и совершенно не озабочивает приложение.
Я бы все же вынес это, хотя бы частично, в шлюз таблицы данных.
А с вычисляемыми данными не совсем понял - зачем флажок?
null - считаем, что-то другое либо пересчитываем, либо нет, в зависимости от флажка?
Я правильно понял?
Если так, то для сложных вычислений IMHO правильное решение, а для простых вычислений, я бы лучше не кэшировал - память тоже штука дорогая.

Нет, с вычисляемыми данными у меня так: если данное поле данной записи уже посчитано - возвращаем из кэша, если не посчитано, считаем и кладем в кэш. Если флажок не выставлен - игнорируем кэш и считаем всегда. Всё это живет в onGetValue, расчет вычисляемых полей вынесен в листенер, которому в эвенте приезжает имя поля и номер строки в модели.

А что ты под шлюзом имеешь в виду? У меня наследник AbstractTableModel, в котором живут собственно данные и информация о полях, т.е. метаданные; там же через интерфейсы подвешены форматтеры и код создания рендереров. Далее он может подключаться к гриду напрямую (в простейшем случае) или через набор статических методов, если требуется кастомизация грида в плане непрокручиваемых столбцов или сгруппированных заголовков.
Всё это получилось прекрасно расширяемым и уже вовсю юзается в тестовой версии проекта :)
...
Рейтинг: 0 / 0
Где взять хорошие LAF-ы?
    #34095424
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexx726Дочитал до "Если клиент тянет в GRID даже 1000 записей, то вам надо срочно переделывать логику своей программы." и понял, что отвечать не надо было :))
Не надо. Это стандартная песня. Ровно так же, когда дело доходит до веба, оказывается, что клиенту очень даже удобно (..длинный список глупостей..)
...
Рейтинг: 0 / 0
Где взять хорошие LAF-ы?
    #34095428
carper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vladimir Kozlov[quot carper][quot Vladimir Kozlov]
На больших запросах - таки да, вплоть до наглого пожирания виртуальной памяти в момент открытия датасета.

Ага, понял, спасибо.


Согласен. Влезая в жабу нужно быть готовым к тому что попотеть придется.

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


А что ты под шлюзом имеешь в виду?


Нет, я малек погорячился, здесь настоящий шлюз не причем, точнее не причем в данном контексте.
Мне показался несколько тяжеловатым получающийся класс - возникла мысль о выносе всяких там FieldByName в отдельный класс - далее сработала аналогия по работе шлюза с реальной базой с аналогичными функциями - в общем поток сознания... :)
...
Рейтинг: 0 / 0
Где взять хорошие LAF-ы?
    #34095474
Vladimir Kozlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carper
Нет, я малек погорячился, здесь настоящий шлюз не причем, точнее не причем в данном контексте.
Мне показался несколько тяжеловатым получающийся класс - возникла мысль о выносе всяких там FieldByName в отдельный класс - далее сработала аналогия по работе шлюза с реальной базой с аналогичными функциями - в общем поток сознания... :)

Собственно сам FieldCollection (содержащий инфу о типах полей и прочие приблуды) вынесен в отдельный класс. У него есть int FindField(String). Экземпляр класса живет в модели. Ну а дальше всё просто :)
...
Рейтинг: 0 / 0
Где взять хорошие LAF-ы?
    #34095484
Vladimir Kozlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer alexx726Дочитал до "Если клиент тянет в GRID даже 1000 записей, то вам надо срочно переделывать логику своей программы." и понял, что отвечать не надо было :))
Не надо. Это стандартная песня. Ровно так же, когда дело доходит до веба, оказывается, что клиенту очень даже удобно (..длинный список глупостей..)

На вебе, кстати, 1000 записей на узком линке - утонченный садизм :)
...
Рейтинг: 0 / 0
Где взять хорошие LAF-ы?
    #34095628
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бла-бла-бла

показывать юзеру грид с миллионом записей и при каждом запросе перекачивать на клиента миллион с сервера это разные вещи.

Не умеешь - не берись, не зная броду не лезь в воду, ученье свет и т.д.

Ну или просто купить типа такого
http://www.jidesoft.com/products/grids.htm
...
Рейтинг: 0 / 0
Где взять хорошие LAF-ы?
    #34095763
Vladimir Kozlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1024бла-бла-бла
Ну или просто купить типа такого
http://www.jidesoft.com/products/grids.htm

Ни хрена себе контролы!

Кстати Product Bundle по цене вполне конкурентоспособен с девэкспрессом ;)
...
Рейтинг: 0 / 0
Где взять хорошие LAF-ы?
    #34095783
alexx726
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Ну разве что заступлюсь за TOAD - вы бы помониторили, что он реально делает на вашем примере из 200 000тыс. записей."

Ох уж эти ламеры...
Ты понимаешь, разницу между executeQuery() и last()
Если твое приложение last() делает - это ТВОЁ приложение. И не надо ля-ля. Это ТЫ написал.
...
Рейтинг: 0 / 0
Где взять хорошие LAF-ы?
    #34095809
Фотография grexhide
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir Kozlov
А я вот никак понять не могу - даже при суперумном гриде (кстати, энтузиастам DevExpress рекомендую отселектить 200000 записей и включить в гриде фильтрацию) - неужели найдется такой пользователь который осилит все 200000 в гриде просмотреть? :)


В DevExpress ?

а) просмотреть все 200 тыс. записей- нет

б) запросить (задав слишком широкие критерии) - всегда пожалуйста (криминала тут нет)

в) в DevExpress - есть режим PartialLoad - когда на клиента тянутся только записи по мере скролла, т.е. - куммулятивно по требованию. Если пользователю припечет держать 10-20 мин. зажатым PgDn, то 200 тыс. записей ему, вероятно, удастся отфетчить (а Ctrl+PgDn - в "конец" - тут не пройдет)

г) фильтры, общие суммы и прочая радость - все это также работает в данном случае на режимах частичной загрузки, и с возможностью перекрытия
(можно заменить тупые обработки массивов и деревьев на базовую логику SELECT DISTINCT // значения для фильтров
SELECT SUM() // итоги
SELECT FROM WHERE <Filter> // данные для фильтров
SELECT SUM() GROUP BY GROUPING SETS // итоги для групп....

-

и т.д. - и т.п.

----

Вся суть программирования Grid View-Controller-а (в подходе к DevExpress) - сводится к простому - найти функционал, освоить, начать применять.

-

А не - "не найти функционал, изобрести велосипед с дестким функционалом, попробовать научиться на нем ездить, набить шишек, порвать с десяток штанишек и т.д."
...
Рейтинг: 0 / 0
Где взять хорошие LAF-ы?
    #34095827
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir KozlovНа вебе, кстати, 1000 записей на узком линке - утонченный садизм :)
Особенно с учетом компактности html как средства передачи информации - безусловно.
...
Рейтинг: 0 / 0
Где взять хорошие LAF-ы?
    #34095880
alexx726
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А о чем собственно разговор?
Судя по репликам, Casper - вообще никогда в жизни не писал DB-приложения.

Сам автор имеет весьма смутное представление о СУБД (очередная хохма на тему "вставьте UDF-Делающую Упдейт в запрос" меня лично очень сильно рассмешила, шутка принята...)

А остальные "дискуссионеры-противники" таки не понимают разницы между next() и last(). Причем можно видимо удавицо или перейти на чисто олбанский - всё равно не понимают.

Ребята, флаг вам в руки!!!

"- Мы не будем петь дуэтом.
- А почему?
- Ну разве ты не слышишь?
- Нет.
- Ну вот видишь..." (c) "Берегите женщин"
...
Рейтинг: 0 / 0
Где взять хорошие LAF-ы?
    #34095981
Plaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grexhideИ самое главное - они (делфийские и C#ные компоненты) позволяют все делать именно декларативно за считанные минуты, а не кодить постоянно сотни строк безумного "правильного" кода для примитивных операций, с конечным выходом - примитивный и глюкающий на пустом месте интерфейс (именно так и можно охарактеризовать поделия на Swing-ах).

Далеко ходить не нужно - достаточно сравнить, вон - Oracle SQL Developer (с его довольно неплохим, на первый взгляд EWT Java фрейморком) и PL/SQL Developer или TOAD (писанные на презренных Delphi).

При этом - если SQL Developer - внешне тянет даже на прорыв (во мнениях о способностях Java), то все равно - работать на нем, имея возможность сравнить - по сути, просто - себя не уважать (и по стабильности, и по производительности, и по многим параметрам, не говоря уже - про фунциональность).Т.е. можно кинуть в sun.com мыльце дескать "мы тут посовещались и grexhide решил, выпуск Java SE 6.0, а равно и Java 7.0 SE отменяется, так Гослингу и передайте, ибо никому это нефункциональное гугно не нужно. А Дельфи на самом деле не умер, а живее всех живых, ибо DevEx еще нужно продавать, не все средства, затраченные на разработку, отбить успели". Так, чтоли?

Кстати, DevEx для .NET ты почем купил? Весь пакет или только часть? Ась?

[q]Вопрос: Сколько записей поступило на клиент?
Ответ: Столько, сколько уместится на экране (задано в параметрах и т.д.)

делаем PgDown, PgDown

Вопрос: Сколько записей поступило на клиент?
Ответ: 2 экрана

Это стандартная работа ВСЕХ клиент-серверных DataSet (Oracle Forms, Centura, PowerBuilder, Delphi, Visual FoxPro, Oracle Objects и прочей братии)[/q]Мда? Ну тогда объясни, почему возникают темы вроде этой http://forum.ixbt.com/topic.cgi?id=26:32933 ? Люди что, себе специально в ногу стреляют?
...
Рейтинг: 0 / 0
Где взять хорошие LAF-ы?
    #34096254
Vladimir Kozlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Vladimir KozlovНа вебе, кстати, 1000 записей на узком линке - утонченный садизм :)
Особенно с учетом компактности html как средства передачи информации - безусловно.

В html помимо собственно самих данных будут приезжать обрамляющие их теги <td>, <tr> и прочее. Плюс к тому - если нужны какие-то действия по щелчку на строке - еще href, плюс class для css-оформления (и не исключено что для разных td-шек он будет разным, т.е. должен приходить с каждой строкой). Так что в результате объем трафика раза в 2-3 вырастет. Ну это конечно в том случае если втупую плоский html гонять. Если xml передавать и лепить контент на клиенте - опять всё не очень весело, поскольку теги xml-я тоже трафика покушать хотят. Ну хотя с xml-ем полегче будет, но все равно не сахар.
Да и на голых данных, предполагая что вообще тегов никаких нет - если средний размер данных одной строки принять 100 байт - то на 1000 строках это 100кило. Диалапный пользователь от таких страничек быстро озвереет :)
...
Рейтинг: 0 / 0
Где взять хорошие LAF-ы?
    #34096274
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir KozlovТак что в результате объем трафика раза в 2-3 вырастет.
Это изрядно скромная оценка. Реальная повыше, особенно если не заниматься онанизмом и не экономить байты, называя классы как-нибудь типа p1, p2, p3....

Vladimir KozlovДа и на голых данных, предполагая что вообще тегов никаких нет - если средний размер данных одной строки принять 100 байт - то на 1000 строках это 100кило. Диалапный пользователь от таких страничек быстро озвереет :)
У меня было приложение, где диалапные пользователи сидели на модемах 9600. И ничего, нормально работали, не жаловались, единственно dataset.last() был доработан для возможности прерывания его выполнения.
...
Рейтинг: 0 / 0
Где взять хорошие LAF-ы?
    #34096298
Vladimir Kozlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexx726
Сам автор имеет весьма смутное представление о СУБД (очередная хохма на тему "вставьте UDF-Делающую Упдейт в запрос" меня лично очень сильно рассмешила, шутка принята...)


Могу рассказать тебе где я применяю именно UDF-Делающую Упдейт в запросе.
Итак, есть большой-пребольшой каталог товара. Есть субконто "Фирма" и "место хранения". И есть таблица с бухпроводками двойной записи, формирующаяся при проведении документов. Задача: оперативно получать остатки и себестоимости товара.
Что я сделал: завел таблицу с кэшем остатков/себестоимостей. Навешенный на таблицу проводок триггер на вставку/удаление грохает записи в кэше с кодом товара соответствующим вставляемым/удаляемым записям. Просто втупую вычищает из кэша соответствующие строки.
И есть UDF-ка, которой передается код товара и субконто. Первым делом она смотрит в кэш - если данные есть, значит с момента ее последнего вызова новых проводок с данным товаром не было и старых не удалялось, в этом случае она просто достает данные из кэша и отдает наружу. Если в кэше данных не было - пересчитывает на основании таблицы проводок и кладет в кэш.
В результате, вставив эту удф-ку в селект из таблицы товаров, я прозрачно и быстро получаю текущее состояние склада. Пересчитывать и апдейтить этой удф-ке приходится-то намного меньше, чем просто из кэша доставать; для примера полный селект по каталогу с вытаскиванием в грид 6000 записей в ява-приложении происходит 0.7 секунды, а если предварительно грохнуть весь кэш - 18-20 секунд.

Спросишь - почему я не пересчитываю кэш в триггере на таблицу проводок?
А потому. Потому что в этом варианте реализации я могу, засомневавшись вдруг в правильности расчетов (запущенный случай паранойи), грохнуть кэш и пересчитать заново. Потому что, если вдруг придет в голову добавить расчет по LIFO, я добавлю еще пару строк кода внутри UDF-ки, и при следующем вызове в кэше окажутся дополнительные строки с новыми цифрами безо всякого вмешательства с моей стороны и ручного запуска процедуры перерасчета из-за изменений алгоритма.

В системе - 60 клиентов. Терминалка. Юзеры не жужжат.
...
Рейтинг: 0 / 0
Где взять хорошие LAF-ы?
    #34096324
Vladimir Kozlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Vladimir KozlovТак что в результате объем трафика раза в 2-3 вырастет.
Это изрядно скромная оценка. Реальная повыше, особенно если не заниматься онанизмом и не экономить байты, называя классы как-нибудь типа p1, p2, p3....


Можно пропускать код перед загрузкой на сервак через самописный обфускатор, который нормальные имена классов поменяет на p1,p2,p3 :)
Кстати, очень нехилый выигрыш удается получить на компрессии (юзаю OpenVPN, там неплохая lzo-компрессия, выигрыш в трафике примерно в 1.8 раза получается по моим тестам).

softwarer
Vladimir KozlovДа и на голых данных, предполагая что вообще тегов никаких нет - если средний размер данных одной строки принять 100 байт - то на 1000 строках это 100кило. Диалапный пользователь от таких страничек быстро озвереет :)
У меня было приложение, где диалапные пользователи сидели на модемах 9600. И ничего, нормально работали, не жаловались, единственно dataset.last() был доработан для возможности прерывания его выполнения.

9600? Круто. А на клиенте был браузер или tty ? :)
Кстати, как ты прерывал с клиента dataset.last() - через ajax-вызов или как?
...
Рейтинг: 0 / 0
Где взять хорошие LAF-ы?
    #34096329
Vladimir Kozlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PlafНу тогда объясни, почему возникают темы вроде этой http://forum.ixbt.com/topic.cgi?id=26:32933 ? Люди что, себе специально в ногу стреляют?

Обрати внимание, что там человек страдает с ADO :) да еще и 300000 записей через адо пытается вытянуть...
...
Рейтинг: 0 / 0
Где взять хорошие LAF-ы?
    #34096557
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю создать форум для людей с ломкой после перехода на java с дельфей.

Там они смогут проходить реабилитацию, рассказывая друг другу какая дельфи мощная штука и как многого им не хватает в жаве. Говорить о том как здорово кидать на форму TDataSet и TDBGrid и завязывать их друг с другом через TDataSource.... потом они будут рассказывать какой великолепный интерфейс они лепили используя quantum grid и как туда легво грузилось 200k записей... которые у них "бабульки" потом группировали на клиенте

softwarer
Не надо. Это стандартная песня. Ровно так же, когда дело доходит до веба, оказывается, что клиенту очень даже удобно (..длинный список глупостей..)

Очень интересно послушать когда и где это удобно в вебе :) И как это реализуется с помощью открытого server-side курсора
...
Рейтинг: 0 / 0
Где взять хорошие LAF-ы?
    #34096599
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuriПредлагаю создать форум для людей с ломкой после перехода на java с дельфей.
...
Там будут апщаться 2 пэрца. Не будем показывать пальцем кто
...
Рейтинг: 0 / 0
Где взять хорошие LAF-ы?
    #34096608
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да балаболки какие-то. Ну привык чел к дельфи, ну не хочет видеть очевидного
...
Рейтинг: 0 / 0
Где взять хорошие LAF-ы?
    #34096743
Vladimir Kozlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timm funikovyuriПредлагаю создать форум для людей с ломкой после перехода на java с дельфей.
...
Там будут апщаться 2 пэрца. Не будем показывать пальцем кто

Когда человек первый раз пробует закурить - у него кружится голова, тошнит, слабеют ноги... но проходит время - и без сигареты он уже не может. Так же и ява - сначала плюешься, но потом есть риск втянуться. А Минздрав предупреждал :)
...
Рейтинг: 0 / 0
Где взять хорошие LAF-ы?
    #34096753
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir Kozlov Timm funikovyuriПредлагаю создать форум для людей с ломкой после перехода на java с дельфей.
...
Там будут апщаться 2 пэрца. Не будем показывать пальцем кто

Когда человек первый раз пробует закурить - у него кружится голова, тошнит, слабеют ноги... но проходит время - и без сигареты он уже не может. Так же и ява - сначала плюешься, но потом есть риск втянуться. А Минздрав предупреждал :)
Здесь другой случай.
...
Рейтинг: 0 / 0
Где взять хорошие LAF-ы?
    #34096774
Vladimir Kozlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timm
Здесь другой случай.

Да, после палёной водки бордо урожая 1963 года кажется жуткой кислятиной :)
...
Рейтинг: 0 / 0
Где взять хорошие LAF-ы?
    #34096843
Фотография grexhide
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimmЗдесь другой случай.

Конечно другой.

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

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

А типовой джавер - ничем, кроме пустопорожнего пафоса, взять не сможет:

"Дескать вы вообще все ламо, вера у вас неправильная, да и понять вам изначально не дано, наш тонкий лейтмотив мироздания, на мотив буддо/гуру созерцания, процесса рефлексии грид-в-еар-через-скроллпане-кодирования...."

-

Говоря проще - кому чего в жизни не хватает.
...
Рейтинг: 0 / 0
Где взять хорошие LAF-ы?
    #34096882
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grexhide TimmЗдесь другой случай.
И никакой ломки ни у кого нет. Просто есть - неудачный опыт и трезвый взгляд на вещи с обеих сторон


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

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

А типовой джавер - ничем, кроме пустопорожнего пафоса, взять не сможет:


В принципе возможно что "грамотный" дельфиец чего и раскатает, но я такого не в стречал. Грамотные все и так понимает и хер№;№%й на форумах заниматья не будет. Тут же мы наблюдаем сплошное надувание щек точно так как по вашим словам делает "типовой джавер". Есть мнение что дельфийцы здесь тоже типовые
...
Рейтинг: 0 / 0
25 сообщений из 132, страница 4 из 6
Форумы / Java [игнор отключен] [закрыт для гостей] / Где взять хорошие LAF-ы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]