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

Откуда:
Сообщений: 827
Привет!
В эту тему предлагается писать все пожелания по доработке новых фич, возможностей, оптимизаций по технологиям InterSytems, а именно: СУБД Cache, интеграционной платформе Ensemble, BI технологии DeepSee и технологии анализа текста iKnow.

Инженеры InterSystems по возможности будут подключаться к обсуждению тем.
9 окт 15, 18:56    [18260269]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
Ptn
Guest
Шваров Евгений,

1. На фоне давнишнего наличия мнемоники открытия файлов /GZIP было бы крайне неплохо иметь возможность сжатия бэкапа на лету, в момент создания, ну и чтения сжатого бэкапа при восстановлении :)

2. Сейчас любой файл создаваемый средствами Cach'e на *nix системах создается с проставленными правами на исполнение, было бы неплохо что бы так не было :)
10 окт 15, 02:47    [18261733]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1383
Ptn
2. Сейчас любой файл создаваемый средствами Cach'e на *nix системах создается с проставленными правами на исполнение, было бы неплохо что бы так не было :)
+1
Ptn
1. На фоне давнишнего наличия мнемоники открытия файлов /GZIP было бы крайне неплохо иметь возможность сжатия бэкапа на лету, в момент создания, ну и чтения сжатого бэкапа при восстановлении :)
Вы сами пробовали поиграться с этой идеей? Утилиты DBACK* в исходниках, добавить параметр в команду Open не ахти как сложно.

Из общих соображений, пока что не могу плюсануть: бэкап желательно выполнять побыстрее, а любое сжатие его, как правило, замедляет. Можно показать, что оно его начинает ускорять, лишь когда
V_сжатия > V_записи*k/(k-1)
где
k - степень сжатия,
V_записи - скорость записи данных на устройство бэкапа (сетевое или локальное),
V_сжатия - скорость операции сжатия в (несжатых MB)/sec
Восстанавливать бэкап тоже желательно побыстрее, но любая распаковка замедляет этот процесс ещё сильнее. Единственный, пожалуй, случай, когда сжатие файла бэкапа уместно - при переносе его в долговременный архив. Но это уже не он-лайн...
12 окт 15, 10:55    [18266246]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
Ptn
Guest
Alexey Maslov,

>Вы сами пробовали поиграться с этой идеей?

Ну c GZIP я активно работают, ибо до буквально недавних пор системные возможности были странными.
Например открыть файл через %Stream.FileCharacterGzip и передать его SAX парсеру приводило к фатальному неуспеху.

>Утилиты DBACK* в исходниках, добавить параметр в команду Open не ахти как сложно.

Мне не нравится идея ручного вмешательства в системные утилиты, пусть лучше сами сделают

>бэкап желательно выполнять побыстрее, а любое сжатие его, как правило, замедляет.

Он не будет быстрее чем может принять дисковая система, и проц при этом используется мало.
GZIP же достаточно быстрый, если им даже http на лету жмут.
И когда бэкапы начинают выходит за 50Гб отметку, сжатия на лету хочется все больше и больше.
12 окт 15, 11:07    [18266313]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1383
Ptn
Мне не нравится идея ручного вмешательства в системные утилиты, пусть лучше сами сделают
Вмешательство "не корысти ради", а лишь чтобы попробовать.
Ptn
Он не будет быстрее чем может принять дисковая система, и проц при этом используется мало.
Это понятно. Но современные RAIDы легко принимают 70MB/s (не буду уточнять характеристики RAIDа); я в своё время не нашёл архиватора, который в состоянии сделать больше, принимая бэкап через pipe.
Ptn
GZIP же достаточно быстрый, если им даже http на лету жмут.
И в этом есть смысл, т.к. даже при скромной скорости сжатия 5MB/s скорость передачи данных по сети у "усреднённого" пользователя интернета заметно ниже.
Ptn
И когда бэкапы начинают выходит за 50Гб отметку, сжатия на лету хочется все больше и больше.
Когда бэкап начинает выходить за отметку 500GB, полный бэкап обычно начинают делать раз в неделю, а ежедневный становится инкрементным. Выигрыш и по скорости, и по дисковому пространству, сами понимаете, при этом не сопоставим с любым разумным сжатием.
12 окт 15, 11:23    [18266410]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
eduard93
Member

Откуда:
Сообщений: 127
Ptn
Сейчас любой файл создаваемый средствами Cach'e на *nix системах создается с проставленными правами на исполнение, было бы неплохо что бы так не было :)

