go to post Eduard Lebedyuk · May 24, 2020 docker compose? Unless you need inprocess communication (you don't for NodeJS native API) you can just refer from one container to another.
go to post Eduard Lebedyuk · May 23, 2020 .xlsx file, manipulates the file (in COS) How are you manipulating xlsx in InterSystems ObjectScript?
go to post Eduard Lebedyuk · May 22, 2020 For a better http performance Install dedicated web server Configure it for your workflow Maybe move web gateway/web server to a separate server
go to post Eduard Lebedyuk · May 20, 2020 Jonathan, where do you perform the training/fit part of the AI/ML pipeline?
go to post Eduard Lebedyuk · May 19, 2020 What does write $SYSTEM.Util.GetEnviron("JAVA_HOME") return in the same process as JavaGateway? If not /usr/java/jdk1.8.0_65 you might need to restart the InterSystems IRIS instance. Your OS user can be determined by running: write $system.Process.UserName() again it's important to run this code in the same process as Java Gateway. After you determined effective OS username you can check folder/executable permissions. Finally, SELinux if enabled might require additional configuration.
go to post Eduard Lebedyuk · May 17, 2020 You can use this macro to translate class name into table name. set table = ##class(%CSP.UI.Portal.SQL.Home).Quoter2($$$ClassSQLTable(class)) It's faster (no object access) and quotes table name if required.
go to post Eduard Lebedyuk · May 17, 2020 If records are never deleted and you're okay with a few misses, use ExtentSizeFast, if you need the fastest precise runtime implementation use ExtentSize, in you need better compile speed and don't care about runtime speed use GetExtentSize. /// w ##class(Utils.Persistent).GetGlobal("Utils.Persistent") ClassMethod GetDataGlobal(Class As %Dictionary.CacheClassname) As %String { Quit:'$$$comClassDefined(Class) "" Set Strategy = $$$comClassKeyGet(Class, $$$cCLASSstoragestrategy) Quit $$$defMemberKeyGet(Class, $$$cCLASSstorage, Strategy, $$$cSDEFdatalocation) } /// w ##class(Utils.Persistent).ExtentSizeFast("Utils.Persistent") ClassMethod ExtentSizeFast(Class As %Dictionary.CacheClassname) As %String [ CodeMode = expression ] { $Get(@..GetDataGlobal(Class), 0) } /// w ##class(Utils.Persistent).GetExtentSize("Utils.Persistent") ClassMethod GetExtentSize(Class As %String) As %Integer { Set Global = ..GetDataGlobal(Class) Quit:Global="" 0 Set Id = $Order(@Global@("")) Set Count = 0 While Id '= "" { Set Id = $Order(@Global@(Id)) Set Count = Count + 1 } Quit Count } ClassMethod ExtentSize() As %Integer [ CodeMode = objectgenerator ] { set Strategy = $$$comClassKeyGet(%classname, $$$cCLASSstoragestrategy) set Global = $$$defMemberKeyGet(%classname, $$$cCLASSstorage, Strategy, $$$cSDEFdatalocation) Do %code.WriteLine(" Set Id = $Order(" _ Global _ "(""""))") Do %code.WriteLine(" Set Count = 0") Do %code.WriteLine(" While Id '= """" {") Do %code.WriteLine(" Set Id = $Order(" _ Global _ "(Id))") Do %code.WriteLine(" Set Count = Count + 1") Do %code.WriteLine(" }") Do %code.WriteLine(" Quit Count") Quit $$$OK }
go to post Eduard Lebedyuk · May 17, 2020 set user = $username set role = "MyOperation" set sc = ##class(EnsLib.Workflow.UserDefinition).CreateUser(user) set sc = ##class(EnsLib.Workflow.RoleDefinition).CreateRole(role) set sc = ##class(EnsLib.Workflow.RoleDefinition).AddUserToRole(role, user) Export role/user globals as xml.
go to post Eduard Lebedyuk · May 15, 2020 Great article. Is it available for InterSystems IRIS? Some projects make use of dynamic objects and it would be great to show them in Visual Trace.
go to post Eduard Lebedyuk · May 14, 2020 Check out the OpenID connect plugin for IAM.This doc mentions that Keycloak works with this plugin.
go to post Eduard Lebedyuk · May 14, 2020 You can use JDBC gateway via Interoperability productions (EnsLib.SQL package). How are you using ODBC in InterSystems ObjectScript?
go to post Eduard Lebedyuk · May 13, 2020 You need the c flag write $SYSTEM.OBJ.Load("C:\InterSystems\HealthShare_2\opt\contenedor\zpm-0.2.2.xml", "c") But as @Evgeny Shvarov said you'll need InterSystems IRIS for zpm to work.
go to post Eduard Lebedyuk · May 12, 2020 $STORAGE is a special variable which contains the number of bytes available for a current process. After it hits zero you get STORE error. You can profile your code to see which part leaks memory. Small example: write $STORAGE >268326112 set i=1 write $STORAGE >268326104 kill i write $STORAGE >268326112 Check that: $storage before and after EvaluateClone call is the same $storage on each loop cycle is the same Another approach is throwing/catching and logging an exception and checking what's available in each frame. do clone.Children.RemoveAt(key) // update clone RemoveAt returns oref, maybe you need to kill it. I'm wondering if IS has a java-like garbage collector (as in "the object is automatically destroyed"), and if so, is this keeping up with the clone construction and killing, over a 200k+ loop? Is it an immediate thing, or is there a garbage collector crawling around looking for un-referenced objects? InterSystems products have automatic garbage collector. I'm not sure on the specifics. Calling @Dan Pasco.
go to post Eduard Lebedyuk · May 12, 2020 You can use Java Gateway and this project. On a first overview this looks like a container specification with standard crypto algorithms. So you can definitely implement it in InterSystems IRIS. I have done Xades implementation for InterSystems IRIS and it's doable (500 sloc total).
go to post Eduard Lebedyuk · May 11, 2020 2019.1.1 supports IAM. 2019.1.0 does not. So no need to upgrade. Docs: Web Application management User Management