Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ListBuild на стороне клиента / 25 сообщений из 25, страница 1 из 1
02.03.2010, 17:27
    #36497881
DirksDR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
Добрый вечер!

Недавно читал где-то в документации про ListBuild на стороне клиента. Вроде, как класс с методами List,ListGet и т.д. для разбора списков, полученных с сервера.
Второй день не могу найти это описание. Ткните меня носом,плз, в это описание.
Cache 2009.1.

Заодно: ищу более-менее развернутый пример использования VisM. Предполагаю для начала освоить Excel (т.е. VBA) и VisM. Подскажите ссылку на sample близкой тематики.

Спасибо.
...
Рейтинг: 0 / 0
02.03.2010, 17:56
    #36497988
doublefint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
С первой частью вопроса: немного про списки + поиск по форуму
Со второй: О боги! Когда же это прекратится! Начните лучше с xhtml, css и javascript, сохраните себе лет 5 жизни.
...
Рейтинг: 0 / 0
03.03.2010, 00:49
    #36498612
MX-9
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
DirksDR,

EXCEL-VBA на стороне клиента достаточно продвинут
в нашей системе "MX"
На сервере действует многопользовательский виртуальный
EXCEL встроенный в CACHE

Программирование отсутствует - формы рисует мышка
а запросы сидят в ячейках EXCEL в виде спец формул
...
Рейтинг: 0 / 0
03.03.2010, 04:57
    #36498702
kolesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
MX-9EXCEL-VBA на стороне клиента достаточно продвинут
в нашей системе "MX"

А я все же поддержу doublefint. Думаю, окажись БЫ Вы "в начале пути" в 2010 году, вы БЫ Excel не выбрали... и про VisM подумали бы 10 раз ;) А если еще прикинуть, что и обучение БЫ Вы закончили недавно - год, два назад, то и подавно...
...
Рейтинг: 0 / 0
03.03.2010, 08:35
    #36498781
DirksDR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
doublefint
С первой частью вопроса: немного про списки + поиск по форуму
Со второй: О боги! Когда же это прекратится! Начните лучше с xhtml, css и javascript, сохраните себе лет 5 жизни.

1.Спасибо, немного не то, это все-таки списки на сервере.
2.Есть специфика задачи, может быть историческая.
Хочу, чтобы ввод данных из экселя выполнялся в один прием: сцепить ключи и значения в списки и передать через параметры VisM за одно обращение.
Кроме того, данные собираюсь хранить в формате SqlStorage, структура глобали примерно такая:
^ValueClock(Date, Clock, <ид.точки замера>)=$lb(value,status,...).
Боюсь пролететь с методами OpenID и др. для такой структуры.
...
Рейтинг: 0 / 0
03.03.2010, 08:50
    #36498796
DirksDR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
MX-9,

Рад за Вас, но чтобы понять, подойдет ли это для моей задачи, нужно более подробное описание.
...
Рейтинг: 0 / 0
03.03.2010, 09:29
    #36498853
MX-9
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
kolesovMX-9EXCEL-VBA на стороне клиента достаточно продвинут
в нашей системе "MX"

А я все же поддержу doublefint. Думаю, окажись БЫ Вы "в начале пути" в 2010 году, вы БЫ Excel не выбрали... и про VisM подумали бы 10 раз ;) А если еще прикинуть, что и обучение БЫ Вы закончили недавно - год, два назад, то и подавно...

Да - совершенно с Вами согласен

СЕГОДНЯ -
как любой среднестатистический выпускник
окончательно одурманеный глобальной пропагандой SQL
я вообще бы не выбрал CACHE !

или начал бы раскручивать жуткий конгломерат из xhtml, css и javascript
а потом лет через 5 завязал с CACHE
и вернулся на общепринятые реляционные системы

Однако повезло ..
В нужное время, за правильным горячительным
напитком, с ровными пацанами из СП-АРМ, прикинули попробовать
применить EXCEL в роли клиента -
и оно ж таки нехило РАБОТАЕТ
в том числе как замена пресловутой "1-с".
С обьектами, транзакциями, изоляцией, откатами
- со всем джентльменским набором.
...
Рейтинг: 0 / 0
03.03.2010, 09:33
    #36498864
MX-9
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
DirksDRMX-9,

Рад за Вас, но чтобы понять, подойдет ли это для моей задачи, нужно более подробное описание.

Пришлите глобали и что хотите видеть в EXCEL

