go to post Dmitry Maslennikov · Jul 13, 2021 Community edition version is limited to 8 cores. Do, if you are able to limit it somehow, do it. I would recommend using Docker, and it gives an ability how to limit CPUs for a container.
go to post Dmitry Maslennikov · Jun 29, 2021 If you working with local files, and doesn’t work with ISFS, it should not be any problem, at least from InterSystems point. did you export files from the server?
go to post Dmitry Maslennikov · Jun 14, 2021 Do you need some tutorial, how to do it by yourself? Or just to do it for you?You may contact me via email, I can do it for you.
go to post Dmitry Maslennikov · Jun 9, 2021 I would recommend seeing what's stored in the database, for this, you can use %GSIZE and count all the globals,and you may find which global(s) so big. And you can stop the server, delete CACHE.DAT, and start it again, and in this case, it should be recreated anyway
go to post Dmitry Maslennikov · Jun 8, 2021 Try these two variants write $extract($random(10000) _ "0000", 1, 4) write $random(10)_$random(10)_$random(10)_$random(10)
go to post Dmitry Maslennikov · May 31, 2021 Could you share your connection settings? It should use super port 1972
go to post Dmitry Maslennikov · May 28, 2021 What the component did you use for connection? There are a few technologies that was deprecated with IRIS, or under an additional license option.
go to post Dmitry Maslennikov · May 27, 2021 Did you see these examples? I'm not an expert in .Net, but as I understood the documentation correctly, you must pass stream as is to .Net method with byte[] as is, and the Gateway should map it, for you.
go to post Dmitry Maslennikov · May 27, 2021 For performance reasons, it's possible to define an Index in a way, that some of the columns will be as part of the index itself, just for search, and some data could be in the data part of that index, which will be used to display in the result if requested. So, if your index is somehow corrupted, the SQL engine will expect the values there, and will look for it, so, it will not go to the place where the data originally seat. And as a result, you may not see some of the data in the output rows.
go to post Dmitry Maslennikov · May 27, 2021 Sure, it’s possible to do so. React application is just a frontend side, and IRIS itself can be as a backend server. Or you can write backend server on some other language, e.g. NodeJS, Python, Java or .Net. Which will connect to IRIS as a database. you can look at my Realworld project, in particular realization of backend server. The project itself offers, the wide variety of frontends and backends on different languages, and with using different databases. So, you find React frontend which will work with backend on IRIS. and look at my article about this project
go to post Dmitry Maslennikov · May 26, 2021 If you currently have running instance with all the namespaces together, for some time, you may look at ^GLOBUFF, to see how your global buffers used by now, and decide how to split that buffer for each instance.
go to post Dmitry Maslennikov · May 26, 2021 Switch to Docker will have much more pluses in your case.
go to post Dmitry Maslennikov · May 24, 2021 It’s a binary file and it’s contest for the current context not so important, what’s important is an ownership of the file. So ls -la /usr/local/etc/irissys/iris.reg
go to post Dmitry Maslennikov · May 21, 2021 Depends on what are you trying to achieve. Import as is, with an iterator Class User.Test Extends (%RegisteredObject, %JSON.Adaptor) { Property name As %String; ClassMethod Import() { Set data = [{ "name": "test1" }, { "name": "test2" }] Set iter = data.%GetIterator() While iter.%GetNext(.key, .value) { Set obj = ..%New() Set tSC = obj.%JSONImport(.value) Write !,obj.name } } } Import with a wrapper object Class User.TestList Extends (%RegisteredObject, %JSON.Adaptor) { Property items As list Of User.Test; ClassMethod Import() { Set data = [{ "name": "test1" }, { "name": "test2" }] #; wrap to object Set data = { "items": (data) } Set list = ..%New() Set tSC = list.%JSONImport(.data) For { set obj = list.items.GetNext(.key) Quit:key="" Write !,obj.name } } }
go to post Dmitry Maslennikov · May 20, 2021 Could you try to open URL in any Browser. http://192.168.245.118:57789/api/atelier/ It should offer to enter login and password, in a modal dialog, and after that should some JSON. In your case, looks like it responses with some HTML, probably with some error, like not found 404.
go to post Dmitry Maslennikov · May 17, 2021 LuhnMCheckSum(input) public { Set input = $Piece(input, "#", 1) Set codePoints = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/:" Set n = $Length(codePoints) Set sum = 0 Set factor = 2 Set len = $Length(input) For i = len:-1:1 { Set codePoint = $Find(codePoints, $Extract(input, i)) - 2 Set addend = factor * codePoint Set factor = $Case(factor, 2: 1, : 2) Set addend = (addend \ n) + (addend # n) Set sum = sum + addend } Set remainder = sum # n Set checkCodePoint = (n - remainder) # n Return $Extract(codePoints, checkCodePoint + 1) } LuhnMValidate(input) public { Set checksum = $Piece(input, "#", 2) Set input = $Piece(input, "#") Return $$LuhnMCheckSum(input) = checksum }
go to post Dmitry Maslennikov · May 13, 2021 So, you just need help in find the place in the class which cause an error? I would suggest to try removing each class member one by one, until you’ll narrow it to one member, and maybe you’ll realize why it’s happening.
go to post Dmitry Maslennikov · May 11, 2021 Yeah, sure, it's quite simple to do. JWT tokens contain three parts separated by a pointer sign. Header, with the algorithm of the signature and the type of token Payload, any data in JSON format Signature needs to verify the token All of those parts are encoded with Base64 Set token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" #; Extract parts of the token Set $ListBuild(header, payload, sign) = $ListFromString(token, ".") #; Decode and parse Header Set header = $System.Encryption.Base64Decode(header) Set header = {}.%FromJSON(header) Write !,"header" Write !,"alg = ",header.alg Write !,"typ = ",header.typ #; Decode and parse Payload Set payload = $System.Encryption.Base64Decode(payload) Set payload = {}.%FromJSON(payload) Write !!,"data" Write !,"name = ", payload.name Write !,"iat = ", payload.iat
go to post Dmitry Maslennikov · May 10, 2021 As I said, you have to get it from your client, It's no publicly available anymore.
go to post Dmitry Maslennikov · May 7, 2021 ObjectScript does not have such thing as an Interface. The only way to get something like this is to use Abstract class, with methods that throw an error, while not overridden.