powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Улучшения, новые фичи в технологиях InterSystems
25 сообщений из 87, страница 3 из 4
Улучшения, новые фичи в технологиях InterSystems
    #39096806
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шваров ЕвгенийКоллеги, на самом деле смысл этой темы, чтобы ваши запросы превращались в WRC задачи, т.е. были решены и входили в продукт.

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

Вопрос: как лучше всего по вашему мнению доносить эту информацию до вас? гуглотаблица? Специальный сайт? задания в редмайне?
Ваши предложения?Самое простое, это наверно гуглотаблица. redmine наверно будет перебор, с учетом что наверно нужен анонимный доступ
...
Рейтинг: 0 / 0
Улучшения, новые фичи в технологиях InterSystems
    #39145371
Фотография DirksDR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шваров Евгений,

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

П.С.Был такой оператор в языке PL/1. Доказал свою пользу.
...
Рейтинг: 0 / 0
Улучшения, новые фичи в технологиях InterSystems
    #39145390
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DirksDRШваров Евгений,

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

П.С.Был такой оператор в языке PL/1. Доказал свою пользу.
а зачем это нужно, вставлять одни рутины в другие ?
если вы хотите чтобы у вас какие то функции всегда включались во всех программах, эти функции и пишите в INC файл, и тогда будет такой же результат.
...
Рейтинг: 0 / 0
Улучшения, новые фичи в технологиях InterSystems
    #39145394
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DirksDRОператор include чтобы можно было писать в любом месте программы.А в чем сейчас проблема с этим, сейчас можно и так вставить в любом месте главное, чтобы перед использованием макроса
если вы конечно не про классы говорите, но там то другая тема, и не понятно зачем это может быть нужно.
...
Рейтинг: 0 / 0
Улучшения, новые фичи в технологиях InterSystems
    #39147489
Фотография DirksDR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,

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

 #include inctest
Файл testinc.int
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
testinc  ;
 set msg="Hello include"
 do logMsg(msg)
 quit
logMsg(msg)  ;
  new id,logFlag,username  
  set logFlag=$get(OMSession("LoggingFlag"),0) quit:logFlag>0  
  s id=$i(^log) 
  set username=$get(OMSession("username"),$username) 
  s ^log(id)=msg_"|"_username_"|"_$zdt($zts,3,1)  
  q  
logError(msg)  ;
  new id,username    
  s id=$i(^logError)    
  set username=$get(OMSession("username"),$username)    
  s ^logError(id)=msg_"|"_username_"|"_$zdt($zts,3,1)_"|"_$zerror    
  q    
Это то, что я хотел.
...
Рейтинг: 0 / 0
Улучшения, новые фичи в технологиях InterSystems
    #39151711
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Портале управления нигде не отображается состояние самого Менеджера задач (по крайней мере, в версиях <= 2015.1). Он может быть [при]остановлен, но догадаться об этом бывает нелегко даже достаточно опытному админу, тем более что о существовании утилиты ^TASKMGR знают не все.

Предложение: отображать состояние Менеджера задач в Портале, разумно было бы и в Планировщике задач , и в Системных показателях .
...
Рейтинг: 0 / 0
Улучшения, новые фичи в технологиях InterSystems
    #39321536
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovПредложение: отображать состояние Менеджера задач в Портале, разумно было бы и в Планировщике задач , и в Системных показателях .Обещали в одной из будущих версий сделать. Ориентировочно в 2017.3.
...
Рейтинг: 0 / 0
Улучшения, новые фичи в технологиях InterSystems
    #39349092
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пожалуйста, пожалуйста, пожалуйста!

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

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

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

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

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

