Dmitry Maslennikov · Jun 16, 2020 go to post

VSCode-ObjectScript extension which I suppose you already use, support the way, to work at the same time with multiple connections. And Mathew, gives you an example how to configure it. Look at the project. Important file there is multi.code-workspace, it's a kind of project file for VSCode, where is defined two folders, and each of those folders has its own separate settings for InterSystems. So, it means each folder will have its own connection to its own server. And you can configure as many connections as you would like. With the next release, I think it will be available one more way how to achieve the same.

Dmitry Maslennikov · Jun 12, 2020 go to post
<Invoke Class="Security.Users" Method="AddRoles" CheckStatus="1" > 
    <Arg Value="UnknownUser"/>
    <Arg Value="Services_Role"/>
</Invoke>

First of all, I have to investigate it by myself, so, I would have something specific to ask through WRC. At the moment, the issue I see now only on cached quires. We build our application, as separate database files with only deployed code, which we deliver to customers. And we run our tests, in the way as it works on the customer's side. The same deployed code, and for sure without cached queries.

I've already found this qualifier, and it actually does not make any difference for us.  Cached query-classes, go to %sqlcq package, where it's mapped, definitely not with our code, and it also contains namespace, which will be different on the customer's side. Another solution would be to just rebuild all cached query, in the application. How it would be possible to do? As I said earlier, we test our queries for performance regressions, and not only queries, everything, and as we don't have any cache at all when we start our tests, our tests now became useless. How we can trust test's results, while the part of performance regression is just a compilation for SQL queries?

So, we have to somehow warm our application.

Writing own class queries just restore changes things, which was ok on the previous  versions not an option at all even we would have much less such queries. As We don’t going to use sharping we would better to deliver our application as we did it for Caché.

We need one place where we could change the way.

We also use UnitTests, and as part of our tests we test for performance regression, and now we get some tests failed due to significant performance regression. So now we have to spend time on investigation why it’s happening. I should expect better performance when I migrate between versions, but our automatic tests doesn’t show it.

First of all, you should not think, that using docker is the same as you would install it natively. You have to build your own per-project environment with docker. 

Where to find information

In addition, you would need a code editor, and you can use cross-platform VSCode with extension VSCode-ObjectScript. Brief info about how to install and configure it on Learning.

I've been using macOS Catalina, and while I'm also using docker for any project I work with, I even did not notice that it's now not supported.

So, use docker, it's very easy.

Dmitry Maslennikov · May 21, 2020 go to post

VSCode itself has support for git out of the box. So, with VSCode-ObjectScript, when you just starting to use it, you can export source code from your server, and you can send it to git. 

Join me the next week on the webinar, where I'm going to speak about using git in VSCode. Also, you can look at the recording of the recent webinar from Raj Singh

And in VSCode marketplace you can find extensions for many others SCM.

Dmitry Maslennikov · May 21, 2020 go to post

What kind of issues in synchronization did you face?

If it has just Export

And what do you miss about debugging in VSCode.

You know that you always can ask me if you have any issues. ))

Do you remember, that Atelier has no future at all?

Dmitry Maslennikov · May 21, 2020 go to post

I have this in my settings.json file

  "workbench.colorCustomizations": {
    "activityBar.background": "#0079c9",
    "activityBar.activeBackground": "#0079c9",
    "activityBar.activeBorder": "#ff80cc",
    "activityBar.foreground": "#e7e7e7",
    "activityBar.inactiveForeground": "#e7e7e799",
    "activityBarBadge.background": "#ff80cc",
    "activityBarBadge.foreground": "#15202b",
    "titleBar.activeBackground": "#005a96",
    "titleBar.inactiveBackground": "#005a9699",
    "titleBar.activeForeground": "#e7e7e7",
    "titleBar.inactiveForeground": "#e7e7e799",
    "statusBar.background": "#005a96",
    "statusBarItem.hoverBackground": "#0079c9",
    "statusBar.foreground": "#e7e7e7",
    "statusBar.border": "#005a96",
    "titleBar.border": "#005a96"
  },

This is not a part of this extension, it's just goes from VSCode itself, and marketplace can offer some extensions which can help with easy configuration of it.

As to your task, the same task will be much easier to implement in VSCode.

Dmitry Maslennikov · May 21, 2020 go to post