Для этого можно использовать методы ##class(%File).SetAttributes(), ##class(%File).SetReadOnly() и ##class(%File).SetWriteable(). Документация.
12 окт 15, 11:28    [18266442]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
Александр Коблов
Member

Откуда: Краснодар, Москва
Сообщений: 235
Ptn,

Cache' использует маску 777 для файлов.

Соответственно при umask 022 права получаются 755

Если поставить umask 133, то права будут 644:

akoblov@akoblovVaio:~$ umask 133
akoblov@akoblovVaio:~$ ccontrol session CACHE2015X2 

Узел: akoblovVaio, Экземпляр: CACHE2015X2

USER>set file="/tmp/qq.txt" open file:"NW" use file write "hey there"  close file

USER>halt
akoblov@akoblovVaio:~$ ll /tmp/qq.txt
-rw-r--r-- 1 akoblov cacheusr 6 окт.  12 11:58 /tmp/qq.txt
12 окт 15, 12:02    [18266660]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
kalin
Member

Откуда:
Сообщений: 172
Ptn
"1. На фоне давнишнего наличия мнемоники открытия файлов /GZIP было бы крайне неплохо иметь возможность сжатия бэкапа на лету, в момент создания, ну и чтения сжатого бэкапа при восстановлении :)"
Какая необходимость СУБД превращать в ОС ?
Все делается влет средствами самой ОС
Упаковываем
 path="/mnt/cache/"
 
file=$ZD($H,4) ;filename
 
file=$p(file,"/",3)_$p(file,"/",2)_$p(file,"/",1)_".gsa"
 
IO=path_file
 
IOT="RMS" ;???
 
IOPAR="WNU"
 
Desc="BackUp APP REvolution Data" ;description
 
names("Q")=""
 
names("SMS")=""
 
names("SERIAL")=""
 
Res=$$entry^%GOF(.names,Desc,0)
 
