Article Robert Cemper · May 11, 2023 1m read

During my repeated testing with Docker Desktop, I'm often short on disk space
nd need to clean it over and over as described earlier.
The main reason is the rather uncontrolled growth of ext4.vhdx
that is located on my C: drive by default.
So I decided to move this file to a large external disk.

There are several ways to do this and a detailed guide:
https://devops.tutorials24x7.com/blog/how-to-change-docker-data-path-on-windows-10

I decided to choose option C) using symlinks.
I did it only partially, especially for my wild-growing virtual data disk.

1
0 777
Article Robert Cemper · May 9, 2023 2m read

Creating your own commands or shortcut is one of the strongest features of ObjectScript
If you create your own Language Extensions to ObjectScript you mostly have to find the
proper %ZLANGC00 or %ZLANGV00 or %ZLANGF00 and add the extensions manually.

A few utilities do it already automatically (ZPM, ZME, ..)
This utility allows you to add your extensions also programmatically.

  • eg. at first run, or during installation I found this quite useful for my Docker-based demos as it all happens at start time.

This package includes a demo example to visualize the operation of this

0
0 556
Article Robert Cemper · May 8, 2023 2m read

If one of your packages on OEX receives a review you get notified by OEX only of YOUR own package.   
The rating reflects the experience of the reviewer with the status found at the time of review.   
It is kind of a snapshot and might have changed meanwhile.   
Reviews by other members of the community are marked by * in the last column.

I also placed a bunch of Pull Requests on GitHub when I found a problem I could fix.    
Some were accepted and merged, and some were just ignored.     
So if you did a major change and expect a changed review just let me know.
<--break->

0
1 1117
Article Robert Cemper · Apr 28, 2023 4m read

I decided to write this down before time wiped out my memory
It's a very personal story as a partner, as a competitor, as an employee,
as a customer and finally as an external observer of InterSystems.

7
2 1361
Article Robert Cemper · Apr 19, 2023 2m read

If one of your packages on OEX receives a review you get notified by OEX only of YOUR own package.   
The rating reflects the experience of the reviewer with the status found at the time of review.   
It is kind of a snapshot and might have changed meanwhile.   
Reviews by other members of the community are marked by * in the last column.

I also placed a bunch of Pull Requests on GitHub when I found a problem I could fix.    
Some were accepted and merged, and some were just ignored.     
So if you did a major change and expect a changed review just let me know.
<--break->

0
0 199
Question Robert Cemper · Mar 17, 2023

There is an example on JSON XDATA.
But it only describes Name mapping.

Is it possible to define somehow also a structural mapping
e..g an Array of Arrays Structure: without property names

