|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
AlexKBAlexey Maslov, Объектом для нового внешнего подключения все же является область, ее мы всегда задаем в качестве параметра соединения при любом способе подключения. Тот системный процесс, который анализирует все новые входящие запросы на подключение, наверняка может отбить такие запросы, если есть в том такая необходимость. И этому системному процессу абсолютно все равно, какие базы собраны в эту область, какие глобалы переданы в эту область, до этого даже дело не дойдет. То что работающие задачи переключаются между областями, так и пусть себе переключаются, пусть себе порождают новые JOBы в разных областях. Они уже работают и не будем им мешать. Я говорю только о новых внешних подключениях к определенной области, просто не устанавливать новое соединение. Для того, кто пытается подключиться это будет выглядеть всего лишь как неудачная попытка соединения, которую он попытается повторить позже.(ну наподобие временного отсутствия связи). Главное, чтобы новое подключение не состоялось, а не было прервано на прикладном уровне после его выполнения. Повторюсь еще раз, входное соединение, в качестве параметра передает область, в которую просит подключиться. А мы ему говорим - извини, на данная область временно недоступна, подключайся позже, или подключайся в другую, альтернативную область. И это уже третий вопрос, что и основная и альтернативная область может собираться из одних и тех же глобалов, или баз данных.Ну так, это и есть прикладная задача, которую есть возможность решать с помощью %ZSTART. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2015, 10:41 |
|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
DAiMor, Увы, в %ZSTART область для нового подключения не всегда видна. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2015, 10:59 |
|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
AlexKBУвы, в %ZSTART область для нового подключения не всегда видна.Приведите код %ZSTART. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2015, 11:36 |
|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
Предложение по улучшению API по работе с глобалами. Начиная с 2015.1, появился метод %Library.GlobalEdit::GetGlobalSizeBySubscript(). Прогрессивная общественность это приветствовала, но оказалось, что размер в MB получается простым умножением размера в блоках на их кол-во. Поэтому пользоваться методом для обсчёта небольших подглобалов практически бессмысленно, слишком велика погрешность. Между тем, утилита %GSIZE отлично справляется с этим. Код внутри неё, естественно, совсем другой. Предложение: упрятать этот (правильный) код внутрь метода класса, сделав функционал точного обсчёта подглобалов доступным программистам. Для обратной совместимости в сигнатуру метода можно добавить аргумент "считать быстро т.е. по-старому". ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2015, 12:38 |
|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
servitAlexKBУвы, в %ZSTART область для нового подключения не всегда видна.Приведите код %ZSTART. Интересно, и что же такого Вы хотите увидеть в этом коде..? Вопрос обсуждения ведь состоит не в моем коде. Я ведь не ставил вопрос таким образом, мол помогите решить проблему. Я ставил вопрос о желательном развитии функционала в том направлении, что заявил. Я вижу его полезность в будущем для решения некоторых вопросов, я их озвучил. Вы же (я имею ввиду не Вас лично) мне предлагаете некоторые частные решения, которые на Ваш взгляд могли бы явиться альтернативой. Я привожу свои доводы, оппоненты, кроме единственного не привели - у разработчиков нет времени. Если бы Вы привели довод такого плана, что дополнительная проверка в момент разрешения регистрации в Каше увеличит время регистрации на 5% (а это было бы недопустимым с моей точки зрения), или появятся другие накладные расходы, что это приведет к иным последствиям там-то и там-то, тогда да, есть над чем подумать, мол стоит ли овчинка выделки. А так, если появление предлагаемой мной функциональности никоим образом не отразится на работе систем, построенных и проектируемых на базе Каше моими оппонентами, то получается, что обратных доводов у Вас просто нет. Вот Алексей Маслов высказал свое пожелание, я его вполне поддерживаю - разумно иметь единый механизм решения вопроса, но двумя способами (или быстро, или точно - решает пользователь). Но ведь на сегодняшний день есть пути решения, зачем чего-то переделывать специалистам Интерсистемс? Но я за переделку, это было бы разумнее. А код, да пожалуйста... //%ZSTART quit // JOB ; JOB'd process exits. set $ZTrap="Error" set zapret=$g(^|"%SYS"|LLGG("ConnectDisable"),0) if zapret=1 { for i=0,1,4:1:15 set a(i)=$zu(67,i,$j) hang 200 // тут я смотрю в портале какими возможностями управления процессом я обладаю в данной точке исполнения } quit // Error set $ZTrap="" quit // ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2015, 09:08 |
|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
AlexKBservitAlexKBУвы, в %ZSTART область для нового подключения не всегда видна.Приведите код %ZSTART.Интересно, и что же такого Вы хотите увидеть в этом коде..?Как Вы определяете текущую область, что она не всегда видна, хотя должна быть видна всегда. Попробуйте использовать $ZNSPACE и не забывайте "ньючить" переменные: JOB ; JOB'd process exits. NEW zapret,i,a PS: будете делать upgrade c 5.0, вместо устаревших (уже недокументируемых) функций $ZUTIL лучше использовать их эквиваленты. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2015, 10:29 |
|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
AlexKB...разумно иметь единый механизм решения вопроса, но двумя способами (или быстро, или точно - решает пользователь). Но ведь на сегодняшний день есть пути решения...Это сильно сказано :) Можно взять исходник %GSIZE, и на его основе слепить свою функцию вычисления размера подглобала. Нам собственно так и пришлось сделать (жизнь заставила), ждать, пока это реализует (или мотивированно откажет) ISC времени не было. Но наше "решение" уступает по функциональности упомянутому методу класса, т.к. мы реализовали только то, что нам было необходимо. Само собой, сопровождать его придётся нам самим, если оно уйдёт в продакшн. По твоей задаче снова прав servit. Причина: JOB^%ZSTART вызывается слишком рано, когда могут быть заполнены ещё не все $zu(67, параметры ,$j). В этих параметрах нет ничего "фундаментального", их просто заполняет серверный модуль протокола. Некоторые из них можно заполнить самостоятельно, хотя трудно придумать, зачем. Я бы брал текущую область из $zu(5) или из $namespace. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2015, 11:37 |
|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
Alexey Maslov, Я ведь писал уже, что область, куда происходит соединение, проверить невозможно. В этом случае - она будет равна "%SYS", при любом способе ее получить. Я ведь сознательно не привел в своем коде чему равна область... a("$zu(5)")="%SYS" a("znspace")="%SYS" a(6)="%SYS" Не думал я, что давая советы, Вы не станете проверять их результативность... Я надеялся, что может еще получу совет в плане использования еще каких-нибудь недокументированных функций, команд, приемов... Но, увы... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2015, 12:19 |
|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
AlexKBНе думал я, что давая советы, Вы не станете проверять их результативность...Порылся в старом коде, нашёл у себя подобные проверки ($zu(67 в цикле) и аналогичные мучения. Так и есть, $zu(5) и иже с ней в момент вызова JOB^%ZSTART таки ещё не заполнены... Обход, который реально использовал:JOB job проверяльщик ... проверяльщик hang 1 if (текущая_область_процесса($zparent) запрещена для входа) d завершить_процесс($zparent) ...PS. Прошу прощения за невысокий уровень и многочисленные ошибки в моих консультациях. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2015, 12:38 |
|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
Забыл поставить начальную метку JOB в псевдокоде, еще раз извиняюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2015, 12:40 |
|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
Если кому интересно, по крайней мере в 2015.1 метод %Library.GlobalEdit::GetGlobalSizeBySubscript() в некоторых случаях даёт ошибку в разы, тогда как утилита %GSIZE правильно считает и быстрым (Show details = N), и медленным (Show details = Y) способами. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2015, 12:45 |
|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
Alexey Maslov, Вот, вот... Только через проверяльщик мне не подходит, слишком много нехорошего родительский процесс сможет натворить, даже если я отловлю его и прибью через 20 мс... На данный момент для меня все это не критично, но я думал над перспективой и было бы хорошее для меня решение одного из вопросов будущей разработки, если бы я смог воспользоваться функциональностью, о которой говорил... А вопрос возник еще и потому, что вроде бы в одной из реализаций МАМПСов, с которыми я работал, такая возможность была... Не берусь утверждать, но что-то такое крутится в голове... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2015, 15:16 |
|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
AlexKB...вроде бы в одной из реализаций МАМПСов, с которыми я работал, такая возможность была...Это вряд ли, т.к. понятие области afaik есть только в Cache (ещё м.б. в MiniM, но не уверен). AlexKB...слишком много нехорошего родительский процесс сможет натворить...На прикладном уровне решается путём синхронизации родителя с потомком: родитель ждёт сигнала от потомка: "можно работать" или "пошёл вон". Методы синхронизации зависят от используемой версии Cache: Lock или $system.Event, подробно разжёвывать не буду. Понятно, что тебе хотелось бы иметь готовый механизм "из коробки", но поскольку область - не объект защиты в её сегодняшней реализации, ИМХО, будет нелегко сподвигнуть ISC, но отчего не попробовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2015, 17:24 |
|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
Столкнулся с такой фигней при использовании функции $locate() ... Есть там последний параметр, в случае успешного поиска туда записывается найденная последовательность... Но фигня в том, что если ничего не найдено переменная не "обнуляется". В ней остается предыдущее значение! По мне так это фигня полная. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 09:14 |
|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
Если в этом примере n s pos=1 s str="'^global(1)':{'^global(1,1)':{'^global(1,1,1)':'111a'}},'^global(2)':{'^global(2,1)':{'^global(2,1,1)':'211a','^global(2,1,2)':'212a'},'^global(2,2)':{'^global(2,2,1)':'221a','^global(2,2,2)':'222a','^global(2,2,3)':{'^global(2,2,3,1)':{'^global(2,2,3,1,1)':'22311a'}}}}" do { s name="" s pos=$locate(str,"\^[a-z()\d,]+",pos,,name) s len=$l(name) if $i(pos,len) if name'="" { s value="" if $locate(str,":[\s\S]+?(?=')",pos,,value) s value=$s(value=":{":"",1:$e(value,3,*)) w ! zw name,value // s @name=value } } while len qУбрать строки s name="" и s value="" Все просто перестанет работать ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 09:16 |
|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
Самый лучший вариант, с моей точки зрения, делать ту переменную неопределенной, если поиск ничего не нашел. Потому как пустая строка так же может быть результативным значением. Но оставлять предыдущее значение - это что-то с чем-то! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 09:19 |
|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
Это нормальное поведение, $locate же возращает результат по которому можно верить или нет тому значению. Вы же в своем коде IF просто так повесили, и value разумеется может быть каким угодно. Этот код с ошибкой. $data кстати работает так же, обновляет значение только в том случае если оно есть ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 09:23 |
|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
DAiMorЭто нормальное поведение Это норма! (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 10:11 |
|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
krvsaDAiMorЭто нормальное поведение Это норма! (с) $locate работает согласно документации и менять её спецификацию (чтобы ByRef заменить на Output) вряд ли станут, ибо уже написано много кода и он может перестать правильно работать (потеряется совместимость). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 11:00 |
|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
Тогда какой смысл в этой теме? Для объяснения почему это делать не станут? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 11:28 |
|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
krvsaТогда какой смысл в этой теме? Для объяснения почему это делать не станут? Для адекватных предложений, а не для того чтобы закрыть свои баги в коде. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 11:36 |
|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
Эва! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 11:39 |
|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
servitчтобы ByRef заменить на Output Проблема кагбэ не в этом... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 11:55 |
|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
Вот думаю что нужно добавить. Расчет энтропии для пароля. С возможностью использовать это не только для встроенных пользователей, а и в том случае если используется собственная авторизация со своим хранением учеток пользователей и их паролей. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2015, 10:34 |
|
Улучшения, новые фичи в технологиях InterSystems
|
|||
---|---|---|---|
#18+
Коллеги, на самом деле смысл этой темы, чтобы ваши запросы превращались в WRC задачи, т.е. были решены и входили в продукт. По части уже здесь предложенного либо есть либо будет создан продлог (задание на разработку). Вопрос: как лучше всего по вашему мнению доносить эту информацию до вас? гуглотаблица? Специальный сайт? задания в редмайне? Ваши предложения? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 16:04 |
|
|
start [/forum/topic.php?fid=39&msg=39077336&tid=1556241]: |
0ms |
get settings: |
11ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 272ms |
total: | 422ms |
0 / 0 |