Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вычисление пользовательских выражений
|
|||
|---|---|---|---|
|
#18+
Гуру, подскажите есть для Cache возможность вычислять пользовательские выражения? Например есть строка "2 * myVar" (здесь myVar это доступное на момент вычисления имя) и я бы хотел хотел иметь чтото типа $$Calc ( Formula ) При этом хочется ч.б. в формуле можно было использовать мои переменные и мои функции. Для чего нужно? В нашем предыдущем (не Сache) проекте формулы для вычислений задаются пользователем (ну или если хотите DataModelAdministrator'ом) на более менее понятном языке, который потом разбирается, компиляется в псевдо код и может выполнятся. При этом имена типа Sales меняются на внутренние "ссылки" или данные и т.п. Аналогично с функциями. Т.е. расчетная прикладная логика выносится из кода в пользовательские данные. А как подобный подход можно реализовать в Cache? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2007, 19:07 |
|
||
|
Вычисление пользовательских выражений
|
|||
|---|---|---|---|
|
#18+
StplГуру, подскажите есть для Cache возможность вычислять пользовательские выражения? Например есть строка "2 * myVar" (здесь myVar это доступное на момент вычисления имя) и я бы хотел хотел иметь чтото типа $$Calc ( Formula ) При этом хочется ч.б. в формуле можно было использовать мои переменные и мои функции. Для чего нужно? В нашем предыдущем (не Сache) проекте формулы для вычислений задаются пользователем (ну или если хотите DataModelAdministrator'ом) на более менее понятном языке, который потом разбирается, компиляется в псевдо код и может выполнятся. При этом имена типа Sales меняются на внутренние "ссылки" или данные и т.п. Аналогично с функциями. Т.е. расчетная прикладная логика выносится из кода в пользовательские данные. А как подобный подход можно реализовать в Cache? я не гуру но все же Например Calc(xxxxxxxx) s $ZTRAP="xxxError^XXX" n qqqqqqqq x "s qqqqqqqq="_xxxxxxxx q qqqqqqqq эту строку вставить в Вашу программу XXX ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2007, 19:36 |
|
||
|
Вычисление пользовательских выражений
|
|||
|---|---|---|---|
|
#18+
упс... надо попробовать, хотя для новичка вначале потребуется небольшая расшифровка :) Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2007, 20:34 |
|
||
|
Вычисление пользовательских выражений
|
|||
|---|---|---|---|
|
#18+
Stplупс... надо попробовать, хотя для новичка вначале потребуется небольшая расшифровка :) Спасибо! если на вход подавать не строго MUMPS-выражение то в эту программу надо вставить предварительное преобразование его в M-код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2007, 00:37 |
|
||
|
Вычисление пользовательских выражений
|
|||
|---|---|---|---|
|
#18+
Stplупс... надо попробовать, хотя для новичка вначале потребуется небольшая расшифровка :) Спасибо! Ну, выглядит все следующим образом. Вариантов несколько: 1. Вы можете передавать в программу любые выражения, естественно правильного синтаксиса, на выполнение. Например: Код: plaintext 1. 2. 3. 4. 5. 6. Вызывается это дело, конечно, $$Calc(expression) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2007, 02:35 |
|
||
|
Вычисление пользовательских выражений
|
|||
|---|---|---|---|
|
#18+
Всем спасибо!!!!!!! Сергей, отдельная благодарность за понимание боли начинающего!!! :) а кстати насколько я "чувствую" эту систему, Xecute вероятно работает довольно быстро, т.е. грандиозных задержек на "evaluating the expression" вероятно нет? (разумеется это зависит от его сложности, но я сравниваю Xcecute с обычной компиляцией и выполнением M кода) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2007, 10:17 |
|
||
|
Вычисление пользовательских выражений
|
|||
|---|---|---|---|
|
#18+
Следует только ограничить пользователей - ибо сразу потенциальная дырка в системе. Запрет на употребление команду kill и использование ^ - а то напишуть kill ^oddMAC и привет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2007, 18:39 |
|
||
|
Вычисление пользовательских выражений
|
|||
|---|---|---|---|
|
#18+
StplВсем спасибо!!!!!!! Сергей, отдельная благодарность за понимание боли начинающего!!! :) а кстати насколько я "чувствую" эту систему, Xecute вероятно работает довольно быстро, т.е. грандиозных задержек на "evaluating the expression" вероятно нет? (разумеется это зависит от его сложности, но я сравниваю Xcecute с обычной компиляцией и выполнением M кода) Не за что, всегда рад помочь. :) А вот насчет Xecute ты ошибаешься, он работает в 3 раза медленнее. Да оно и понятно, собираем выражение, потом его компилируем, а уж потом выполняем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2007, 22:58 |
|
||
|
Вычисление пользовательских выражений
|
|||
|---|---|---|---|
|
#18+
3 раза это с одной стороны много с другой... надо пробовать. Кстати а есть возможность в проге сгенерить М-код, создать из него например рутину, скомпилить ее и т.п. Т.е. можно ли клинту на сервере поставить и компилятор не нарушая лицензионных соглашений? Или он там и так будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2007, 23:32 |
|
||
|
Вычисление пользовательских выражений
|
|||
|---|---|---|---|
|
#18+
Stpl3 раза это с одной стороны много с другой... надо пробовать. Кстати а есть возможность в проге сгенерить М-код, создать из него например рутину, скомпилить ее и т.п. Т.е. можно ли клинту на сервере поставить и компилятор не нарушая лицензионных соглашений? Или он там и так будет? Если гнаться за скоростью, то лучше не использовать. Конечно есть. Не совсем понял. Конечно на сервере уже есть компилятор. А зачем он клиенту если программа выполняется на сервере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2007, 23:38 |
|
||
|
Вычисление пользовательских выражений
|
|||
|---|---|---|---|
|
#18+
PtnСледует только ограничить пользователей - ибо сразу потенциальная дырка в системе. Запрет на употребление команду kill и использование ^ - а то напишуть kill ^oddMAC и привет Разумеется. На самом деле они будут писать на "нашем" языке в "наших" терминах из которых будет генерится М-код. Т.е. у нас будет свой парсер, м-построитель знающий о наших внутренних данных и т.п. Сами понимаете предположить что клиент должен/может осваивать М это из области фантастики :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2007, 23:41 |
|
||
|
Вычисление пользовательских выражений
|
|||
|---|---|---|---|
|
#18+
Stpl PtnСледует только ограничить пользователей - ибо сразу потенциальная дырка в системе. Запрет на употребление команду kill и использование ^ - а то напишуть kill ^oddMAC и привет Разумеется. На самом деле они будут писать на "нашем" языке в "наших" терминах из которых будет генерится М-код. Т.е. у нас будет свой парсер, м-построитель знающий о наших внутренних данных и т.п. Сами понимаете предположить что клиент должен/может осваивать М это из области фантастики :) Я понимаю конечно. Пример "нашего языка" можно увидеть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2007, 23:45 |
|
||
|
Вычисление пользовательских выражений
|
|||
|---|---|---|---|
|
#18+
Sergei ObrastsovЕсли гнаться за скоростью, то лучше не использовать. надо попробовать. Sergei ObrastsovКонечно есть. Не совсем понял. Конечно на сервере уже есть компилятор. А зачем он клиенту если программа выполняется на сервере? О, класс. а Клиент в этом случай это покупатель. Т.е. пользователь с клиентской машины описывает свою модель вычислений, наша серверная часть генерит М, компиляет ее на сервере и т.п. после чего вроде все в шоколаде :) усе, спасибо всем! беру таймаут, надо читать дальше доку... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2007, 23:47 |
|
||
|
Вычисление пользовательских выражений
|
|||
|---|---|---|---|
|
#18+
Sergei ObrastsovПример "нашего языка" можно увидеть? простейший случай для фрагментов вычисляемы выражений: {Sales,Actual,PrevPeriod}*1.1 Или Trend(Sales,"Concern",2003-2006) или iif ( IsCurrentBusinessUnit() == "Concern", "Actual", "Actual,Concern)" и т.п. В текущем проекте юзера (DataModelAdministrators) пишут такие формулы что я просто не понимаю как они в них разбираются, при том что у нас руки так и дошли сделать красивый ExpressionBuilder. В параллельный проект мы его уже включили а здесь все некогда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2007, 23:53 |
|
||
|
Вычисление пользовательских выражений
|
|||
|---|---|---|---|
|
#18+
Stpl PtnСледует только ограничить пользователей - ибо сразу потенциальная дырка в системе. Запрет на употребление команду kill и использование ^ - а то напишуть kill ^oddMAC и привет Разумеется. На самом деле они будут писать на "нашем" языке в "наших" терминах из которых будет генерится М-код. Т.е. у нас будет свой парсер, м-построитель знающий о наших внутренних данных и т.п. Сами понимаете предположить что клиент должен/может осваивать М это из области фантастики :) Вот вот - и это правильно! По поводу скорости могу сказать так. Раз есть свой язык и парсер его - то достаточно на выходе формировать не только строку, но и сразу компилять из нее рутину - для соотвествующего "отчета". Тогда скорость будет терятся в основном только на вызове функции из этой рутины ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 07:26 |
|
||
|
Вычисление пользовательских выражений
|
|||
|---|---|---|---|
|
#18+
+ если что не так в выражении - компилятор ругнется сразу, а не в момент выполнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 07:28 |
|
||
|
Вычисление пользовательских выражений
|
|||
|---|---|---|---|
|
#18+
Ptn+ если что не так в выражении - компилятор ругнется сразу, а не в момент выполнения. Ну, если у них свой парсер, то они и так обнаружат ошибку :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 08:21 |
|
||
|
Вычисление пользовательских выражений
|
|||
|---|---|---|---|
|
#18+
Sergei Obrastsov Stpl PtnСледует только ограничить пользователей - ибо сразу потенциальная дырка в системе. Запрет на употребление команду kill и использование ^ - а то напишуть kill ^oddMAC и привет Разумеется. На самом деле они будут писать на "нашем" языке в "наших" терминах из которых будет генерится М-код. Т.е. у нас будет свой парсер, м-построитель знающий о наших внутренних данных и т.п. Сами понимаете предположить что клиент должен/может осваивать М это из области фантастики :) Я понимаю конечно. Пример "нашего языка" можно увидеть? например в нашем проекте пользователь-клиент в любом месте выданного на экран документа вводит транспорт.. и в ответ система находит в этом документе все слова содержащие "транспорт" в любом регистре букв и навешивет на них ссылки по эстафете - рисует на каждом руку с пальчиком - для удобного и быстрого просмотра этой темы естественно это все реализуется путем автоматического построения соответствующего м-кода и затем его выполнения на м-сервере кстати насчет X-команд - применяем в массовом порядке и везде . замедления не чувствуется - ведь в основном это одноразовые программки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 09:11 |
|
||
|
Вычисление пользовательских выражений
|
|||
|---|---|---|---|
|
#18+
MX -- ALEXкстати насчет X-команд - применяем в массовом порядке и везде . замедления не чувствуется - ведь в основном это одноразовые программки Если речь идет о диалоговой работе с пользователем, то разницы конечно нет, полсекунды там теряется или 6 :) Беда в том, что Xecute любят совать всюду, особенно в обработку данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 09:44 |
|
||
|
Вычисление пользовательских выражений
|
|||
|---|---|---|---|
|
#18+
раз уж тема вызвала столько откликов, пробегусь я впереди паровоза... (еще не пытался читать про это доку) Как из моего кода (скорее всего не М), скомпилировать сгенеренную на сервере рутину? Может в Cache есть например готовый веб сервис куда можно передать текст и т.п. рутины а он все сделает? Или может есть объектный доступ к таким вещам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 09:59 |
|
||
|
Вычисление пользовательских выражений
|
|||
|---|---|---|---|
|
#18+
Sergei Obrastsov Ptn+ если что не так в выражении - компилятор ругнется сразу, а не в момент выполнения. Ну, если у них свой парсер, то они и так обнаружат ошибку :) А ошибку в парсере ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 10:05 |
|
||
|
Вычисление пользовательских выражений
|
|||
|---|---|---|---|
|
#18+
Stplраз уж тема вызвала столько откликов, пробегусь я впереди паровоза... (еще не пытался читать про это доку) Как из моего кода (скорее всего не М), скомпилировать сгенеренную на сервере рутину? Может в Cache есть например готовый веб сервис куда можно передать текст и т.п. рутины а он все сделает? Или может есть объектный доступ к таким вещам? Готового нет - но сделать его не сложно. Главное получить параметры. А дальше ... (пример из документации) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 10:09 |
|
||
|
Вычисление пользовательских выражений
|
|||
|---|---|---|---|
|
#18+
Йес!!! Спасибо еще раз!!! похоже эта система вызывает у меня все больший интерес :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 10:13 |
|
||
|
Вычисление пользовательских выражений
|
|||
|---|---|---|---|
|
#18+
Ptn Sergei Obrastsov Ptn+ если что не так в выражении - компилятор ругнется сразу, а не в момент выполнения. Ну, если у них свой парсер, то они и так обнаружат ошибку :) А ошибку в парсере ;) Ну, это уже несерьезно. Парсер, по определению, без явных ошибок :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 10:46 |
|
||
|
|

start [/forum/topic.php?fid=39&msg=34254620&tid=1559438]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
34ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 268ms |
| total: | 394ms |

| 0 / 0 |