mx@enters.eu
kosinec
@metalurgs.lv
...
Рейтинг: 0 / 0
03.03.2010, 09:44
    #36498880
kolesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
DirksDR,

Так Вам данные в Ексель вЫвести нужно? или через него ввести в систему?

В первом случае есть вариант создать на сервере временный файл в виде аштээмэль и отправить его клиенту, подставив в заголовке, что он - екселевский.

Получите:
- независимость от реализации екселя и ВБА у конкретного клиента
- возможность тот же контент вывести просто на странице или, в перспективе, показать ПДФ-ку тем клиентам, которые не в курсе, что такое ексель...

тем более с 2009.1...
...
Рейтинг: 0 / 0
03.03.2010, 09:55
    #36498902
kolesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
MX-9- со всем джентльменским набором.

помнится, в 5-ке можно было переименовать панель управления в "EXCEL.EXE" и побаловаться... интересно, сейчас эта "фича" еще работает?
...
Рейтинг: 0 / 0
03.03.2010, 10:30
    #36498991
kolesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
DirksDR,

Про временный файл я загнул - в общем случае и он не нужен (бодаюсь сегодня с фопом - издержки ;)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Class app.fop.Excel Extends %CSP.Page
{

ClassMethod OnPreHTTP() As %Boolean [ ServerOnly =  1  ]
{
     d %response.SetHeader("Content-Disposition", "attachment; filename=report.xls")
     s %response.ContentType = "application/vnd.ms-excel; charset=UTF-8"
     s %response.Expires = "Thu, 01 Apr 2003 00:00:00 GMT"
     q  1 
}

ClassMethod OnPage() As %Status [ ServerOnly =  1  ]
{
	w "<html><head><meta http-equiv=""Content-Type"" content=""text/html; charset=windows-1251""></head><body>"
	w "<table>"
	w "<tr>"
	w "<td style=""border:1 solid; color:red;"">1</td>"
	w "<td><a href = http://localhost/csp/ns/app.fop.Excel.cls>сверлиться</a></td>"
	w "<td>3</td>"
	w "</tr>"
	w "<tr>"
	w "<td>"_$h_"</td>"
	w "<td>21</td>"
	w "<td>31</td>"
	w "</tr>"
	w "</table>"
	w "</body></html>"
	q $$$OK
}

}

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

Прорисовка "в реале" не так, конечно, выглядит... но для примера пойдет ;)

Зато дешево и сердито - и не нужно ничего с правами выдумывать - работает стандартная аутентификация...
...
Рейтинг: 0 / 0
03.03.2010, 10:48
    #36499047
MX-9
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
kolesovMX-9- со всем джентльменским набором.

помнится, в 5-ке можно было переименовать панель управления в "EXCEL.EXE" и побаловаться... интересно, сейчас эта "фича" еще работает?

кашевские фичи по EXCEL не годятся и не интересуют
- через них не введешь данные в базу

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

Клиент может вводить данные в базу на сервер
прямо через клетки полученных отчетов - править цифры "на ходу"
система сквозь интерактивная
...
Рейтинг: 0 / 0
03.03.2010, 12:27
    #36499409
doublefint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
DirksDR, в той ссылке ссылка :) на форум CACHE_RU и описание структуры списка: длина элемента, тип элемента, значение элемента. Если у Вас есть формат, кто мешает реализовать его на чем угодно?
SQLStorage - только в случае большого объема унаследованных данных и фиксированной системы... Если что-то новое - лучше стандартное хранение (+ bitmap index, +GetStored и прочее)
MX-9
или начал бы раскручивать жуткий конгломерат из xhtml, css и javascript
а потом лет через 5 завязал с CACHE
и вернулся на общепринятые реляционные системы


Хм, вместо международных стандартов форматированного ТЕКСТА Вы предлагаете универсальное? свободное? решение в виде EXCEL и "запросы сидят в ячейках EXCEL в виде спец формул". И КАК?! это связано с возвратом на общепринятые реляционные системы? Почему Вас так тянет писать бизнес логику на чистом SQL?

