Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Caché Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
DAiMor
Member

Откуда: Brno, Czech Republic
Сообщений: 2268
AlexKB
Alexey Maslov,
Объектом для нового внешнего подключения все же является область, ее мы всегда задаем в качестве параметра соединения при любом способе подключения. Тот системный процесс, который анализирует все новые входящие запросы на подключение, наверняка может отбить такие запросы, если есть в том такая необходимость. И этому системному процессу абсолютно все равно, какие базы собраны в эту область, какие глобалы переданы в эту область, до этого даже дело не дойдет. То что работающие задачи переключаются между областями, так и пусть себе переключаются, пусть себе порождают новые JOBы в разных областях. Они уже работают и не будем им мешать. Я говорю только о новых внешних подключениях к определенной области, просто не устанавливать новое соединение. Для того, кто пытается подключиться это будет выглядеть всего лишь как неудачная попытка соединения, которую он попытается повторить позже.(ну наподобие временного отсутствия связи). Главное, чтобы новое подключение не состоялось, а не было прервано на прикладном уровне после его выполнения. Повторюсь еще раз, входное соединение, в качестве параметра передает область, в которую просит подключиться. А мы ему говорим - извини, на данная область временно недоступна, подключайся позже, или подключайся в другую, альтернативную область. И это уже третий вопрос, что и основная и альтернативная область может собираться из одних и тех же глобалов, или баз данных.
Ну так, это и есть прикладная задача, которую есть возможность решать с помощью %ZSTART.
15 окт 15, 10:41    [18281490]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
AlexKB
Member

Откуда: Запорожье
Сообщений: 673
DAiMor,
Увы, в %ZSTART область для нового подключения не всегда видна.
15 окт 15, 10:59    [18281599]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
servit
Member

Откуда: г. Кишинёв, Республика Молдова
Сообщений: 3047
Блог
AlexKB
Увы, в %ZSTART область для нового подключения не всегда видна.
Приведите код %ZSTART.
15 окт 15, 11:36    [18281828]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1343
Предложение по улучшению API по работе с глобалами.
Начиная с 2015.1, появился метод %Library.GlobalEdit::GetGlobalSizeBySubscript(). Прогрессивная общественность это приветствовала, но оказалось, что размер в MB получается простым умножением размера в блоках на их кол-во. Поэтому пользоваться методом для обсчёта небольших подглобалов практически бессмысленно, слишком велика погрешность. Между тем, утилита %GSIZE отлично справляется с этим. Код внутри неё, естественно, совсем другой.

Предложение: упрятать этот (правильный) код внутрь метода класса, сделав функционал точного обсчёта подглобалов доступным программистам. Для обратной совместимости в сигнатуру метода можно добавить аргумент "считать быстро т.е. по-старому".
15 окт 15, 12:38    [18282164]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
AlexKB
Member

Откуда: Запорожье
Сообщений: 673
servit
AlexKB
Увы, в %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 окт 15, 09:08    [18285822]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
servit
Member

Откуда: г. Кишинёв, Республика Молдова
Сообщений: 3047
Блог
AlexKB
servit
AlexKB
Увы, в %ZSTART область для нового подключения не всегда видна.
Приведите код %ZSTART.
Интересно, и что же такого Вы хотите увидеть в этом коде..?
Как Вы определяете текущую область, что она не всегда видна, хотя должна быть видна всегда.

Попробуйте использовать $ZNSPACE и не забывайте "ньючить" переменные:

JOB ; JOB'd process exits.
NEW zapret,i,a

PS: будете делать upgrade c 5.0, вместо устаревших (уже недокументируемых) функций $ZUTIL лучше использовать их эквиваленты.
16 окт 15, 10:29    [18286256]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1343
AlexKB
...разумно иметь единый механизм решения вопроса, но двумя способами (или быстро, или точно - решает пользователь). Но ведь на сегодняшний день есть пути решения...
Это сильно сказано :) Можно взять исходник %GSIZE, и на его основе слепить свою функцию вычисления размера подглобала. Нам собственно так и пришлось сделать (жизнь заставила), ждать, пока это реализует (или мотивированно откажет) ISC времени не было. Но наше "решение" уступает по функциональности упомянутому методу класса, т.к. мы реализовали только то, что нам было необходимо. Само собой, сопровождать его придётся нам самим, если оно уйдёт в продакшн.

