Robert Cemper · Mar 17, 2023 go to post

by using {}  your Jsonobj is already a  %Library.DynamicObject
USER> ZWRITE Jsonobj
Jsonobj=<OBJECT REFERENCE>[1@%Library.DynamicObject]
no need for 
Set Dynjsonobj=##class(%Library.DynamicObject).%FromJSON(Jsonobj)

Robert Cemper · Mar 16, 2023 go to post

You are correct it is working inside docker in the container.
But I asked for the external real IP of my (Windows) Host.
I know that is wrong for my purpose,  as I sit just in front of it
and use it some 100 times daily. So I really know it.

It's an odd situation: IRIS -> Ubuntu in container -> Docker -> WSL -> Windows.
I didn't add NAT and Port mapping used by Windows. 

Robert Cemper · Mar 16, 2023 go to post

I did the test, but it failed.
 

C:\GitHub\_my\SSH-for-IRIS-container>docker-compose exec iris iris session iris

Node: f386a88482f2, Instance: IRIS
USER>Set ip = $SYSTEM.INetInfo.HostNameToAddr("host.docker.internal")
USER>zw ip
ip="192.168.65.2"

The correct IP = 192.168.0.9
it's also not the IP-Address of WSL-2 shell  172.21.225.243
It's not even in the DHCP range of my router, nor in the WLAN range
Sorry
BUT: this is an excellent use case for my recent Proposal

Robert Cemper · Mar 15, 2023 go to post

Hi @Iryna Mykhailova and welcome to the Tutorials Contest.
I was waiting for you.
I feel honored that you took the same subject as me %QUERY (officially  Class Query)
In addition, I appreciate that you confirmed by your screenshots, my statement that
the Studio wizard is the most comfortable way to start with the subject. 

The idea to simulate a virtual table is a very nice idea. 
But there is a point in your example that I don't understand:

  • ClassMethod GetAllOlderThanExecute(ByRef qHandle As %Binary, Age As %Integer = 65)  
  • But in ClassMethod GetAllOlderThanFetch(.....)  you don't have it anymore
    and don't use it and display ALL generated records independent of Age

Did I miss something? 

Robert Cemper · Mar 15, 2023 go to post

I found an acceptable workaround.

  • installed telnetd into the container and started it
  • mapped some external port to port 23
  • set this external port  in my cube
  • started the IRIS Terminal
  • BINGO !

You may raise all concerns on Security and Container Isolation.  Accepted! And ignored!
Since THIS solves my issues on optical verification of the user interface.

Robert Cemper · Mar 14, 2023 go to post

That works somehow.
But this is the wrong direction.
I need to access my IRIS instance over TELNET .
AND THIS IS THE REASON

sometimes it is an advantage to read to the end of the line !!indecision
it is just not implemented outside Windows.  sad  

Robert Cemper · Mar 14, 2023 go to post

Check your version of module.xml against the official module.xml of OEX on GitHub:
that one just has 1 <Document....>.......</Document>
The error message indicates you just lost the slash </ of the closing tag.

Robert Cemper · Mar 13, 2023 go to post

I just hope- for the sake of fairness - 
that the one that did the practical work

  • implementation,
  • testing,
  • describing,
  • publishing

gets some points as well ???

Robert Cemper · Mar 8, 2023 go to post

short add on
ASCETIC - there is no minor trace of any comfort around
SPOOKY - it's been around since ever but is rather unknown and invisible in Docs

Robert Cemper · Mar 6, 2023 go to post

I was asked why I didn't use VScode for the examples
Simple reason:  Studio Wizards  are not available in VSCode 
See here

Robert Cemper · Mar 6, 2023 go to post

$system.Util.InstallDirectory()
classmethod InstallDirectory() as %String

Returns the location of the installation directory, i.e. that which is displayed by ccontrol on Unix and VMS, where the .cpf configuration file is kept.

Robert Cemper · Mar 3, 2023 go to post

If you are not afraid of using basic COS functionality:
your reload method raises a LOCK ^myRELOAD  
and drops it with completion LOCK -^myRELOAD

Your check utility does the same but with a timeout LOCK ^myRELOAD:0
if it fails - signaled by $TEST=0  you loop and hang around and retry
for success $TEST=1 you go on but release your successful LOCK immediately
not to block anyone else.
 

Robert Cemper · Mar 1, 2023 go to post

According to your JSON model, I would assume this to start:
(sory had no chance to test myself)

Class Test.GEOMETRIEPOINT Extends (%SerialObject, %JSON.Adaptor, %XML.Adaptor) 
{

Property "GEO_TAB_COORDONNES"As list Of %Float;
}

Class Test.GEOMETRIELINE Extends (%SerialObject, %JSON.Adaptor, %XML.Adaptor)
{

Property"GEOMETRIE_LINE"As list Of GEOMETRIEPOINT;
}

Class Test.POLYGON Extends (%Persistent,%JSON.Adaptor, %XML.Adaptor)
{

Property"GEOMETRIE_POLYGON"As list Of GEOMETRIELINE;
{
Robert Cemper · Feb 24, 2023 go to post

You have to blame the designers of the language back in the 60ties of last century.
it was even an ANSI Standart then.
And it is backward compatible and the code of the 60ties still can run unchanged!

Robert Cemper · Feb 21, 2023 go to post

it's an interesting line:

patient0 = Patient.parse_obj(patients_resources.search(family='familyname',given='givenname1').first().serialize())

I miss some checks if the search was successful.
Because NONE indicates a missing content.
If search(family='familyname',given='givenname1')
fails you receive NONE and this can't be serialized.  
COS would just return NullString """
 

Robert Cemper · Feb 20, 2023 go to post
  • if you have access to the CSP or ZEN page you may just check the user name in
    method OnPreHTTP or similar, and redirect him to the moon.
  • if can't touch the page then rename it and create a filter page that does a server-side
    redirect for everyone except the banned user.

    .

Robert Cemper · Feb 20, 2023 go to post

Fully agree:
Package was used for the chapter of OEX from day zero!.
Instead of semantic discussions, it would be much more important to take care of 
quality and completeness and easy-to-evaluate examples for the community.
Every member of the community is a customer. To my understanding this is major
point of being different do other code exchange and discussion platforms.
I have checked almost all packages (except the commercials) and most contributors 
seem to share this understanding. Though I have to admit that there are also less
service-minded contributors that just don care about issues and PRs.
A community of white sheep only is an illusion.
I've seen too much to have such dreams 

Robert Cemper · Feb 20, 2023 go to post

You are correct module.xml indicates IPM/ZPM usage and that's OK.
But "Packages" is much wider since it also includes those parts that do not contain installable code or data to load but (if well prepared) a bunch of additional information like (hopefully) user guides, installation guides, description of the purpose of the packages, as well as screenshots, examples, ..... 
All this is not part of the IPM module. for good reasons.
I would feel "module" as a downgrade of the excellent work the contributors provided to the community.