ЗЫ: Извините был напуган
...
Рейтинг: 0 / 0
Улучшения, новые фичи в технологиях InterSystems
    #39384697
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хочу новые ключи к компилятору COS чтобы хотя бы в явных случаях выдавал ошибки такой переменной/метода/свойства нет
...
Рейтинг: 0 / 0
Улучшения, новые фичи в технологиях InterSystems
    #39385268
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alataloхочу новые ключи к компилятору COS чтобы хотя бы в явных случаях выдавал ошибки такой переменной/метода/свойства нетВряд ли это сделают, так как это не является ошибкой компиляции , поскольку необязательно приведёт к ошибке времени исполнения, ведь существует механизм динамической диспетчеризации методов и свойств ( статья на хабре).
Скорее это должно быть предупреждением статического анализа, чтобы обратить внимание разработчика на потенциально возможную проблему. Но опять же, учитывая природу скриптового языка COS (методы-генераторы и т.д.) ...
...
Рейтинг: 0 / 0
Улучшения, новые фичи в технологиях InterSystems
    #39385289
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit,
я понимаю. Поэтому заказываю только опциональный настроки, которые можно для конкретного проекта сделать.
...
Рейтинг: 0 / 0
Улучшения, новые фичи в технологиях InterSystems
    #39408149
Ваня_88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавьте пожалуйста атрибут spellcheck = false в <textarea> в SQL портале, чтобы FireFox красным цветом sql не подчеркивал.
Ну и сделать подсветку sql синтаксиса заодно)
...
Рейтинг: 0 / 0
Улучшения, новые фичи в технологиях InterSystems
    #39410537
Ваня_88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И ещё... в окне портала (Редактировать роль) "Предоставить права доступа к таблице для MyRole" отображаются все схемы, даже схемы с классами, которые уже были добавлены для назначения привилегий. Неудобно, смотришь на несколько десятков схем и не видишь, в каких есть классы/таблицы, которые ты ещё не обработал.
...
Рейтинг: 0 / 0
Улучшения, новые фичи в технологиях InterSystems
    #39412958
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть старенькая проблема, о которой я говорил в wrc еще 2012 году, ее номер 774493.
Это потенциальная уязвимость, которая чревата нарушением структуры данных на прикладном уровне, связанная с изменением структуры данных класса (добавлением новых полей) и неперекомпиляции программ с запросами на обновление данных. В то время мы сошлись на том, что исправлять ее слишком сложно, это затронет много чего, и решать это правильно на организационном уровне, а на на уровне СУБД. Тем не менее, о проблеме я не забыл, и до сих пор мне кажется, что иметь такую поганенькую проблему для такой прекрасной СУБД нехорошо, поэтому попробую предложить ее решить через форум. Тем более, я почему-то уверен, что сложность ее решения преувеличена, а опасность все-таки довольно высокая.

Суть проблемы попробую изобразить на примере. Создадим простенький класс из двух полей:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
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
1.
 &sql(insert into Test.A (A1,B1) values(10,20))


Скомпилируем эти программы и посмотрим их исходный код, он довольно прост:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  ;---&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 (имя важно!), класс после этого будет выглядеть так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
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
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  ;---&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()
Раньше они собирались в переменную так:
Код: sql
1.
s %i(2)=10,%i(3)=20

А после добавления так:
Код: sql
1.
s %i(2)=10,%i(4)=20



Т.е. после добавления поля изменился порядок принимаемых данных в %SQLInsert, и неперекомпилированная программа вставит данные не в то поле. Более точно - аргументы сортируются по их имени (почему и было важно было название добавляемого свойства). Поэтому, поле A2 заняло место поля B1, а B1 сместилось дальше. Подобная же штука происходит и при компиляции запросов на одновление. Т.е. если вы на своей базе добавили незначительное, как вам кажется, поле и не перекомпилировали все классы и программы, которые изменяют строки таблицы, порожденной модифицированным классом , вы рискуете получить повреждение данных. Причем это не явная модификация структуры хранения (при этом разработчик должен отдавать себе отчет), а автоматическая.
Да, неправильно запросы на обновление делать где-то кроме основного класса, да, существует система связанной перекомпиляции, но тем не менее, ошибки возможны, так как не при любом изменении класса хочется перекомпилировать весь продуктовый сервер, а зависимости перекомпиляции не учитывают, например, те же программы.
...
Рейтинг: 0 / 0
Улучшения, новые фичи в технологиях InterSystems
    #39412961
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.,