x=$ZF(-1,"gzip "_IO
error 
 
IO
 
Q
Аналогично распаковываем через gunzip
12 окт 15, 18:09    [18269073]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
Ptn
Guest
eduard93,

>Для этого можно использовать методы ##class(%File).SetAttributes(), ##class(%File).SetReadOnly() и ##class(%File).SetWriteable()

А можно использовать другие, какая разница какие, я уже решил эту проблему своим личным способом.
Но тема то у нас вроде как о доработке новых фич.
13 окт 15, 08:16    [18270569]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
Ptn
Guest
Alexey Maslov,

>Вмешательство "не корысти ради", а лишь чтобы попробовать.

Да толку то пробовать ? Я знаю что смогу, как и знаю что не смогу в здравом уме использовать это в продакшене.
Ну вот вообще не увлекает "патчить" каждый сервер.

>Это понятно. Но современные RAIDы легко принимают 70MB/s (не буду уточнять характеристики RAIDа); я в своё время не нашёл архиватора, который в состоянии сделать больше, принимая бэкап через pipe.

Я готов немного пожертвовать скоростью, хотя вот пример для обычного SATA диска и Intel(R) Xeon(R) CPU E3-1230 V2 @ 3.30GHz - файл успевает подаваться в gzip под 50Мб/с
# pv FullDBList_20150625_001.cbk | gzip  >/dev/null
577MB 0:00:15 [51,6MB/s] 

И это с максимальной степенью сжатия (-9 по умолчанию), если поставить -5 то можно и 70Мб/с получить.

>Выигрыш и по скорости, и по дисковому пространству, сами понимаете, при этом не сопоставим с любым разумным сжатием.

Да мы собственно и на 10Гб так делаем, но что бы развернуть такой архив вам что нужно сделать ? Сначала распаковать (-500Гб места), потом запустить восстановление что бы прокачать эти же 500Гб по сети/схд или что там еще есть.

Мне кажется опциональная возможность, подчеркиваю опциональная, будет весьма интересна
13 окт 15, 08:33    [18270598]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
Ptn
Guest
kalin,

>Аналогично распаковываем через gunzip

Ребят вы что такие трудные ? Я уже прекрасно упаковываю и распаковываю средствами ОС, блин прочитайте первый пост Евгения.
13 окт 15, 08:35    [18270601]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
Ptn
Guest
Александр Коблов,

>Cache' использует маску 777 для файлов.

1. Зачем она использует именно такую маску ? Когда к примеру создается тот же бэкап маска по моему крайне другая.
2. Почему бы не дать возможность самостоятельно указывать маску ?

>Если поставить umask 133, то права будут 644:

Нужно попробовать, но меня смущает что будет при создании директорий ?
13 окт 15, 08:38    [18270608]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
AlexKB
Member

Откуда: Запорожье
Сообщений: 688
Позвольте мне вставить и свои пять копеек.

Лично я столкнулся с необходимостью устанавливать временный запрет для регистрации в задаваемых областях новых пользователей, что-то по аналогии с полным запретом регистрации новых пользователей во всех областях <$$%swset^SWSET(12,1)>.
Считаю, что такой функционал позволил бы управлять балансированием нагрузки на систему при различных пиковых ситуациях.
Т.е. некий процесс диспетчер выполняет анализ на прикладном уровне и при необходимости ставит временный запрет на регистрацию новых подключений к некоторым областям. При снижении нагрузки - снимает запрет.
Пока не могу ничего сказать по поводу CSP-подключений, но для CallIn и DirectAccess подключений это было бы решением проблемы. Оба эти интерфейса позволяют осуществлять доступ к любым программам и данным, при этом проконтролировать такой доступ все-таки представляет определенные трудности. Доступ же к другим областям остается на прежнем уровне.

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

Ну что же, давайте обсуждать.
Постараюсь выдержать любую критику и намотать на ум все Ваши разумные доводы.
13 окт 15, 10:51    [18271214]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno
Сообщений: 2325
AlexKB
Позвольте мне вставить и свои пять копеек.

Лично я столкнулся с необходимостью устанавливать временный запрет для регистрации в задаваемых областях новых пользователей, что-то по аналогии с полным запретом регистрации новых пользователей во всех областях <$$%swset^SWSET(12,1)>.
Считаю, что такой функционал позволил бы управлять балансированием нагрузки на систему при различных пиковых ситуациях.
Т.е. некий процесс диспетчер выполняет анализ на прикладном уровне и при необходимости ставит временный запрет на регистрацию новых подключений к некоторым областям. При снижении нагрузки - снимает запрет.
Пока не могу ничего сказать по поводу CSP-подключений, но для CallIn и DirectAccess подключений это было бы решением проблемы. Оба эти интерфейса позволяют осуществлять доступ к любым программам и данным, при этом проконтролировать такой доступ все-таки представляет определенные трудности. Доступ же к другим областям остается на прежнем уровне.

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

Ну что же, давайте обсуждать.
Постараюсь выдержать любую критику и намотать на ум все Ваши разумные доводы.
В данном случае не вижу большого смысла внедрять что-то такое в ядро. Это задача прикладная, и решать ее можно на прикладном уровне. Можно например воспользоваться HAProxy. Он подойдет даже если у вас к серверу пользователи подключаются по DirectAccess и CSP. В нем можно управлять подключением к серверу, переводя сервер в режим обслуживания. для веб пользователей, можно будет отображать страничку о том что проводится обслуживание.
13 окт 15, 11:12    [18271350]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
AlexKB
Member

Откуда: Запорожье
Сообщений: 688
DAiMor,
И каким образом можно будет динамически управлять этой штуковиной, в зависимости от складывающейся ситуации, т.е. установка-снятие запрета. Я же писал, что есть некоторый Каше процесс-диспетчер, который определят что необходимо сделать в той, или иной области. Если круглосуточно необходимо следить за балансировкой нагрузки и управлять ею по определенным правилам постоянно снимая устанавливая запрет к меняющемуся списку областей.
13 окт 15, 11:24    [18271434]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno
Сообщений: 2325
AlexKB
DAiMor,
И каким образом можно будет динамически управлять этой штуковиной, в зависимости от складывающейся ситуации, т.е. установка-снятие запрета. Я же писал, что есть некоторый Каше процесс-диспетчер, который определят что необходимо сделать в той, или иной области. Если круглосуточно необходимо следить за балансировкой нагрузки и управлять ею по определенным правилам постоянно снимая устанавливая запрет к меняющемуся списку областей.
Как много вы знаете о возможностях HAProxy ?
там есть такая вещь как, обращение к определенному адресу, для проверки доступности сервера, и он должен вернуть определнный ответ, все настраиваемо. И если ответ не верный от сервера, сервер будет отключен как не доступный.
Вот и ваша специальная страничка может возращать статус, пускать или нет пользователей.
13 окт 15, 11:28    [18271467]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
AlexKB
Member

Откуда: Запорожье
Сообщений: 688
DAiMor,
Честно говоря, ничего не знаю - бегло прочитал только...
Но, мне не нужно закрывать полный доступ к серверу, а только к определенным областям. Мне нужно постоянно менять правила доступа к этим областям, т.е. нерегулярный поток изменения конфигурации доступа к областям (список областей меняется) на пиках 5-30 секунд. Изменять правила доступа не вручную, а по определенным алгоритмам, которые исполняет Каше диспетчер-процесс.
Там такое возможно?
К тому же никто не будет видеть никаких страничек, поскольку в Каше ломятся приборные драйвера.
И самое главное, я отчетливо вижу, что такое управление доступом необходимо замыкать внутри Каше.
13 окт 15, 11:44    [18271592]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno
Сообщений: 2325
AlexKB
DAiMor,
Честно говоря, ничего не знаю - бегло прочитал только...
Но, мне не нужно закрывать полный доступ к серверу, а только к определенным областям. Мне нужно постоянно менять правила доступа к этим областям, т.е. нерегулярный поток изменения конфигурации доступа к областям (список областей меняется) на пиках 5-30 секунд. Изменять правила доступа не вручную, а по определенным алгоритмам, которые исполняет Каше диспетчер-процесс.
Там такое возможно?
К тому же никто не будет видеть никаких страничек, поскольку в Каше ломятся приборные драйвера.
И самое главное, я отчетливо вижу, что такое управление доступом необходимо замыкать внутри Каше.
Там такое можно сделать, точно для CSP для TCP нужно смотреть
13 окт 15, 11:46    [18271611]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1383
Видите, как даже нескольким коллегам сложно найти точки соприкосновения. Как уж тут сформировать коллективное мнение о полезных доработках? Получается, проталкивание предложений - сугубо "личное" дело, прямиком в WRC.

ptn, по скорости gzip вы возможно правы (наверное, это мне так не везло с тормознутыми RAID-ами :) Но я стараюсь предлагать клиентам масштабируемые решения. Допускаю, что кому-то интересно паковать 10GB-файлы с целью экономии места. Но когда размер файла перевалит даже не за 500GB, а хотя бы за 200, поверьте, вы забудете про паковку. Ответственность будет совсем иная, приоритетом станет минимальное время простоя, которое в любом случае будет ниже, когда не будет затрат на распаковку. Даже решения с блочной дедупликацией данных (кстати, экономящие пространство значительно лучше, чем традиционные паковщики) по умолчанию не дедуплицируют файлы моложе 5 дней. Это не случайно: чаще всего восстанавливают последний или предпоследний бэкап.
13 окт 15, 12:03    [18271791]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
servit
Member

Откуда: г. Кишинёв, Республика Молдова
Сообщений: 3069
Блог
AlexKB,

Если всё же оперировать категорией "БД", а не "область", то задача решается легко и просто (даже смена области учитывается), как уже было отмечено в соседнем топике.

К тому же в документации приведена причина "незащиты" области:
Database Resources
Caché security does not directly control access to namespaces. Since a namespace can be mapped to multiple databases, there can be different security settings for its different underlying parts.

Ресурсы и что они защищают
AlexKB
Изменять правила доступа не вручную, а по определенным алгоритмам, которые исполняет Каше диспетчер-процесс.
Создайте свой ресурс и давайте/забирайте его пользователю когда угодно совместно с делегированной аутентификацией.
13 окт 15, 13:06    [18272171]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
AlexKB
Member

Откуда: Запорожье
Сообщений: 688
servit,
Вот в этом направлении покопаюсь, спасибо за наводку, хотя скажу заранее, может и не подойдет.
В принципе можно оперировать и понятием БД, а не область, т.е. управлять доступом сразу к нескольким БД, которые составляют требуемую мне область.
Единственное что меня смущает, так это то, что я должен оставить возможность доработать тем процессам, которые уже приконекчены в настоящее время и никоим образом не ущемить их потребности. А вот новым дать запрет на доступ на некоторое время, они свой поток данных сбуферируют у себя и чуть позже вывалят свои данные. И еще, мне неважно кто именно стучится, мне важно чтобы они не начали сыпать мне новые данные.
И еще, это не связано с лицензионными ограничениями, это только связано с балансированием нагрузки на прикладном уровне.
Сервер все равно справляется, запас производительности достаточен.

Я почему выдвинул именно такую хотелку, потому что все решается максимально просто на прикладном уровне при ее наличии. А если разработчикам Интерсистемс такая доработка совсем не представляет труда, то почему бы и нет, все равно ведь похожий механизм у них есть, и он очень прост, и понятен в использовании. А вдруг разработчики сидят и ломают голову - чтобы еще такого хорошего придумать.
Ведь все равно в Каше есть много всяких возможностей, которыми почти никто не пользуется, но ценность их все таки присутствует.

Ведь только благодаря многим уникальным возможностям Каше и есть, чем он есть!
13 окт 15, 13:54    [18272578]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno
Сообщений: 2325
AlexKB
А вдруг разработчики сидят и ломают голову - чтобы еще такого хорошего придумать.
Думаю им точно нет времени так думать

AlexKB
что я должен оставить возможность доработать тем процессам, которые уже приконекчены в настоящее время и никоим образом не ущемить их потребности.
С этим проблем не должно быть, пользователи подключившиеся уже получили необходимые роли и у них они останутся до переподключения. Так что проблем не должно быть.
13 окт 15, 13:58    [18272599]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
AlexKB
Member

Откуда: Запорожье
Сообщений: 688
DAiMor
AlexKB
А вдруг разработчики сидят и ломают голову - чтобы еще такого хорошего придумать.
Думаю им точно нет времени так думать
Как сказать...
Когда-то я очень долго ныл по поводу, что хорошо бы иметь , на уровне команд языка COS, преобразования float чисел во внутреннее представление числа и наоборот, а также длинные целые, битовые.
Хотя я тогда обходился и своими силами, начиная от программок написанных на Каше, до всяческих приблудных длл-лек, шмакадявок и прочей нечисти. Это решало проблемы, но тянуло за собой ряд других (не буду их перечислять, скажу только что они были и не мало). И вот свершилось чудо, а может просто добрые люди поселились в Интерсистемс - они включили такие преобразования и дали их прикладникам (а ведь могли бы их замкнуть внутри себя, если они были только им нужны на внутреннем уровне). Более того, они учли и чередование байтов, а это говорит о серьезности их подхода. Думаю, почти уверен, что почти никто не пользуется такими возможностями, поскольку они нужны только тем, кто работает с различными приборами и промышленными протоколами связи.
Но тем не менее, ценность такой доработки очень высока, хотя она практически не востребована.
Скажу больше, многие системы автоматизации промышленных процессов так и не имеют подобных решений до настоящего времени... И это является довольно-таки серьезной проблемой, если такая система выступает в качестве интегрирующего звена крупного промышленного решения.
А я много повидал различных систем автоматизации промышленных процессов и скажу вполне ответственно, что Каше заслуживает особого внимания как для разработчиков систем автоматизации, так и для разработчиков компании Интерсистемс.
Уже давно пора Каше осваивать новые горизонты, и уже давно пора смотреть специалистам Интерсистемс на новую нишу, на новую плоскость соприкосновения.

Имея такое колоссальное быстродействие, устойчивость в работе, такие возможности интеграции, такие встроенные возможности обработки больших объемов данных - просто преступно не смотреть в эту сторону!

Так что моя просьба об улучшении функциональности была не просто сиюминутной просьбой для решения частной и узкой моей собственной проблемы. Я вижу перспективу использования такой функциональности в будущем.

Уважаемые форумчане, перестаньте думать о том, что Каше нужна только для бухгалтерии (образно)!
Каше нужна и в сфере промышленной автоматизации, там сейчас завал, давно существующие решения уже не справляются со все растущими задачами промышленной автоматизации.
Единственно нечто похожее я видел только в технологии AspenTech, и ихнем сервере IP21, но уже давно не смотрел в ту сторону...
15 окт 15, 09:20    [18281108]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1383
AlexKB,

соглашусь, любая нереализованная системная хотелка порождает некий обходной манёвр на прикладном уровне. Тебе предложили 2 варианта, могу предложить 3-ий: в каждой области завести сигнальный глобал. Все прикладные программы при входе его проверяют, если выставлен запрет - на выход. При таком подходе возможна высокая степень дискретности (разные флаги для разных протоколов / подзадач).

Если пытаться проталкивать твоё предложение, его надо переформулировать, т.к., как справедливо заметил servit, область в Cache - не объект защиты. Возможно, имеет смысл говорить о запрете новых подключений к БД. Но что это такое: подключения к БД "/path/myDb"?
 zn "myNsp" ; где все или часть глобалов myNsp отображены в myDb - это подключение?
 zn "^^/path/myDb"  ; а это?
Вне зависимости от ответа на эти вопросы, придётся разрешить выполнять подобные команды ранее запущенным процессам и запретить новым... А если старый процесс порождает дочерний по команде Job? Идеологически сложновато получается.
15 окт 15, 10:08    [18281341]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
AlexKB
Member

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

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

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

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

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

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

Откуда: Запорожье
Сообщений: 688
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

Откуда: г. Кишинёв, Республика Молдова
Сообщений: 3069
Блог
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

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

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

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

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

Откуда: СПб
Сообщений: 1383
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

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

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

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

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

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

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

Откуда: г Волжский
Сообщений: 12779
Если в этом примере
  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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вопрос: как лучше всего по вашему мнению доносить эту информацию до вас? гуглотаблица? Специальный сайт? задания в редмайне?
Ваши предложения?
6 ноя 15, 16:04    [18379460]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno
Сообщений: 2325
Шваров Евгений
Коллеги, на самом деле смысл этой темы, чтобы ваши запросы превращались в WRC задачи, т.е. были решены и входили в продукт.

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

Вопрос: как лучше всего по вашему мнению доносить эту информацию до вас? гуглотаблица? Специальный сайт? задания в редмайне?
Ваши предложения?
Самое простое, это наверно гуглотаблица. redmine наверно будет перебор, с учетом что наверно нужен анонимный доступ
6 ноя 15, 16:32    [18379679]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
DirksDR
Member

Откуда: Пермь
Сообщений: 312
Шваров Евгений,

Есть предложение расширить возможности оператора include.
Чтобы в код программы вставлялись не только inc-файлы, но и int и даже mac-файлы.
Подставлять содержимое int и mac файлов в код программы вместо оператора include.
Оператор include чтобы можно было писать в любом месте программы.

П.С.Был такой оператор в языке PL/1. Доказал свою пользу.
12 янв 16, 12:36    [18666327]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno
Сообщений: 2325
DirksDR
Шваров Евгений,

Есть предложение расширить возможности оператора include.
Чтобы в код программы вставлялись не только inc-файлы, но и int и даже mac-файлы.
Подставлять содержимое int и mac файлов в код программы вместо оператора include.
Оператор include чтобы можно было писать в любом месте программы.

П.С.Был такой оператор в языке PL/1. Доказал свою пользу.

а зачем это нужно, вставлять одни рутины в другие ?
если вы хотите чтобы у вас какие то функции всегда включались во всех программах, эти функции и пишите в INC файл, и тогда будет такой же результат.
12 янв 16, 12:54    [18666451]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno
Сообщений: 2325
DirksDR
Оператор include чтобы можно было писать в любом месте программы.
А в чем сейчас проблема с этим, сейчас можно и так вставить в любом месте главное, чтобы перед использованием макроса
если вы конечно не про классы говорите, но там то другая тема, и не понятно зачем это может быть нужно.
12 янв 16, 12:57    [18666477]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
DirksDR
Member

Откуда: Пермь
Сообщений: 312
DAiMor,

Простите, ребята!
Я думал, что нельзя, раз AlexKB многострочными макросами заморачивается:)
А проверить поленился...
Файл testinc.mac
testinc  ;
 
