Question John Murray · Aug 25, 2016

I just got a digest email alerting me to a change in the article https://community.intersystems.com/post/studio-tip-running-cos-commands…

 and when I use the list-style view of the dashboard it appears at the top with a recent "updated" timestamp:

But when I open the article the date info on the article and on all of the comments all points to changes 5 or 6 months ago.

I wonder if someone voted up the article earlier today and perhaps that triggered the update notification. If so, I think that's a bug. I don't want to know every time someone votes up (or down) an article.

3
0 341
Question John Murray · Jul 28, 2016

Studio's "Package Information" dialog, accessed from the context menu of a package on the Namespace tab of the Workspace pane, includes a field titled "Routine Prefix"

Help says this is a "String that is used as a prefix for the routines generated from classes in this package".

But if it set a string here, then recompile a class in the package, it doesn't affect the name of the generated routine(s). Nor does it influence the routine names generated when I create new classes in the package and compile them. I have tested on 2016.1.

2
0 456
Announcement John Murray · Jul 22, 2016

We at George James Software are pleased to announce the release of version 2.6 of Serenji, our editor and debugger for Caché, Ensemble and HealthShare.
The main enhancement in 2.6 is the ability to run on a Linux <edit> or OS X </edit> workstation using Wine 1.8. More release details are here.
This is a free upgrade to users already holding an activation key. For new users a free 30 day evaluation period is granted upon installation.
John Murray
Senior Product Engineer
George James Software

3
0 746
Question John Murray · Apr 6, 2016

Here is a screenshot from my 2016.2 FT instance of Studio and Ensemble:

I don't recall having seen the highlighted "+" suffix on document names previously. Who can tell me what it denotes?

I originally posted this in the Field Tests group but it turned out to be a 2016.1 feature that I hadn't previously noticed. So I subsequently moved the post to the Cache group.

11
0 944
Article John Murray · Mar 18, 2016 1m read

Here's the scenario. I write a post, click the Publish button to post it,  but overlook the fact that because I didn't add a tag I'm still on the same page. The pink area highlighting what I forgot to fill in is out of sight at the bottom of the page. I carelessly navigate away (e.g. back button, or DC app tabs). There's no warning, and I've lost what I wrote.

2
0 173
Article John Murray · Mar 18, 2016 1m read

Here's something I find a bit awkward. Suppose I'm reading the posts in a group, e.g from https://community.intersystems.com/group/developer-community-feedback

I see an interesting post, so I click into it.

I add a comment to the post.

Now I want to go back to the list of posts in the group, i.e. to https://community.intersystems.com/group/developer-community-feedback but I don't see a link that takes me there. I have to resort to several clicks on the browser back button.

Perhaps it'd help if somewhere on a post's header you gave us the name of the group owning the post.

3
0 158
Article John Murray · Mar 17, 2016 2m read

Here are a few tips that might be useful to people who are running applications in an environment that's configured to use InterSystems mirroring.

  • If you configure an ECP connection to a Caché instance that is a mirror member databases then the ECP connection should also have mirroring enabled (tick the mirroring box when defining the connection). More details here. You may also need to increase the number of ECP connections each end accepts, to cater for the way both members of a mirror pair get involved in ECP negotiation.
0
0 620
Question John Murray · Mar 16, 2016

After the March 15th DC update I posted one Question (as opposed to Article). I've been used to getting notified by email no more than an hour after someone responds to a post of mine. In the case of my question, I think I only got that email when someone posted a Comment on the question. When I went to read that comment I saw that there were several Answers that had been posted many hours earlier.

It's possible I overlooked earlier notification emails, so part of the purpose of this question is to act as a test. Please don't add a comment to the question. Instead, add an Answer.

2
0 285
Article John Murray · Mar 16, 2016 2m read

Prompted by the words Rick didn't actually say to his pianist in Casablanca, I want to draw attention to the the "Resend" button at the top of the Ensemble Message Viewer.

It's pretty easy to use. Find the message or messages you want to resend, set the associated selection checkbox(es), then click the button.

The Message Viewer page is replaced by the Resend Messages page where you can review the message(s) you selected, then proceed.

3
0 1009
Article John Murray · Mar 15, 2016 1m read

Among the outputs of our Yuzinji tool are two code metrics that it can be interesting to track over time as a development project proceeds. These are Size and XS. The first is fairly straightforward. As you write more code the size of your codebase increases. The XS metric (pronounced "excess") aims to quantify excessive structural complexity. XS is explained in some detail in this 2006 whitepaper from Headway Software, whose Structure101 toolset Yuzinji leverages.

By analyzing a codebase using Yuzinji at key milestones we can investigate how these metrics change.

3
0 442
Question John Murray · Mar 15, 2016

One aspect of source code management is how to deal with the almost inevitable need to upgrade your Caché or Ensemble platform to a newer InterSystems release.

It's long been my experience that InterSystems does a very good job of maintaining backward compatibility. Code that works correctly on, say, 2012.1 is very likely to work correctly on, say, 2015.2 without any modification.

I'd guess that few sites are in a position to take a "big bang" approach and upgrade all of their instances (e.g. dev, test, live, DR) at the same time.

10
0 685
Article John Murray · Mar 14, 2016 3m read

When you create an Ensemble production your namespace acquires a new class definition. For example here is what the class that defines the Demo.Loan.BankUSProduction production in the ENSDEMO namespace looks like when opened in Studio:

Class Demo.Loan.BankUSProduction Extends Ens.Production [ ClassType = "", ProcedureBlock ]
{

XData ProductionDefinition
{
<Production Name="Demo.Loan.BankUSProduction" TestingEnabled="true">
  <ActorPoolSize>2</ActorPoolSize>
  <Item Name="Demo.Loan.BankUSTerminalService" ClassName="Demo.Loan.
3
0 816
Article John Murray · Mar 11, 2016 1m read

If I have defined a class query in one of my classes and I want to use that query from a method of another class, what are the pros and cons of using the %SQL.Statement interface versus the %Library.ResultSet interface?

I believe %SQL.Statement is the newer interface.

So if the old way is:

USER>s rs=##class(%Library.ResultSet).%New("%Library.File:FileSet")
 
USER>s sc=rs.Execute("c:\s\","*.txt")
 
USER>w sc
1
USER>while rs.%Next() {w !,rs.Data("Name")}

...

then the new way is:

USER>s oStmt=##class(%SQL.Statement).%New()
 
USER>s sc=oStmt.
12
0 1857
Article John Murray · Mar 11, 2016 1m read

In this posting I want to raise the profile of a feature that arrived in 2009.1 but is perhaps not very well known.

It is sometimes useful to make certain packages, globals or routines available to all of your namespaces. Of course you can add the necessary mappings whenever you create a new namespace, but here's a simpler way.

First you need a special namespace definition called %ALL Create it in the same way you'd create any namespace. It doesn't matter which database you set as its default for code and data.

6
0 1632
Question John Murray · Mar 9, 2016

If your Ensemble environment is actually a HealthShare one, here's a snippet of information that I wasn't able to find in the documentation.

When a namespace is HealthShare-enabled it gets some mappings added to it in order to fetch stuff from the HSLIB database. The most obvious mapping is a package mapping that gives your namespace all the HS.* classes.

Far less obvious is that your namespace will also be fetching/filing Test.* classes from the HSLIB database. So if you thought that, say, Test.

4
0 489