мне кажется, добавление переменных по их имени решило бы проблему.
например, так:
Код: sql
1.
s %i("A1")=10,%i("B1")=20
...
Рейтинг: 0 / 0
Улучшения, новые фичи в технологиях InterSystems
    #39413002
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.,

Еще одна причина отказаться от embedded sql
...
Рейтинг: 0 / 0
Улучшения, новые фичи в технологиях InterSystems
    #39513915
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для COS что-нибудь похожее на defer из Go
было бы удобно при работе с файлами, запросами, устройствами
...
Рейтинг: 0 / 0
Улучшения, новые фичи в технологиях InterSystems
    #39513935
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintдля COS что-нибудь похожее на defer из Go
было бы удобно при работе с файлами, запросами, устройствамиИнтересная идея, я вижу вызов точно таким же как команду DO. т.е. нужно например иметь метод для закрытия открытых обектов по выходу из методов. Примерно, как у нас есть возможность вернуться в рабочую область при выходе из метода, в котором перешли в другую область
...
Рейтинг: 0 / 0
Улучшения, новые фичи в технологиях InterSystems
    #39513947
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя может быть было бы полезнее например так
Код: sql
1.
2.
 LOCK +^SomeGlobal
 DEFER { LOCK -^SomeGlobal }


Так, это будет что-то типа анонимных функций, думаю что так будет полезнее, проблема
Код: sql
1.
2.
3.
4.
5.
6.
7.
 set filename="/tmp/file"
 OPEN filename:("NRW")
 USE filename
 DEFER {
   USE 0
   CLOSE filename
 }
...
Рейтинг: 0 / 0
Улучшения, новые фичи в технологиях InterSystems
    #39514259
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,

Мм, $ET?
...
Рейтинг: 0 / 0
Улучшения, новые фичи в технологиях InterSystems
    #39514274
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,

Ну ладно, $ET это не совсем то, но смысл такой же.
Мне кажется, в Каше многим не хватает возможности передачи кода как аргумента, сохранения кода в переменную и так далее.
При том, что есть возможность передачи кода как строки. Но, видимо, это не очень удобно. Например, потому, что синтаксис кода в строке не подсвечивается, очень неудобно делать многострочный код. Может быть, сделать команду превращения кода в строку, а еще лучше - в специльную структуру, которую потом можно выполнить или передать как аргумент.
Блин, кажется, я анонимные функции изобрел :-) А почему нет? Ведь для этого почти все есть. Тот же $XECUTE работает можно сказать, как исполнитель анонимных функций. Даже под это специальный формат строки есть.
...
Рейтинг: 0 / 0
Улучшения, новые фичи в технологиях InterSystems
    #39514306
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.DAiMor,

Мм, $ET?а каким боком оно вообще тут, $et, занимается отловом ошибок, и вообще это переменная
...
Рейтинг: 0 / 0
Улучшения, новые фичи в технологиях InterSystems
    #39514391
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,

$ET - это переменная, которая содержит код, который выполняется при определенных условиях. Разве не этого же по сути вы хотите от DEFER?
...
Рейтинг: 0 / 0
Улучшения, новые фичи в технологиях InterSystems
    #39514459
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как ты и сам заметил $ET и $X принимают лишь текст, и читать такой код не просто, и ошибки во время неизбежны. Что-то типа анонимных функций, как в моем примере, или какой нибудь вариант но с возможностью передать аргументы, было намного лучше.
...
Рейтинг: 0 / 0
Улучшения, новые фичи в технологиях InterSystems
    #39587951
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, оператор типа
for(key in global) немного улучшил читаемость и сократил код при работе с многомерными переменными.
...
Рейтинг: 0 / 0
25 сообщений из 87, страница 3 из 4
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Улучшения, новые фичи в технологиях InterSystems
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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