John Murray · Jul 22, 2024 go to post

I came up with a better technique for using Yuzinji and Structure101g Studio to reveal which deprecated classes an app's codebase uses. Here's a screenshot showing the results for the Web Terminal 4.9.6 package on IRIS 2024.1

I adapted the tagging technique to identify the use of deprecated methods in non-deprecated classes. In the case of the Web Terminal codebase, no such usage was found.

If anyone reading this is interested in trying this on your own codebase please contact me through DC's DM facility, or email info@georgejames.com

John Murray · Jul 21, 2024 go to post

You are trying to create your test entities in InterSystems library packages that are mapped to/from a readonly database. 

John Murray · Jul 19, 2024 go to post

Here's one way to verify from VS Code (but independent of the InterSystems ObjectScript extension) that the /api/atelier REST APIs are available on that server.

  1. Start a new VS Code window (no workspace open)
  2. In Extensions view, use the filter @id:humao.rest-client to find and install the REST Client extension.
  3. From the File menu create a New Text Document, setting its language to http.
  4. Paste this content:
GET http://localhost/api/atelier/v1/%25SYS HTTP/1.1
Authorization: Basic _system:SYS

Now click on the "Send Request" codelens that appears above the first line.

John Murray · Jul 19, 2024 go to post

I think it's possible to do this using our Yuzinji tool. Here's my idea:

  1. Go to https://structure101.com/downloads/, fill in your details, and download Structure101g Studio (S101g) for your desktop platform (one of the 3 icons circled red below):
  2. Read the instructions in https://structure101.com/help/generic/flavors/yuzinji/index.pdf to install Yuzinji into S101g, then to add Yuzinji's server-side component to your InterSystems server.
  3. Analyze all your classes and load the results into Structure101g Studio.

But how to identify which deprecated methods or classes are being referenced?

S101g has facility for tagging items on its diagrams. Its "Tag" menu can also export and import a list of tags.

  1. Tag an arbitrary class and an arbitrary method.
  2. Export your tags.
  3. Examine the file.
  4. Write a SQL query to list deprecated classes:

    select ID from %Dictionary.ClassDefinition where deprecated=1 order by ID
     

  5. Format the output to match the structure of the exported tags file, and write this to a file. I'm leaving this as an exercise for the reader.
  6. Import the file into S101g
  7. Repeat previous steps to create a tags file for deprecated methods.
  8. Explore your diagrams to pinpoint the tagged (and therefore deprecated) items.
John Murray · Jul 19, 2024 go to post

Maybe the trace facility on the Web Gateway Management page will yield clues. 

John Murray · Jul 17, 2024 go to post

TIP: if you are in a hurry, use the YouTube option to play this at 2x speed and you'll get through it in half the time.

John Murray · Jul 17, 2024 go to post

It is often the case with large applications that developers would like to or need to work on unrelated parts of an application simultaneously. It is a limitation of the Git for Shared Development Environments application from the InterSystems Open Exchange that you cannot do this in a single namespace. That's because it is built on git, where you can only have a single branch checked out to a working folder at any one time.

Our InterSystems-native source control and integrated deployment solution Deltanji allows developers to create multiple separate branches within the same namespace.  Because Deltanji has finer granularity it can handle concurrent non-overlapping sets of changes in a single namespace, enabling users to check code entities out onto separate Change Requests, then promote these independently.

Even with a team as small as one person it is common for Deltanji-controlled development to take place this way. Use of QA and/or Staging environments ensures that unforeseen dependencies created in the Development environment between supposedly independent Change Requests will be detected before they can impact the Production environment.
 

John Murray · Jun 24, 2024 go to post

That's one possible feature. Others could be "native in VS Code" features to achieve what the second paragraph of the About IPM wiki page enumerates:

Use IPM to search, install, upgrade, remove and publish modules.

John Murray · May 21, 2024 go to post

Your code is writing its message to the principal device of the process spawned to handle your Studio session. That is the TCP/IP device which Studio is reading from, so it gets confused by the unexpected message. 

John Murray · May 8, 2024 go to post

These Code Actions are contributed by the InterSystems Language Server extension. To request improvements please open issues at https://github.com/intersystems/language-server/issues

The presence of the VS Code lightbulb is controllable with the editor.lightbulb.enabled setting, which can be set per-language if you wish.

For example, in Settings Editor use this filter to alter the setting at user-level or workspace-level only for ObjectScript classes.

@lang:objectscript-class editor.lightbulb.enabled

John Murray · May 8, 2024 go to post

The Deltanji extension is fully compatible with the InterSystems ObjectScript extension. It is only the Serenji one whose debugging component clashes. 

John Murray · May 1, 2024 go to post

Are the 3 servers where debugging is working running exactly the same $ZVERSION as the 2 where you're getting this error?

John Murray · Apr 29, 2024 go to post

Please explain how Deltanji (source control from George James Software) is involved. Perhaps you mean the Serenji extension, also from George James Software. Previous answers on this thread, including mine, have assumed you're using the InterSystems ObjectScript extension, not Serenji.

John Murray · Apr 26, 2024 go to post

Yes you can, but your function isn't being found, perhaps because of whitespace in front of its labet. 

John Murray · Apr 25, 2024 go to post

I want the code in my client with no storage,  because it is useless when share with others or pack in a package.

Why 'useless'?

John Murray · Apr 25, 2024 go to post

My guess is that you put a space at the beginning of the line shown above as:

ConvertToMTime(h,m,s)

Pasting a screenshot here might help. 

John Murray · Apr 25, 2024 go to post

Are you using the client-side editing paradigm, where the files on your VS Code workstation are managed with, say, Git, and imported to an IRIS server for execution? Or are you using the server-side editing paradigm, which is equivalent to the IRIS Studio way of working?

Also, please explain why you don't want the storage information in the class file.

John Murray · Apr 24, 2024 go to post

when I want to do something that I know that a predefined function already does, how can I get inspiration from its code

When the product isn't Open Source, you probably can't.