go to post Dmitry Maslennikov · May 14, 2019 What do you have already?Did you configure ODBC DSN, DYLD_LIBRARY_PATH?Some information about configuring ODBC, you can find here.First of all I think you need iODBC installed on your mac.then ODBC Caché drivers, with correct environment variable DYLD_LIBRARY_PATH, do not forget to relogin after the set variable.As proof, that's possible to do it. Done with Caché 2018.1
go to post Dmitry Maslennikov · May 10, 2019 With such amount of data, does you have enough global buffers configured?Is it only one slow place, or you have any others as well?How big is your database, indexes globals and globals buffer?
go to post Dmitry Maslennikov · May 3, 2019 USER>set desc = "Review symptoms to report with patient" USER>set abbrv = ##class(%Regex.Matcher).%New("([^\ ]{2})[^\ ]*\ ?",desc).ReplaceAll("$1") USER>write abbrv Resytorewipa
go to post Dmitry Maslennikov · May 2, 2019 I think the best solution would be to configure SSH server, so, you'll be able to use putty as well. If your server on Linux, it should be only SSH. With SSH your connection surely will be encrypted.
go to post Dmitry Maslennikov · May 2, 2019 Look at this Class User.Test { ClassMethod Test(Args...) { ZWRITE Args } ClassMethod Test2(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8) { ZWRITE Arg1 ZWRITE Arg2 ZWRITE Arg3 ZWRITE Arg4 ZWRITE Arg5 ZWRITE Arg6 ZWRITE Arg7 ZWRITE Arg8 } } and let's call it USER>do ##class(Test).Test(1,2,,,,,,8) Args=8 Args(1)=1 Args(2)=2 Args(8)=8 and second method USER>do ##class(Test).Test2(1,2,,,,,,8) Arg1=1 Arg2=2 Arg8=8 And another way USER>set args=8 ;just the number of the latest one USER>set args(8)="test" and calls USER>do ##class(Test).Test(args...) Args=8 Args(8)="test" USER>do ##class(Test).Test2(args...) Arg8="test"
go to post Dmitry Maslennikov · Apr 30, 2019 What do you expect instead of "USER>", it is a session prompt, where you should put your commands. At this point, for me, it looks expectable.
go to post Dmitry Maslennikov · Apr 30, 2019 1. What you did, to get it. Please add all your steps, so we can find what you did wrong.2. IRIS container changed nothing what comes from base Ubuntu image. If you can install mc there it should be possible on IRIS as well. But I don't see any reasons, why mc should be available inside the container. And why you need it there?
go to post Dmitry Maslennikov · Apr 25, 2019 I think you are talking about subscripts and about the full length of global reference. You can't do anything with it and just accept it as a fact.
go to post Dmitry Maslennikov · Apr 22, 2019 It's not so much important to have key before install, much more important to have it when server is running.But how you sure that your key is suitable for this platform. You can check it on running container, where you can enter inside, and go the csession. You can find some intersting methods for $SYSTEM.License in the documentation which can help you to check license file inside the container.
go to post Dmitry Maslennikov · Apr 22, 2019 Most of the reasons for getting such error is just missed license file or exceeded license limit.Just check it, you can mount it during docker run or copy it inside the image during docker build.I see that you use quite an old version, I would recommend considering usage latest version based on IRIS. Due to many limitations of using such an old version in Docker.
go to post Dmitry Maslennikov · Apr 15, 2019 So, you can convert $List to some kind of List in C?$LIST is a very simple format, but you can't get any particular item just by position. You should go through the list from the first item.In a simple explanation, it is just concatenation of individual $LIST. So, you can't say how many items you have until you go through this list and count them.
go to post Dmitry Maslennikov · Apr 15, 2019 I have not played with C, yet. But I found CachePopList and CachePushList. have you tried to play with it? Looks like it may help you to order over $List.
go to post Dmitry Maslennikov · Apr 13, 2019 Sure, all project specific settings, should be stored in .vscode folder In the root of project. So, you can control this folder with source control system. Look at the VSCode documentation. And at one of my ne projects as an example.
go to post Dmitry Maslennikov · Apr 12, 2019 It's really great news. And so cool that InterSystems started to participate more in developers conferences. I wish to participate all of them :)
go to post Dmitry Maslennikov · Apr 10, 2019 Base64 does not work with unicode with two or more bites. You should convert it first write $system.Encryption.Base64Encode($zcvt("тест","O","UTF8")) 0YLQtdGB0YI=
go to post Dmitry Maslennikov · Apr 10, 2019 Some time ago I did an example of Angular Application with IRIS on a backend.Source for this project available on gitlab.How to develop Angular application, you should look at angular documentation, and all about frontend development. There are some tools, which helps to develop and build your frontend side. Such as webpack, which do most of work related with build your sources to production ready environment.In my simple project, you need only docker, and any editor, preferable VSCode.By command, you will get a running server in development mode. So, you can edit Angular code, and IRIS code, and see an immediate result. docker-compose up -d And this project also deployable with Kubernetes. So, after any push of changes to gitlab, it will build, and test it. node_modules, never goes to source control. It's enough to have package.json and package-lock.json there. node_modules may contain platform specific libraries. Hope I will manage to write a complete article about this project, with all the details.
go to post Dmitry Maslennikov · Apr 10, 2019 Sorry, usually I use it to add custom methods to properties. Did not not, that it doesn't work for such methods as Set/Get. But you can add any other method.
go to post Dmitry Maslennikov · Apr 9, 2019 Why do not use PropertyClass, so, you can generate own getter and setter for any property in a class?
go to post Dmitry Maslennikov · Apr 4, 2019 There is also ClassMethod GetGlobalSize in the class %Library.GlobalEdit , where you can select a fast way to count or not, and you will get a different result. ClassMethod GetGlobalSize(Directory As %String, GlobalName As %String, ByRef Allocated As %Integer, ByRef Used As %Integer, fast As %Boolean = 0) as %StatusGet size of this global'Allocated' - total size, in MB, of blocks allocated for the global.'Used' - total used data, in MB, for the global.'fast' - TRUE : faster return, it won't return the value of 'Used'.FALSE - slower return,, it returns values for both 'Allocated' and 'Used'.So, when fast, it just counts blocks and don't care how those blocks fill by data and multiply the number of blocks on Size of the block.Used, counts only when you pass fast=0, and it calculates exact size, and to be more accurate reads all blocks, so it could be slower.
go to post Dmitry Maslennikov · Apr 3, 2019 Web applications defined in Security.Applications class in %SYS namespace. zn "%SYS" set props("Path") = "/opt/my/app/csp" set props("Description") = "My Cool Application" do ##class(Security.Applications).Create("/csp/test", .props)