[
     [12,33], [88,44]

1
0 591
Question Robert Cemper · Mar 17, 2023

During my last migration to IRIS I met this Compatibility parameter

  • NullSubscripts    true
0 - Throw error when referencing a null subscript.
1 - Null subscript references do not throw an error.

The consequences are shocking. This was allowed:

USER>zw ^rcc
^rcc=0
^rcc("")="***"
^rcc("",1)="*,1"
^rcc(1,"")="1,*"
^rcc(1,2)="1,2"
^rcc(1,2,"")="1,2,*"

But SMP had no idea what is going on. 

And after switching off that flag this was still partialy visible, but read-only

USER>zw ^rcc
^rcc=0
^rcc(1,"")="1,*"
^rcc(1,2)="1,2"
^rcc(1,2,"")="1,2,*"

I just don't understand.

5
0 444
Question Robert Cemper · Mar 14, 2023

To prepare a migration to IRIS I use Docker images.
The (aged) application is built around Caché Terminal
And on Windows,  IRIS uses the same ctelnetd.exe as Caché.

In my Docker installation, Telnet Settings are just grayed out in SMP.
and my Terminal can't 'connect.
Port mapping is OK and verified with TCP

Working from the console in Docker  with the whole set of ESC and
screen formatting is not acceptable.
We tried WebTerminal but there is just no Partition behind as in Terminal.

How can I switch on Telnet support in the Docker image?
 

4
0 363
Question Robert Cemper · Mar 13, 2023

To most of us it's almost dogmatic that $H can't be negative!

This is correct concerning the COS Special Variable $HOROLOG.
No doubt. It's the presentation of the actual date & time.
http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY…

For dates before 1841 it's suggested to use Julian date before 1841.
Good for calculations.
But what about values in $H_format ?
Conversion functions $ZD(), $ZDT(), $ZDH(), $ZDTH() and  
for SQL  $system.SQL.TOCHAR() and $system.SQL.TODATE()
take  care of the conversion to human readable date. You know this.

4
1 934
Article Robert Cemper · Mar 3, 2023 2m read

If one of your packages on OEX receives a review you get notified by OEX only own YOUR package.   
The rating reflects the experience of the reviewer with the status found at the time of review.   
It is kind of a snapshot and might have changed meanwhile.   
Reviews by other members of the community are marked by * in the last column.

I also placed a bunch of Pull Requests on Github when I found a problem I could fix.    
Some were accepted and merged, and some were just ignored.     
So if you did a major change and expect a changed review just let me know.

0
0 164
Article Robert Cemper · Mar 2, 2023 4m read

This tutorial is a follow on to Working with %Query    
It was displaying the content of the input stream chopped in fixed-size chunks.
But often those streams are structured and have well-defined separators (e.g HL7)
So as a side subject of this tutorial, this chapter shows how to break a stream into PIECES.

It is exactly the same idea as the $PIECE() function for strings with some add-ons.

1
1 569
Article Robert Cemper · Mar 2, 2023 5m read

My previous article introduced you to SQL based Basic Class Query
where a clever wizard created all the required code for you and your essential
contribution was an SQL statement. 

Now we enter the real Custom Class Query that provides more freedom but
requires a deeper understanding of the mechanic behind the scene.
The full code example is again on GitHub

1
0 435
Article Robert Cemper · Mar 2, 2023 5m read

    

The title of the contest subject is not quite precise but addresses the %Library.classes involved.
What is meant is officially named Class Query and is dating back to the early days of Caché.
CLASS is used because it is embedded in a COS class.
Though there is a precise description in the official documentation it remains rather abstract.
My tutorial should guide you step-by-step through a simple example in COS to make it tangible to you

4
1 716
Article Robert Cemper · Feb 28, 2023 2m read

Hi developers!

You are experts in IRIS and know all tricks. The functionality of $ZF(-1,-2,-100, ......)
is nothing new to you And you know the limits of this functionality.
Both give you access to your local server command line environment. And that's it.

1
0 389
Article Robert Cemper · Feb 6, 2023 2m read

If one of your packages on OEX receives a review you get notified by OEX only own YOUR package.   
The rating reflects the experience of the reviewer with the status found at the time of review.   
It is kind of a snapshot and might have changed meanwhile.   
Reviews by other members of the community are marked by * in the last column.

I also placed a bunch of Pull Requests on Github when I found a problem I could fix.    
Some were accepted and merged, and some were just ignored.     
So if you did a major change and expect a changed review just let me know.

2
0 228
Article Robert Cemper · Jan 30, 2023 2m read

The similarity between JSON objects + arrays and Globals in IRIS or Caché is evident.
With small and medium size JSON objects navigation across %Dynamic Objects is comfortable.
But with large and/or deep cascaded objects it becomes a challenge.

The presented tool offers 3 variants

  • loading an already existing %Dyamic object or Array into a global of your choice
  • loading a %Stream containing a JSON object into a global of your choice
  • loading an external File containing a JSON object into a global of your choice
1
2 355
Article Robert Cemper · Jan 23, 2023 2m read

Some technical background information

There is not just one class in this package:  rcc.gstream.cls but also rcc.gstreamT.cls

While rcc.gstream works with direct access to the stream globals, the *T version uses
a Process Private Global (PPG) as Temporary storage.
using  SELECT * FROM RCC.gstreamT WHERE RCC.useT('^jpgS')=1 and similar.

This might be an advantage for multiple access to the same stream in sequence,
The advantage is obvious: You have a personal snapshot in memory and no risk of
a conflict in access. This might be interesting if you work just on 1 specific stream.

0
0 350