По твоей задаче снова прав servit. Причина: JOB^%ZSTART вызывается слишком рано, когда могут быть заполнены ещё не все $zu(67,параметры,$j). В этих параметрах нет ничего "фундаментального", их просто заполняет серверный модуль протокола. Некоторые из них можно заполнить самостоятельно, хотя трудно придумать, зачем.
Я бы брал текущую область из $zu(5) или из $namespace.
16 окт 15, 11:37    [18286778]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
AlexKB
Member

Откуда: Запорожье
Сообщений: 673
Alexey Maslov,
Я ведь писал уже, что область, куда происходит соединение, проверить невозможно. В этом случае - она будет равна "%SYS", при любом способе ее получить.
Я ведь сознательно не привел в своем коде чему равна область...
a("$zu(5)")="%SYS"
a("znspace")="%SYS"
a(6)="%SYS"

Не думал я, что давая советы, Вы не станете проверять их результативность...
Я надеялся, что может еще получу совет в плане использования еще каких-нибудь недокументированных функций, команд, приемов...
Но, увы...
16 окт 15, 12:19    [18287099]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1343
AlexKB
Не думал я, что давая советы, Вы не станете проверять их результативность...
Порылся в старом коде, нашёл у себя подобные проверки ($zu(67 в цикле) и аналогичные мучения. Так и есть, $zu(5) и иже с ней в момент вызова JOB^%ZSTART таки ещё не заполнены... Обход, который реально использовал:
JOB
 
job проверяльщик
   
...
проверяльщик
   
hang 1
   
if (текущая_область_процесса($zparentзапрещена для входазавершить_процесс($zparent)
   
...
PS. Прошу прощения за невысокий уровень и многочисленные ошибки в моих консультациях.
16 окт 15, 12:38    [18287227]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1343
Забыл поставить начальную метку JOB в псевдокоде, еще раз извиняюсь.
16 окт 15, 12:40    [18287243]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1343
Если кому интересно, по крайней мере в 2015.1 метод %Library.GlobalEdit::GetGlobalSizeBySubscript() в некоторых случаях даёт ошибку в разы, тогда как утилита %GSIZE правильно считает и быстрым (Show details = N), и медленным (Show details = Y) способами.
16 окт 15, 12:45    [18287267]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
AlexKB
Member

Откуда: Запорожье
Сообщений: 673
Alexey Maslov,
Вот, вот...
Только через проверяльщик мне не подходит, слишком много нехорошего родительский процесс сможет натворить, даже если я отловлю его и прибью через 20 мс...
На данный момент для меня все это не критично, но я думал над перспективой и было бы хорошее для меня решение одного из вопросов будущей разработки, если бы я смог воспользоваться функциональностью, о которой говорил...
А вопрос возник еще и потому, что вроде бы в одной из реализаций МАМПСов, с которыми я работал, такая возможность была...
Не берусь утверждать, но что-то такое крутится в голове...
16 окт 15, 15:16    [18288494]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1343
AlexKB
...вроде бы в одной из реализаций МАМПСов, с которыми я работал, такая возможность была...
Это вряд ли, т.к. понятие области afaik есть только в Cache (ещё м.б. в MiniM, но не уверен).
AlexKB
...слишком много нехорошего родительский процесс сможет натворить...
На прикладном уровне решается путём синхронизации родителя с потомком: родитель ждёт сигнала от потомка: "можно работать" или "пошёл вон". Методы синхронизации зависят от используемой версии Cache: Lock или $system.Event, подробно разжёвывать не буду.

Понятно, что тебе хотелось бы иметь готовый механизм "из коробки", но поскольку область - не объект защиты в её сегодняшней реализации, ИМХО, будет нелегко сподвигнуть ISC, но отчего не попробовать.
16 окт 15, 17:24    [18289309]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12679
Столкнулся с такой фигней при использовании функции $locate()...
Есть там последний параметр, в случае успешного поиска туда записывается найденная последовательность... Но фигня в том, что если ничего не найдено переменная не "обнуляется". В ней остается предыдущее значение!
По мне так это фигня полная.
22 окт 15, 09:14    [18309873]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12679
Если в этом примере
  n
  s 
pos=1
  
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 {
    
name=""
    
pos=$locate(str,"\^[a-z()\d,]+",pos,,name)
    
len=$l(name)
    
if $i(pos,len)
    
if name'="" {
      
value=""
      
if $locate(str,":[\s\S]+?(?=')",pos,,value
      
value=$s(value=":{":"",1:$e(value,3,*))
      
!
      
zw name,value
      
// s @name=value
    
}
  } 
while len
  
q
Убрать строки

name=""

и

value=""

Все просто перестанет работать
22 окт 15, 09:16    [18309875]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12679
Самый лучший вариант, с моей точки зрения, делать ту переменную неопределенной, если поиск ничего не нашел.
Потому как пустая строка так же может быть результативным значением.

Но оставлять предыдущее значение - это что-то с чем-то!
22 окт 15, 09:19    [18309888]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
DAiMor
Member

Откуда: Brno, Czech Republic
Сообщений: 2268
Это нормальное поведение, $locate же возращает результат по которому можно верить или нет тому значению. Вы же в своем коде IF просто так повесили, и value разумеется может быть каким угодно. Этот код с ошибкой.
$data кстати работает так же, обновляет значение только в том случае если оно есть
22 окт 15, 09:23    [18309915]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12679
DAiMor
Это нормальное поведение

Это норма! (с)
22 окт 15, 10:11    [18310177]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
servit
Member

Откуда: г. Кишинёв, Республика Молдова
Сообщений: 3047
Блог
krvsa
DAiMor
Это нормальное поведение

Это норма! (с)
$locate работает согласно документации и менять её спецификацию (чтобы ByRef заменить на Output) вряд ли станут, ибо уже написано много кода и он может перестать правильно работать (потеряется совместимость).
22 окт 15, 11:00    [18310519]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12679
Тогда какой смысл в этой теме? Для объяснения почему это делать не станут?
22 окт 15, 11:28    [18310669]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
DAiMor
Member

Откуда: Brno, Czech Republic
Сообщений: 2268
krvsa
Тогда какой смысл в этой теме? Для объяснения почему это делать не станут?
Для адекватных предложений, а не для того чтобы закрыть свои баги в коде.
22 окт 15, 11:36    [18310738]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12679
Эва!
22 окт 15, 11:39    [18310758]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12679
servit
чтобы ByRef заменить на Output

Проблема кагбэ не в этом...
22 окт 15, 11:55    [18310903]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
DAiMor
Member

Откуда: Brno, Czech Republic
Сообщений: 2268
Вот думаю что нужно добавить. Расчет энтропии для пароля. С возможностью использовать это не только для встроенных пользователей, а и в том случае если используется собственная авторизация со своим хранением учеток пользователей и их паролей.
26 окт 15, 10:34    [18325667]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
Шваров Евгений
Member

Откуда:
Сообщений: 818
Коллеги, на самом деле смысл этой темы, чтобы ваши запросы превращались в WRC задачи, т.е. были решены и входили в продукт.

По части уже здесь предложенного либо есть либо будет создан продлог (задание на разработку).

Вопрос: как лучше всего по вашему мнению доносить эту информацию до вас? гуглотаблица? Специальный сайт? задания в редмайне?
Ваши предложения?
6 ноя 15, 16:04    [18379460]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Caché Ответить