If you have read the article provided above, and maybe would saw the webinar by Raj Singh very recently, where he said, that VSCode will have support through WRC quite soon when we'll reach the stable version 1.0.

  • You installed IRIS or Caché at least, so, just a couple of more installs, to make you more productive.
  • It has the documentation.
  • Yes, you can also have multiple connections, it's a bit tricky there, but possible. As soon as you understand why you really need it.
  • You can change any colors in VSCode as you would like, just from the settings
  • VSCode has support for GIT out of the box, while in Studio there are not ways, how to do it very simple
  • You can ask any questions about using VSCode extension here, some small fixes I'm releasing quite quickly. 

Studio as well as Atelier, will not get any big improvements anymore, just only to keep it working with the newest version. While VSCode is in active development and will get a lot of new features, which will not be available in Studio.

Dmitry Maslennikov · May 17, 2020 go to post

There are multiple ways, just use Create method directly on classes Security.Roles, and Security.Users

do ##class(Security.Roles).Create(Name, Description, Resources, GrantedRoles)
do ##class(Security.Users).Create(UserName, Roles, Password)

Or, you can use %Installer manifest

<Resource
    Name="%accounting_user" 
    Description="Accounting"
    Permission="RW"/>
<Role 
    Name="%DB_USER"
    Description="Database user"
    Resources="MyResource:RW,MyResource1:RWU"
    RolesGranted= />
<User 
    Username="Clerk1"
    PasswordVar="clerk1pw"
    Roles="Dataentry"
    Fullname="Data Entry Clerk"
    Namespace=
    Routine=
    ExpirationDate=
    ChangePassword=
    Enabled=
    Comment=""/>

It looks like a good request for WRC, why non-interactive mode does not work in emergency mode. And maybe they can offer a workaround.

Depends on how you call it, you can just kill that process which runs such query. If you did it in the System Management portal, wait for a connection timeout, or open a new session in another browser or in incognito mode, go to processes, discover your hanging process, and terminate there. 

As I said for server side it show linux for os/arch. You should find the switcher in context menu in tray on docker icon.

On windows docker works in two different ways, as windows containers and linux containers. It looks like, you just should switch it to linux from Windows

Ken, 

You running IRIS with an activated feature named as Durable %SYS, which means, some of your settings, should persist even when you restart and recreate containers. So, this may be a cause that your global persist after a recreate container. But does not says why it disappears after the restart of the host system. While we know almost nothing about your whole configuration, it's a bit difficult to discover what's going wrong.

For sure, you can connect with Studio, just should keep in mind few points:

  • The version of Studio should be the same or higher than version of server
  • Port used for connection should be superport which is 51773 on IRIS side. So, you just have to add more -p 51773:51773, where the first 51773, is the port on your host machine, while the second one is mostly constant.

You can also use VSCode for development with IRIS, in this case, should be used web port 52773, instead of 51773. 

I have recently implemented SAML Authentication for one of the projects where I participated, with some SAML providers. I have not tested it with Shibboleth, but with some online providers, including GSuite. It's not so difficult actually and can be solved with SAML classes already implemented in IRIS for SOAP.

But this is the only Authentication, while SAML supports also supports provisioning, which I have not Implemented at the moment.

Craig,

Try this

RUN wget -qO /dev/null --keep-session-cookies --save-cookies /dev/stdout --spider \
  --method POST --body-data="UserName=$WRC_USERNAME&Password=$WRC_PASSWORD" \
  'https://login.intersystems.com/login/SSO.UI.Login.cls?referrer=https%253A//wrc.intersystems.com/wrc/login.csp' \
 | wget -O - --load-cookies /dev/stdin \
 "https://wrc.intersystems.com/wrc/WRC.StreamServer.cls?FILE=/wrc/Live/ServerKits/HSAP-2018.1.2.309.5-hscore15.032-b9021-lnxrhx64.tar.gz" \
 | tar xvfzC - . 
Dmitry Maslennikov · Apr 30, 2020 go to post

Thanks, a lot, it may help.

But unfortunately, Export in case of Base64 does not work correctly, and anyway have to be fixed. Due to the specialty of Base64, a string which has to be encoded in a chunked manner, have to be devisable by 3. At the moment it reads original stream with default size of chunk, 32656 (instead of 32656\3*3=32655), so, base64 becomes incorrect, and decoded back is different from the original.