Еще примерко вывода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Class csp.csv Extends %CSP.Page [ ProcedureBlock ] {
Parameter CONTENTTYPE = "application/vnd.ms-excel";
Parameter EXPIRES = "Mon, 1 Jan 1900 00:00:00 GMT";
ClassMethod OnPreHTTP() As %Boolean [ ServerOnly ] {
 d %response.SetHeader("Content-disposition", "inline;filename=terribleXHTML.csv") 
 Q  1 
}
ClassMethod OnPage() As %Status {
 f i= 1 : 1 : 100  { w ! f j= 1 : 1 : 10  { w "Данные [",i,"][",j,"];" } }
 Q $$$OK
}
}
Нужен пример ввода?
...
Рейтинг: 0 / 0
03.03.2010, 15:04
    #36500017
DirksDR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
MX-9,
Я Вам напишу письмом.
kolesov
Спасибо за примеры. Возможно, позже они мне понадобятся. Пока я не готов для работы с CSP.
Мне нужен и ввод, и вывод, близко к тому, о чем пишет MX-9.

doublefint
DirksDR, в той ссылке ссылка :) на форум CACHE_RU и описание структуры списка: длина элемента, тип элемента, значение элемента. Если у Вас есть формат, кто мешает реализовать его на чем угодно?
Структуру списка я знаю и смогу реализовать в VBA. Мне показалось, что я читал про реализацию в Cache, чуть ли не класс в составе FACTORY, который обеспечивает работу со списками...
Приснилось, наверное :).
...
Рейтинг: 0 / 0
03.03.2010, 15:22
    #36500081
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
Такой класс и вправду есть, ищете в док-е "The SysList Class". Не пользовался, поэтому опытом не поделюсь :)
Просто из любопытства: Вы за скорость боретесь? Если да, то откуда уверенность в том, что Вы на клиенте VBA (пусть даже через ActiveX) сформируете список быстрее, чем это сделает Cache с "родной" встроенной поддержкой списков?
...
Рейтинг: 0 / 0
03.03.2010, 15:45
    #36500160
MX-9
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
Alexey MaslovТакой класс и вправду есть, ищете в док-е "The SysList Class". Не пользовался, поэтому опытом не поделюсь :)
Просто из любопытства: Вы за скорость боретесь? Если да, то откуда уверенность в том, что Вы на клиенте VBA (пусть даже через ActiveX) сформируете список быстрее, чем это сделает Cache с "родной" встроенной поддержкой списков?

Алексей
привет !

сегодня наш EXCEL-VBA-клиент выдает на экран от сервера CACHE
находящегося в этой же локальной сети
примерно 1000 строк (по 100 символов каждая ) за 1 секунду

через Интернет на порядок медленнее

интересно бы сравнить с "родной встроенной"
...
Рейтинг: 0 / 0
03.03.2010, 15:57
    #36500197
DirksDR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
Alexey MaslovТакой класс и вправду есть, ищете в док-е "The SysList Class". Не пользовался, поэтому опытом не поделюсь :)
Просто из любопытства: Вы за скорость боретесь? Если да, то откуда уверенность в том, что Вы на клиенте VBA (пусть даже через ActiveX) сформируете список быстрее, чем это сделает Cache с "родной" встроенной поддержкой списков?
Большущее спасибо! То, что надо.
Не думаю, что есть разница в скорости при работе со списками на клиенте и на сервере. Я хочу выиграть в скорости за счет уменьшения количества обращений к серверу. Не "поштучно" сохранять данные на сервере, а передать их туда списком через VizM. Там разобрать список и сохранить данные.
...
Рейтинг: 0 / 0
03.03.2010, 16:03
    #36500215
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
Алексей, привет! Конечно, MX-9 рвет всех, кто б сомневался :)
Имел в виду немного другое, а именно, что формирование списка на клиенте VBA едва ли будет быстрее, чем вызов серверной функции (в случае VisM), которая примет строку с разделителями и выполнит нечто вроде:
Код: plaintext
1.
2.
3.
function(P0,P1,P2,P3)
 set ^SomeGlobal(P0,P1,P2)=$LISTFROMSTRING(P3,$$$DELIMITER)
 quit  1 
...
Рейтинг: 0 / 0
03.03.2010, 16:52
    #36500400
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
Не "поштучно" сохранять данные на сервере, а передать их туда списком через VizM. Хорошая идея, я за! :) В таком случае тем более непонятно, зачем формировать список в формате $List, если он служит только для передачи данных. Вот простейший тест, показывающий, что разбор списка в Cache - это вовсе не так уж быстро. У меня delim обгоняет list где-то при n > 150, причем при n = 1000 - в 5 раз! При n < 100 list быстрее, но не в разы, да и счет идет на микросекунды. А если так, стоит ли овчинка выделки?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
delim(n) ;список - строка c разделителями
  s str=$$makestr(n)
  ; разбор списка
  s t0=$zh
  s ipos= 1  f i= 1 : 1 :n s ipos0=ipos,ipos=$f(str,",",ipos0),x=$e(str,ipos0,ipos- 2 )
  w "delim n = "_n_" "_($zh-t0),!
  q
