Herman Slagman · Nov 29, 2022 go to post

Not only external code, but IRIS itself would probably stop working ;-)
But setting it as a ClassDefinition option should be feasable, then the class compiler could convert 'standard' precedence to ObjectScript precedence.

Herman Slagman · Oct 11, 2022 go to post

I consider myself a 'real' developer, but if I'm developing with/against clusters, containers, WSL, K8S etc, I think the beefiest the better. OS doesn't matter, but i9 grade and 32 GB is minimum. 4K partitions on DSM-11 doesn't do it anymore.

Herman Slagman · Sep 1, 2022 go to post

Except that calling Python is about 10x slower, although it gives probably the value that you want.
$Now() gives a different value because it doesn't take Daylight Savings Time into account.
 

Herman Slagman · Jun 27, 2022 go to post

Yes, it can, ECP seems to be compatible between IRIS and Ensemble (or Cache)
We will use it for migration to IRIS too, first add an IRIS ASync member to the mirror and then later promote it.
We only have done this in a test scenario, so no guarantee ;-)

Herman

Herman Slagman · May 8, 2022 go to post

I don't know what you call slow, but a class with 24 mio objects shouldn't be slow.
Even in our biggest class with 3 billion objects a rather complex query takes about 30 secs.

Herman Slagman · Mar 14, 2022 go to post

The only way you could accomplish this is by watching the journal files, there would be journals like "Set Global" and "Kill Global"

Herman Slagman · Feb 22, 2022 go to post

IRIS isn't suitable (nor meant to be) running on the edge or inside containers for that matter.
As its name implies it is a Data *Platform* a framework on its own for running large-scale mission-critical applications.
IRIS Agents or ECP Clients or whatever you will call them could extend IRIS to the realm of containers and edge applications.

Herman Slagman · Dec 20, 2021 go to post

This seems to work:

Method %OnNew(InitVal As %String) As %Status
{
Do ..HTMLZIPDoc.%LocationSet("c:\temp\zips")
Return $$$OK
}
 

Herman Slagman · Dec 13, 2021 go to post

We got an answer from ISC:

====
IRIS and Cache do use log4j but our products do not include versions affected by this vulnerability. This vulnerability affects versions from 2.0-beta9 to 2.14.1. The log4j versions used in Cache and IRIS product are based on version 1.x of log4j which is not affected by this issue.
====


But of course one can use Log4j 2.* in your own Java applications.

Herman Slagman · Dec 12, 2021 go to post

If you mean an argument to the Method, use the MethDef.FormalSpec string:
The format is Arg1:Type,Arg2:Type=default,...

Herman Slagman · Dec 10, 2021 go to post

Open the ClassDefinition: Set ClassDef=##class(%Dictionalry.ClassDefinition).%OpenId(ClassName)
Add the Parameter

Set Parm=##class(%Dictionary.ParameterDefinition).%New(ClassName_":"_ParameterName)
Set Parm.Default=ParameterValue
Do ClassDef.Parameters.Insert(Parm)


Find the desired method in ClassDef.Methods collection by MethDef.Name
Use the MethDef.Implementation stream to manipulate the code
Compile the class.

Herman Slagman · Dec 7, 2021 go to post

I don't know if this is the case, but be sure not to output anything before setting Content-Type or HTTP status.
In my case it was a debug Write statement that wrote directly to the current TCP stream.
Because of IO redirect when something is written to the stream (the HTTP body) first the headers must be written and those are at that time the default values.

Herman Slagman · Nov 5, 2021 go to post

But it's not about the front-end, you can use any you like.
The power of CSP is in the back-end: hybrid server-side rendering, seamless integration with Classes, #server/#call.
If you are developing an InterSystems-only web application, not using CSP would be foolish.
You can still use Bootstrap, Tailwind, etc for the UI sugar, but for data integration and routing there's no match.

Herman Slagman · Nov 4, 2021 go to post

Interesting to see if this will be a container-only release (as intermediate releases tend to be) or a full kit release.
In the Early Adaptor Program, there were full kits available, which would be my preference.

Herman Slagman · Nov 4, 2021 go to post

> ISC was never a leader in WebPages  

I don't agree: Weblink/CSP was Ajax-avant-la-lettre, it was absolutely amazing what you could accomplish with CSP/CSR. Rob Tweed and Chris Munt invented it and Stavros Macrakis marked it. We were able to rewrite our VB based application (dll-hell) within a few months and being much more flexible.
I still think CSP is very useful for 'internal' applications, combined with Tailwind ccs and Alpine js anything is possible.

Herman Slagman · Jun 29, 2021 go to post

The first question you should ask is: why do I need a composite primary key?
In general, in Cache/IRIS you don't want to mess with the default key provided by %Persistent storage.
In 99% of the cases, a unique index would be sufficient.

Herman Slagman · Jun 22, 2021 go to post

You changed the question, my answer was for a DynamicObject/Array.
For regular classes you use:
##class(%Dictionary.CompiledProperty).%ExistsId(ClassName_"||"_PropertyName)
or just use a Try-Catch construct.

Herman Slagman · May 26, 2021 go to post

You'll have to put the Try-Catch construct at the same dot-level:

If 1 Do
. Try {
. Write a=b
. } Catch e {
. ZWrite e
. }
Herman Slagman · May 19, 2021 go to post

Xecute and indirection (@) are outside of the scope of a procedure.

Change the label to:

label(test) [routine] public

Where [...] is the public-list, those variables are available outside the scope of a procedure.

If you leave out the procedure brackets, all variable are 'globally' availabe.

Herman Slagman · Feb 17, 2021 go to post

ClassMethod CreateApplication() As %Status [ CodeMode = objectgenerator ]
{
Set $ZTrap="Error"
Set sc=$$$OK
Write !,"Creating Mitz API",!
Set Here=$Namespace
Set URL="/mitz"
Set $Namespace="%SYS"
If ##class(Security.Applications).Exists(URL) {
Write "Mitz API already exists",!
Else {
Set Props("Name")=URL
Set Props("NameSpace")=Here
Set Props("Description")="Mitz notificatie API endpoint"
Set Props("AutheEnabled")=64
Set Props("DispatchClass")="LSP.Mitz.API"
Set Props("MatchRoles")=":%All"
Set Props("Type")=2 ; CSP App
Set sc=##class(Security.Applications).Create(URL,.Props)
}
Set $Namespace=Here
Return sc
Error
Set $ZTrap=""
If $Data(Here) Set $Namespace=Here
Return $$$ERROR($$$GeneralError,"ErrorTrap: "_$ZError)
}

Herman Slagman · Feb 16, 2021 go to post

Kong Enterprise is currently on 2.3.x, what makes IAM so different from a rebranding of Kong Enterprise?
Besides that, Kong Enterprise seems to be free of charge as of now, what is the benefit of using IAM?

Herman Slagman · Feb 1, 2021 go to post

I'm not sure what you are trying to accomplish, JSON doesn't have tags and the example you provide is XML