John Murray · Jun 5, 2019 go to post

Wanna see the current results before you vote? Just log out of DC. Then view the poll. When you're ready to cast your vote, log in again wink

John Murray · May 29, 2019 go to post

If you want your Ensemble development team to work collaboratively in shared namespaces on a common server Git probably isn't a good choice for source control. Are you committed to using Git? Have you looked at our Deltanji product? It's integrated with Studio, and with Atelier, and also with our Serenji extension for Visual Studio Code. It's able to handle code deployment as well as versioning. It also supports scenarios where developers work in their own namespaces (whether on a shared server or on their local machines).

John Murray · May 22, 2019 go to post

I agree, but unfortunately Portal's edit forms for config items always apply settings  into the production class (the XData block). Even worse, Portal ignores the source control status of the production class, so you can't prevent these changes. Portal users have to go elsewhere to add/edit System Defaults values. It's far from obvious, nor is it easy. And because they don't have to (i.e. the users can just make the edit in the Portal panel and save it) nobody does. We raised all this years ago, but so far it's remained unaddressed sad

See also https://community.intersystems.com/post/system-default-settings-versus-…

John Murray · May 21, 2019 go to post

Folder within VSCode? Or folder on your local disk, that you could browse using Windows Explorer or macOS Finder in order to see a set of textfiles containing classes, routines etc?

John Murray · May 21, 2019 go to post

Please clarify what you are referring to when you say "client-side code".

John Murray · May 21, 2019 go to post

I've checked that it compile, is synchronized server-client and vice versa.

Is this referring to when you're using the Serenji extension? If so, understand that there is no client-side copy of your code (so no synchronization involved). Serenji works directly on your server-side code.

It's good. Only I'm missing the intellisense

Yes, Serenji doesn't yet do a good enough job of providing Intellisense. It's on our roadmap.

John Murray · May 21, 2019 go to post

If you disable ObjectScript VSCode and enable Serenji I hope you'll be able to work the Serenji way. Please try it.

John Murray · May 21, 2019 go to post

Did you intentionally start your Serenji service process on port 43221 rather than the default port, which is 43211?

You can check the status of that service process by running this command in a Cache Terminal:

D ^%Serenji

The output includes  a section like this:

Serenji explore/edit/debug service
----------------------------------
 Service status: Running
   Primary port: xxx
   Aux port min: xxx
   Aux port max: xxx
 Server address: xxx
John Murray · May 10, 2019 go to post

Nice to see this preview appear, and being a Docker container made it easy for me to download, spin up and verify that our Serenji extension for VSCode seems to work fine. Not that I'm surprised, seeing how good at maintaining backward compatibility I've always found ISC to be.

John Murray · May 9, 2019 go to post

Version 3.0.3 has just been published. Main new feature is support for web app files (CSP, CSR and other text types). These appear in the tree under the package associated with the app:

Other changes:

  • Initialize standard workflow for embedded Deltanji (new installs).
  • Interoperate better with Studio locking scheme.
  • When launching debug, default namespace and program based on current document.
  • Recover from connect failure (e.g. bad password).
  • Report version mismatch between extension and server.
  • Offer to compose email requesting debug evaluation key.
  • Incorporate service stop / start into install / upgrade method.
  • Prepare for VSCode 1.34.
  • Prepare for upcoming Deltanji extension.
John Murray · May 8, 2019 go to post

My guess is this is on Windows, and the Windows service that HealthShare runs as is configured to Log On As a specific Windows account. Check those credentials. Perhaps the password has been changed, or the account has expired, or been disabled. Look in the Windows event logs (probably the Application one). Another source of info is the cconsole.log file in the mgr subfolder of wherever you installed HealthShare.

Your problem doesn't seem likely to be specifically related to Cache Studio.

John Murray · Apr 15, 2019 go to post

We just published 3.0.2. If you already installed 3.0.0 your VSCode extension should upgrade automatically next time VSCode checks for extension updates. Or you can trigger that from the "..." menu on the Extensions viewlet. For best effect you should also upgrade the server-side part wherever you've previously been connecting from 3.0.0.

Changes in 3.0.2:

  • Upgrade embedded Deltanji to version 7.0.
  • Support networked Deltanji Enterprise edition environments.
  • Automatically add embedded Deltanji aliases for new usernames.
  • Report permission problems at connection time.
  • Support prompting for username at connect time.
  • Remove 'Preview' flag from Marketplace entry.
  • Improve documentation.