list(n) ;список - $list
  s str=$$makestr(n)
  s str=$listfromstring(str)
  ; разбор списка
  s t0=$zh
  s ipos= 1  f i= 1 : 1 :n s x=$lg(str,i)
  w "list  n = "_n_" "_($zh-t0),!
  q
makestr(n) ;формирование списка-строки с разделителями
  n (n)
  s maxlength= 32000 
  s lchunk=maxlength\n
  s chunk=$tr($j("",lchunk)," ","A")
  s str="" f i= 1 : 1 :n- 1  s str=str_chunk_","
  q str_chunk
...
Рейтинг: 0 / 0
03.03.2010, 17:10
    #36500479
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
Немного улучшил код разбора списка-$list:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
list(n) ;список - $list
  s str=$$makestr(n)
  s str=$listfromstring(str)
  ; разбор списка
  s t0=$zh
  s ptr= 0 ,i= 0  while $listnext(str,ptr,x) { s i=i+ 1  }
  w "list (next)     n = "_n_" "_($zh-t0),!
  q  
Теперь он - чемпион. Наверное, ISC специально придумала $listnext, чтобы реабилитировать медленно работающие списки :)
...
Рейтинг: 0 / 0
03.03.2010, 18:10
    #36500683
doublefint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
MX-9сегодня наш EXCEL-VBA-клиент выдает на экран от сервера CACHE
находящегося в этой же локальной сети
примерно 1000 строк (по 100 символов каждая ) за 1 секунду
через Интернет на порядок медленнее

Т.е ~10K за десять секунд? Вы шутите?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Class csp.test10k Extends (%CSP.Page, %Persistent, %Populate) [ ClassType = persistent, ProcedureBlock ] {
Property Name As %String(MAXLEN =  100 ,POPSPEC=".MyPopulate()");
ClassMethod MyPopulate(){ 
	Q ##class(%PopulateUtils).Name()_"; "
	  _##class(%PopulateUtils).City()_"; "
	  _##class(%PopulateUtils).Mission()}
ClassMethod OnPage() As %Status {
 	&html<<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
 	<html><head><title>Test  10000  bytes</title></head><body style="white-space:pre">>
	s gln="^csp.test10kD"
	if $D(@gln)< 10  d ##class(csp.test10k).Populate( 1000 )
	s i="" f { s i=$o(@gln@(i)) q:i=""   w !,$LG(@gln@(i), 2 ) }
	&html<</body></html>>
	Quit $$$OK
}
}
Итого 100 932 байта за 0.406 секунды вместе с генерацией данных через Интернет (Не локальную сеть).
...
Рейтинг: 0 / 0
03.03.2010, 18:28
    #36500733
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
doublefint,1000 строк (по 100 символов каждая ) за 1 секундуМожет, у меня с арифметикой плохо, но разве это не ~100 К/сек? С учетом накладных расходов Excel, ИМХО, не такой уж плохой результат...
...
Рейтинг: 0 / 0
03.03.2010, 18:46
    #36500780
doublefint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
Alexey Maslov, с математикой плохо у меня. Конечно 100K. Но пример-то как раз на 100K, тоже вроде не медленно.
...
Рейтинг: 0 / 0
03.03.2010, 22:35
    #36501147
MX-9
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
doublefint,

дзякую за цiкавы прыклад

сапрауды, як адзначае Аляксей Маслау,
EXCEL не дужа хуткая система, и нам патрабавалася
шмат намаганняу каб выйсти на узровень
1000 радкоу
але што зроблена - то зроблена
вынiк даволи прыемлемы.
...
Рейтинг: 0 / 0
03.03.2010, 23:07
    #36501161
f12mokb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBuild на стороне клиента
Рядом тема f12mokb, может будет полезно. Использую Excel как драйв печаити, а раньше писал вполне благополучный софт с внедрением VisM в Excel ( единственное общее мемто в прдуктах Microsoft, котрое способно принять все! )
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ListBuild на стороне клиента / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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