go to post Alexey Maslov · Jul 24, 2021 Jack, your results are easy to explain. When you use $list*, you must perform conversion to string which adds extra cost. When you check some conditions inside the loop, you add some cost as well, how much - it depends on checkup method. So, the best results should be achieved with Robert's and Alex's approaches. I'd prefer the Robert's one as it doesn't force special processing of the first element.
go to post Alexey Maslov · Jul 23, 2021 Agree with you: to guess that the "kosher" way to get a current directory is to call set currentDir = ##class(%Library.File).NormalizeDirectory("") one should not be a priest; being a modest monk should be quite enough.
go to post Alexey Maslov · Jul 23, 2021 Thanks for the good advices, guys.Robert, you should be aware that $zu(12) (a.k.a. $$$FileMgrDir) is usually not the same as $zu(12,""): QMS>w $zu(12) f:\intersystems\cuni\mgr\ QMS>w $zu(12,"") d:\bases\qms\ My writing was just a result of quick prototyping using the terminal. Just for curiosity, I dived into %occFile.inc and there was no macro to get the current directory. It is possible through class method call (##class(%Library.File).NormalizeDirectory("")), while all this stuff looks like a great overkill for such a small sample.
go to post Alexey Maslov · Jul 21, 2021 set status=statement.%Execute($zu(12,""),,GlobalName,,,FastFlag) runs fast enough with FastFlag=1.
go to post Alexey Maslov · Jul 21, 2021 GSIZE is way faster than the analogous ObjectScript functionality %GSIZE is written in ObjectScript. What "analogous ObjectScript functionality" do you mean?
go to post Alexey Maslov · Jul 9, 2021 As you probably know, there are two explorers in VS Code: client-side (<Ctrl-Shift-E>) and server-side ("ObjectScript", which comes with InterSystems extensions). If you don't see your routine in the first one, you just need to export it using the second one.
go to post Alexey Maslov · Jun 30, 2021 Thank you, John, it sounds promising, while I've found only a facility of adding web links here. My case is a "plain" COS command line to execute. In the meanwhile, it seems that I've found a solution; if anybody is interested, I'll write a couple of words about it earlier.
go to post Alexey Maslov · Jun 23, 2021 Hi George I came to the same conclusion. The task is not too urgent, so we'd likely cope with it by our own means, but thanks anyway.
go to post Alexey Maslov · Jun 23, 2021 I should be more specific in formulating the question.So, attempt #2: We used server-side source control in Studio just for having additional menu items, not for source control itself; Now, after switching to VSCode, we started using "normal" client-side source control based on GitLab; What I want is to revive those additional menu items I was able to add using Studio. ...And I don't see how to achieve it as the server-side source control menu is only active on "server-side" WorkSpaces, while client-side source control is not available there. I'm not sticking to this way of adding menu items to VSCode, it just seemed that it will be the easiest one. Now I see that how wrong I was. Any idea of how to add menu items (with associated server commands) would be appreciated.
go to post Alexey Maslov · Jun 23, 2021 Thank you, John, the idea is good, while I'm still unhappy and need to dig more.
go to post Alexey Maslov · Jun 21, 2021 Thank you all for the quick responses, but: from all the server-side source control functionality I used only the possibility to extent Studio's menu by adding items to the source control menu. E.g. XData Menu { <MenuBase> <Menu Name="%SourceMenu" Type="0"> <MenuItem Name="My item 1" Save="100"/> <MenuItem Name="My item 2" Save="100"/> ... </Menu> <Menu Name="%SourceContext" Type="1"> <MenuItem Name="My item 1" Save="100"/> <MenuItem Name="My item 2" Save="100"/> ... </Menu> </MenuBase> } Can I implement something similar with VS Code?
go to post Alexey Maslov · Jun 17, 2021 Thank you for examples, but is it possible to get a list of deprecated and discontinued technologies?
go to post Alexey Maslov · Jun 9, 2021 Methods how these macros are defined are quite different: $$$ISWINDOWS is calculated using system call and always 1 on Windows platform, in contrast $$$WindowsCacheClient is defined manually, so it and can be easily set to 0 if needed. Many years ago I faced a problem with LDAP which was solved this way (I didn't change ISC code, it was my own "fork"). Don't remember other details, only the fact.
go to post Alexey Maslov · May 15, 2021 Converting the file name to UTF8 usually helps. E.g. USER>s file=$zcvt("/home/qms/Müller_Jörg.txt","o","UTF8") w $zf(-100,"","touch",file) 0 qms@testhost:~$ ls -l Müller_Jörg.txt -rw-rw-r-- 1 qms cacheusr 0 May 15 18:39 Müller_Jörg.txt
go to post Alexey Maslov · May 11, 2021 Postgres: Release 12, default ubuntu install Default install hardly had a chance to win. Why didn't you use IRIS default install?For fair play, each DBMS should be best tuned by the appropriate specialist.
go to post Alexey Maslov · Apr 19, 2021 Robert, Are you introducing an ability to play with additional IRIS configuration settings without restarting a container? If so, it sounds reasonable. To address one of the security issues mentioned by Dmitry, why not hardcode a public key (or even several public keys) and disable SSH password authentication?
go to post Alexey Maslov · Mar 26, 2021 If I could explicitly set authentication method for various parts of our instance Apparently you can do it for each part of your instance represented as a web application. Just look in System Management Portal (SMP): System > Security Management > Web Applications: all the /csp/sys/* stuff is nothing else but SMP's function groups starting pages.
go to post Alexey Maslov · Mar 24, 2021 If you have an article posted on DC and an app downloaded on OEX Did you really mean an app uploaded to OEX?
go to post Alexey Maslov · Mar 19, 2021 Robert,you are absolutely correct in your guess: I've just called it from terminal :)Another option is to put agg into the PublicList of the caller method. I still like it more than passing by reference as it looks clearer. P.S. Correct caller was added to my sample code. THX Robert.
go to post Alexey Maslov · Mar 18, 2021 Just a small fix that makes the PublicList unnecessary: ClassMethod Flatten(reference, Output flat) { For { Set reference = $query(@reference) Quit:reference="" Set value = $listbuild(@reference) For i=1:1:$qlength(reference) { Set value = value_$listbuild($qsubscript(reference,i)) } Set flat($i(flat)) = value } } The fixed method should be called in a slightly different way: Method SomeMethod(...) [ PublicList = agg ] { ... Do ..Flatten($name(agg),.summary) ... }