set msg="Hello include"
 
do logMsg(msg)
 
quit

 #include 
inctest
Файл testinc.int
testinc  ;
 
set msg="Hello include"
 
do logMsg(msg)
 
quit
logMsg(msg)  ;
  
new id,logFlag,username  
  
set logFlag=$get(OMSession("LoggingFlag"),0) quit:logFlag>0  
  
id=$i(^log) 
  
set username=$get(OMSession("username"),$username
  
^log(id)=msg_"|"_username_"|"_$zdt($zts,3,1)  
  
q  
logError(msg)  ;
  
new id,username    
  
id=$i(^logError)    
  
set username=$get(OMSession("username"),$username)    
  
^logError(id)=msg_"|"_username_"|"_$zdt($zts,3,1)_"|"_$zerror    
  q    
Это то, что я хотел.
14 янв 16, 16:18    [18679324]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1383
В Портале управления нигде не отображается состояние самого Менеджера задач (по крайней мере, в версиях <= 2015.1). Он может быть [при]остановлен, но догадаться об этом бывает нелегко даже достаточно опытному админу, тем более что о существовании утилиты ^TASKMGR знают не все.

Предложение: отображать состояние Менеджера задач в Портале, разумно было бы и в Планировщике задач, и в Системных показателях.
20 янв 16, 17:53    [18707540]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
servit
Member

Откуда: г. Кишинёв, Республика Молдова
Сообщений: 3069
Блог
Alexey Maslov
Предложение: отображать состояние Менеджера задач в Портале, разумно было бы и в Планировщике задач, и в Системных показателях.
Обещали в одной из будущих версий сделать. Ориентировочно в 2017.3.
6 окт 16, 07:56    [19748880]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
Ptn
Guest
Пожалуйста, пожалуйста, пожалуйста!

Сделайте что-нибудь с пунктом [печать] в контекстном меню по классу из Студии

- Уберите вообще, есть Ctrl-P и меню Файл

- Уберите хотя бы подальше от пункта [Экспорт]

- По выбору хотя бы выдайте диалог, отправить на принтер или нет? Например тот же что и выходит по Ctrl-P

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

ЗЫ: Извините был напуган
17 ноя 16, 13:45    [19903517]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
alatalo
Member

Откуда:
Сообщений: 46
хочу новые ключи к компилятору COS чтобы хотя бы в явных случаях выдавал ошибки такой переменной/метода/свойства нет

К сообщению приложен файл. Размер - 28Kb
14 янв 17, 13:47    [20105346]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
servit
Member

Откуда: г. Кишинёв, Республика Молдова
Сообщений: 3069
Блог
alatalo
хочу новые ключи к компилятору COS чтобы хотя бы в явных случаях выдавал ошибки такой переменной/метода/свойства нет
Вряд ли это сделают, так как это не является ошибкой компиляции, поскольку необязательно приведёт к ошибке времени исполнения, ведь существует механизм динамической диспетчеризации методов и свойств (статья на хабре).
Скорее это должно быть предупреждением статического анализа, чтобы обратить внимание разработчика на потенциально возможную проблему. Но опять же, учитывая природу скриптового языка COS (методы-генераторы и т.д.) ...
16 янв 17, 11:26    [20109563]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
alatalo
Member

Откуда:
Сообщений: 46
servit,
я понимаю. Поэтому заказываю только опциональный настроки, которые можно для конкретного проекта сделать.
16 янв 17, 11:38    [20109669]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
Ваня_88
Guest
Добавьте пожалуйста атрибут spellcheck = false в <textarea> в SQL портале, чтобы FireFox красным цветом sql не подчеркивал.
Ну и сделать подсветку sql синтаксиса заодно)
20 фев 17, 22:28    [20231021]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
Ваня_88
Guest
И ещё... в окне портала (Редактировать роль) "Предоставить права доступа к таблице для MyRole" отображаются все схемы, даже схемы с классами, которые уже были добавлены для назначения привилегий. Неудобно, смотришь на несколько десятков схем и не видишь, в каких есть классы/таблицы, которые ты ещё не обработал.
27 фев 17, 01:51    [20245609]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3496
Есть старенькая проблема, о которой я говорил в wrc еще 2012 году, ее номер 774493.
Это потенциальная уязвимость, которая чревата нарушением структуры данных на прикладном уровне, связанная с изменением структуры данных класса (добавлением новых полей) и неперекомпиляции программ с запросами на обновление данных. В то время мы сошлись на том, что исправлять ее слишком сложно, это затронет много чего, и решать это правильно на организационном уровне, а на на уровне СУБД. Тем не менее, о проблеме я не забыл, и до сих пор мне кажется, что иметь такую поганенькую проблему для такой прекрасной СУБД нехорошо, поэтому попробую предложить ее решить через форум. Тем более, я почему-то уверен, что сложность ее решения преувеличена, а опасность все-таки довольно высокая.

