go to post Stefan Cronje · Oct 23, 2018 Great stuff. Thanks. Where can I get the sample files and/or some instructions on the use of Kubernetes as demonstrated?
go to post Stefan Cronje · Oct 21, 2018 Thanks. I think that is one of the sessions I wanted to attend, but never got to it. I still need to go watch all the ones I wanted to attend, but had to choose between sessions or got pulled into meetings.
go to post Stefan Cronje · Oct 20, 2018 Thanks for the post. I am looking forward to 2019.1.Regarding the following statement:"application>.disp: dispatch class ready to use in the CSP application. It extends %CSP.REST and define the XData UrlMap. This class is read-only and marked as system class (by default is hidden in Atelier)."- My opinion is that is should not be hidden by default. I would like to add it to the git repo to package it with a version.A question on the "impl" file. What happens if I have implementation code in it already and get an updates Swagger and generate it again? Does is overwrite the code or does it keep my code and add the new methods, etc.?
go to post Stefan Cronje · Oct 20, 2018 You cab create a new include file or add the following to one of your existing include files#define true 1#define false 0Then in your class, include this include file and use as follows:set varName = $$$true
go to post Stefan Cronje · Oct 20, 2018 Hi Evgeny,Thank you for the suggestion.We still then need to keep on developing primarily on Ensemble and once we release, then we create a release file for IRIS, which sounds good. This does create the risk of testing something on Ensemble and it maybe does not work on IRIS.Every project has its own set of classes as well in addition to the shared code libraries. On these project specific classes, we may want to use new IRIS features. This creates the issue that I can't develop on Ensemble and only build and IRIS release. Not sure if you understand what I am getting at. The idea was that if a dev works on one of these projects, he/she only changes the server connection in Atelier, synchronise, compile and work. If that person needs to work on another project on Ensemble, the repeats the steps above. The git repo takes care of the source management, even though we are on different InterSystems products.We use a local git repository on one of our servers.
go to post Stefan Cronje · Oct 13, 2018 Missed that bit. I was only looking at the part I wanted. Such a typical developer thing to do
go to post Stefan Cronje · Oct 13, 2018 Thanks. Appreciate it. If I'm writing a method that uses this class in another namespace, I should be able to just zn to %SYS in the code in order to use the class.
go to post Stefan Cronje · Oct 13, 2018 Thanks. I will try from the %SYS namespace. I was trying to access it in another namespace. It also does not show in the class explorer. One of those "hidden" features.
go to post Stefan Cronje · Oct 13, 2018 I am using Ensemble 2017.2 and the Config.MapGlobals query is not available.Do you know how I can list the mapped globals of a namespace on 2017.2?
go to post Stefan Cronje · Oct 8, 2018 To implement a pause prior to continuing the loop, use the hang statement.The code provided above is perfect for all the other requirement. After the closing bracket of the "catch", add "hang 10" for a ten second "sleep".You should also add a mechanism to stop this iteration somehow. It will be good practice.ClassMethod Start(){ While (^RunMyApp = 1) { try { do ..YourMainMethod() } catch err { //log error here } hang 10 } If you then want to stop your code from running, open another terminal or use the Management Portal and set the global value:set ^RunMyApp = 0
go to post Stefan Cronje · Oct 7, 2018 The repo contains an example. Here is an example of exporting the stack to a string in terminal DEV>set sc = ##class(Examples.DebugStack).TestDebugStack() Examples.DebugStack TestDebugStack Calling Method InnerStackTest with value: 5 | |- Examples.DebugStack TestInnterStack pVal argument: 5 | |- Examples.DebugStack TestInnterStack tMyVal: 15 | |- Examples.DebugStack TestInnterStack Calling TestThirdLevelStack with tMyVal: 15 | | |- Examples.DebugStack TestThirdLevelStack pVal argument: 15 | | |- Examples.DebugStack TestThirdLevelStack tFinalVal: 35 | |- Examples.DebugStack TestInnterStack TestThirdLevelStack completed OK Examples.DebugStack TestDebugStack TestInnerStack completed OK DEV> It will be more readable if placed in a text file or a CSV. The "columns" are tab delimited. It has the option of providing output to a string or a global character stream.
go to post Stefan Cronje · Oct 6, 2018 This is just an idea, and I may be corrected on this.You get an array of artists. I can't find anything on storing arrays of the same key as you have in this scenario.I would first do the web-service call.Then create a DynamicObject using %FromJSON and the http response data as the source.Get the array of artist from the DynamicObject using %Get("artists") on the DynamicObject instance.Create an iterator on the object returned by the previous command using %GetIteratorIterate through the collection - for eachCreate a docdb entry and the properties or open an existing one. I recommend creating a separate method for this to keep the code concise.Create a JSON stream of the current object on the iterator using %ToJSON(.tMyStream)DO db.%FromJSON(.tMyStream)
go to post Stefan Cronje · Oct 5, 2018 Which properties of the JSON are you trying to store? Is it one of the properties from the "artist" object in the "artists" array?Can you provide the document class definition?
go to post Stefan Cronje · Aug 5, 2018 Thanks. I've figured that much out. I just don't know which Azure product. I will create a trial/test account with them and play around with ICM and see what happens - that should answer many of my questions/concerns. If successful, I will attempt to create an article and post it on the community.
go to post Stefan Cronje · Aug 5, 2018 Thank you. I am considering option 3, it is a learning curve, as I'do not have any experience in cloud computing.I am considering Azure, as it is is the only cloud provider with servers in our country and on the continent. Any guidance as to which package/product to use on Azure?
go to post Stefan Cronje · Jul 18, 2017 It seems like %Stream.FileCharacter does not use the LineTerminator that was set in the output file. Even when using Write and adding $char(13,10), it converts it to the OS setting.I resolved this line terminator issue by using %Stream.FileBinary and converting my data to UTF8 prior to writing it to the binary stream.
go to post Stefan Cronje · Jul 18, 2017 When writing to the filecharacterstream, I use Write and not Writeline, as the string is built up with the newlines and I use $char(13,10) specifically.I just compared the files between Windows and Solaris, and the Solaris files are two bytes smaller - so probably the \r($c(13)) getting dropped.
go to post Stefan Cronje · Jul 17, 2017 I need to have the newlines in. The only reason why files are used, is because Cache does not support the RSA PSS padding required to sign the web-service messages I need to send. I then write what needs to be signed to a file and use opensl to sign it.The value that needs to be signed is:X-Date:CurrentDate\r\nx-Client-Key:KeyValue\r\nMessageBodySee: https://community.intersystems.com/post/sha256-signing-rsa-pss-paddingSo it builds up the file to sign using the values and $char(13,10).Then signs it using SHA256 and RSA PSS padding into a new file.The contents of the new file is then base64 encoded.The base64 encoded value is then sent together with the file contents, date and Client Key.This works on Windows, hence the question about openssl and the newlines.Is the base64 encoding a possivle culprit?
go to post Stefan Cronje · Jul 17, 2017 Thank you. I've also read up a bit and 8-bit contents will not be bothered by endianness.You may have a point with the line endings. The value that is gettinhg encrypted has two \r\n in it - this works on Windows. I will try and change it to just \n for the Solaris server and see if that makes a difference.Do you know if openssl uses the line-end to know up the where to sign and does it line by line, or does it include the line endings in the value that should be signed?Apologies for all these questions. I am not very familiar with encryption, signing, openssl, etc.