Serenji is also listed on Open Exchange.

John Murray · Apr 12, 2019 go to post

We have no current plans for implementing Serenji for VS. The architecture of VS is significantly different from that of VSCode.

John Murray · Apr 9, 2019 go to post

I notice that your mappings get code from ENSLIB

My use-case is a bit different.

Can you create a new database and namespace pair called XYZ and then define a %ALL mapping so that the globals ^XYZ and the routines XYZ* and the package XYZ get fetched from your XYZ namespace from all other namespaces, e.g. USER ?

I'd expect mappings to ENSLIB to work, otherwise the "Ensemble" features of IRIS would be broken in Community Edition.

It seems to me that those are allowed but mappings we define to our own databases get ignored.

John Murray · Apr 9, 2019 go to post

I was able to create the mappings, but they don't seem to work for me. Not even after an IRIS restart.

I'm using the %ALL pseudo-namespace.

John Murray · Apr 3, 2019 go to post

Expanding on what Evgeny wrote, the new Serenji extension from us at George James Software gives you an experience that's most similar to what you're used to with InterSystems Studio. It connects you directly to the namespaces of your servers, even if they're running versions that are too old to support the Atelier REST APIs which other VSCode extensions depend on.

Plus, Serenji offers debugging.

John Murray · Mar 27, 2019 go to post

To clarify Robert's answer, on InterSystems IRIS the database is called IRISLIB, and on Caché, Ensemble etc it is called CACHELIB.

But rather than having to reload your own non-%Z/%z routines after every upgrade you could create a dedicated database for those routines and then use %ALL-type mapping to make the routines available in all of your namespaces.

More info:

John Murray · Mar 25, 2019 go to post

@oliver russell I think you are confusing the name of an InterSystems product (Caché) with the term 'cache'. Easy mistake to make, ever since InterSystems released Caché a couple of decades ago.

John Murray · Feb 22, 2019 go to post

In a Terminal you can issue a ZNSPACE command or run DO ^%CD and swap to a database (technically, an implied namespace). See the ZNSPACE doc here.

Or if you want to do your exporting from the System Explorer section of Portal, use the dropdown on the left-hand panel to change from a "Namespaces" perspective to a "Databases" one.

John Murray · Feb 22, 2019 go to post

It's normal that you don't have INT code for library classes such as %Stream.FileBinary. When InterSystems builds the CACHELIB database that contains these classes they don't set the "k" compile-flag.

John Murray · Feb 21, 2019 go to post

Take a look at methods in the %SYSTEM.Encryption class.

Like many of the classes in the %SYSTEM package, you can easily access its methods via $SYSTEM, e.g.

USER>d $system.Encryption.Help()
'Do $system.Encryption.Help(method)' will display a full description of an individual method.
 
Methods of the class: %SYSTEM.Encryption
 
AESCBCDecrypt(ciphertext,key,IV)
     This method performs AES decryption in Cipher Block Chained (CBC) mode.

...
John Murray · Feb 12, 2019 go to post

Right. And this is the reason why the tool with XYZ.Classes should be installed in XYZ namespace - in this way even if I map XYZ to %All all the data persistent data for XYZ.Classes will be stored in XYZ namespace, even if I use it from USER namespace, right?

This is only true if you explicitly add a global mapping of ^XYZ.* to the XYZ database (NB, mappings point to databases, not to namespaces). If you only mapped the XYZ package to XYZ, when an instance of persistent class of that package is saved from within the USER namespaces its data will get stored in the USER database.

John Murray · Feb 12, 2019 go to post

Why do you think we need a prefix for globals? The matter to have a dedicated namespace/database for the tool frees us from this requirement, right?

If tool XYZ is installed in namespace+database XYZ and consists of classes in the XYZ package that's %ALL-mapped from XYZ, default storage for persistent classes in that package will use globals ^XYZ.* which will get stored in the default data database of whichever namespace the tool is used in (e.g. USER). These globals mustn't clash with globals created in the same place by a tool from a different supplier, or by the end-user's own apps.

If tool XYZ opts to consolidate user's data into the XYZ database, the natural way of doing this is with package mapping, in which case it's still necessary to avoid name collisions. There are ways the XYZ tool could use extended global references to route data into its private database, but this adds complexity.