Суть проблемы попробую изобразить на примере. Создадим простенький класс из двух полей:
Class Test.A Extends %Persistent
{

Property A1 As %String;

Property B1 As %String;

Storage Default
{
<Data name="ADefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>A1</Value>
</Value>
<Value name="3">
<Value>B1</Value>
</Value>
</Data>
<DataLocation>^Test.AD</DataLocation>
<DefaultData>ADefaultData</DefaultData>
<IdLocation>^Test.AD</IdLocation>
<IndexLocation>^Test.AI</IndexLocation>
<StreamLocation>^Test.AS</StreamLocation>
<Type>%Library.CacheStorage</Type>
}

}


И две одинаковые программы test.mac и test2.mac с кодом из одной строчки
 &sql(insert into Test.A (A1,B1) values(10,20))

Скомпилируем эти программы и посмотрим их исходный код, он довольно прост:
  ;---&sql(insert into Test.A (A1,B1) values(10,20))
   ;--- ** SQL PUBLIC Variables: %ROWCOUNT, %ROWID, %msg, SQLCODE
 do %0Ao
 q
%0Ao try { n sqldata5d
 	if $zu(115,1)=1||('$TLEVEL&&($zu(115,1)=2)) { TSTART  s sqldata5d=1 }
 	n %i
 	s %i(2)=10,%i(3)=20
 	s %ROWID=##class(Test.A).%SQLInsert(.%i,$c(0,0,0,0,0,0,0),,,'$g(sqldata5d)),%ROWCOUNT='SQLCODE
 	if $zu(115,1)=1,$g(sqldata5d) { TCOMMIT:SQLCODE'<0  TROLLBACK:SQLCODE<0 1 }
 }
 catch { d SQLRunTimeError^%apiSQL($ze,.SQLCODE,.%msg) if $zu(115,1)=1,$g(sqldata5d) { TROLLBACK 1 } }
 quit  // From %0Ao


Добавим в наш класс одно поле A2 (имя важно!), класс после этого будет выглядеть так:

Class Test.A Extends %Persistent
{

Property A1 As %String;

Property B1 As %String;

Property A2 As %String;

Storage Default
{
<Data name="ADefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>A1</Value>
</Value>
<Value name="3">
<Value>B1</Value>
</Value>
<Value name="4">
<Value>A2</Value>
</Value>
</Data>
<DataLocation>^Test.AD</DataLocation>
<DefaultData>ADefaultData</DefaultData>
<IdLocation>^Test.AD</IdLocation>
<IndexLocation>^Test.AI</IndexLocation>
<StreamLocation>^Test.AS</StreamLocation>
<Type>%Library.CacheStorage</Type>
}

}

И перекомпилируем только одну из них, ее int-код изменится:
  ;---&sql(insert into Test.A (A1,B1) values(10,20))
   ;--- ** SQL PUBLIC Variables: %ROWCOUNT, %ROWID, %msg, SQLCODE
 do %0Ao
 q
%0Ao try { n sqldata5d
 	if $zu(115,1)=1||('$TLEVEL&&($zu(115,1)=2)) { TSTART  s sqldata5d=1 }
 	n %i
 	s %i(2)=10,%i(4)=20
 	s %ROWID=##class(Test.A).%SQLInsert(.%i,$c(0,0,0,0,0,0,0),,,'$g(sqldata5d)),%ROWCOUNT='SQLCODE
 	if $zu(115,1)=1,$g(sqldata5d) { TCOMMIT:SQLCODE'<0  TROLLBACK:SQLCODE<0 1 }
 }
 catch { d SQLRunTimeError^%apiSQL($ze,.SQLCODE,.%msg) if $zu(115,1)=1,$g(sqldata5d) { TROLLBACK 1 } }
 quit  // From %0Ao


Что же изменилось у нас в int-программах? В аргументах для программы ##class(Test.A).%SQLInsert()
Раньше они собирались в переменную так:
s %i(2)=10,%i(3)=20
А после добавления так:
s %i(2)=10,%i(4)=20


Т.е. после добавления поля изменился порядок принимаемых данных в %SQLInsert, и неперекомпилированная программа вставит данные не в то поле. Более точно - аргументы сортируются по их имени (почему и было важно было название добавляемого свойства). Поэтому, поле A2 заняло место поля B1, а B1 сместилось дальше. Подобная же штука происходит и при компиляции запросов на одновление. Т.е. если вы на своей базе добавили незначительное, как вам кажется, поле и не перекомпилировали все классы и программы, которые изменяют строки таблицы, порожденной модифицированным классом , вы рискуете получить повреждение данных. Причем это не явная модификация структуры хранения (при этом разработчик должен отдавать себе отчет), а автоматическая.
Да, неправильно запросы на обновление делать где-то кроме основного класса, да, существует система связанной перекомпиляции, но тем не менее, ошибки возможны, так как не при любом изменении класса хочется перекомпилировать весь продуктовый сервер, а зависимости перекомпиляции не учитывают, например, те же программы.
2 мар 17, 09:54    [20256377]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3496
Блок А.Н.,

мне кажется, добавление переменных по их имени решило бы проблему.
например, так:
s %i("A1")=10,%i("B1")=20
2 мар 17, 09:58    [20256397]     Ответить | Цитировать Сообщить модератору
 Re: Улучшения, новые фичи в технологиях InterSystems  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno
Сообщений: 2325
Блок А.Н.,

Еще одна причина отказаться от embedded sql
2 мар 17, 10:59    [20256654]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3      [все]
Все форумы / Caché Ответить