Thanks for sharing Steve. I think these real use cases of security configuration are really useful.
- Log in to post comments
Thanks for sharing Steve. I think these real use cases of security configuration are really useful.
2 decades went by Robert??? 😰 Time flies... CSP was great at that time... it was a breath of fresh air for our installed base and competed very well with other technologies in those years... But current front-end technologies make magic nowadays... they're powerful and change a lot and fast. Which is good... and bad... Angular versions change in a blinking... in 7 years, 11 major versions.....difficult to follow them up. I realize the beauty and simplicity of our proposals...with CSP, ZEN,... when you start to learn other front-end frameworks... but the communities behind them let them improve and grow up day-to-day... no way that a single company can compete against that.
Very interesting Robert. I'll take note of this.
Bumping into this question... almost a year late :-)... that query had a sintax error... you should put a comma before constraint.
In any case, Robert answer is also OK... unless you don't want ID to be autoincremental but to decide which value should go in it for each row.
Thanks Robert and Julius... just wonder if not being documented means that it's not a supported or recommended feature.
Is it documented anywhere? I can't find it in on-line doc.
I wondered if anyone has been asked about this feature/requirement lately...
Hi Mathew,
that method doesn't return any info neither in case of error nor success... as you said, it always return "".
The option that Anderson mentions is a valid one to double-check that everything went well.
I'm running also with last Windows 10 version and WSL2... it goes really well till now. I found that WSL fights for resources with Windows and although it releases RAM and processors when they're not used in a while, it's not as agile as I would like... so, the only tweak I had to do was to limit the resources that the WSL2 could take... to do that it's just required to add a new file in your user profile folder: c:\Users\<youruser>, call it .wslconfig and add something like:
[wsl2]
memory=6GB # Limits VM memory in WSL 2 to 6 GB
processors=2 # Makes the WSL 2 VM use two virtual processors
Terminate WSL2 and launch it again and that's all... from then on, your WSL2 won't take more resources than specified... if, for some tests for example, you need more, you can change the file and increment the resources.... this is something that likely will be addressed in a more unmanaged way in the future... at least is what Microsoft WSL teams is saying in the forums.
BTW, you can find WSL2 well under c:\Users\<youruser>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu..... in the case of my Ubuntu distribution... but you can change where is stored: https://github.com/MicrosoftDocs/WSL/issues/412
Aggggghhh... OK... come back to previous structure. At least... I can confirm that it was a good idea...but I was not the first one ![]()
Oh my... I didn't see the Wiki... ![]()
Thanks!
ZPM forces to use categories in the folder structure... perhaps, to make it easier, VS Code ObjectScript extension should be configured with that option by default... just an idea.
Also, is it there any place with full doc about module.xml? Articles are full of really useful info but having to navigate through all of them is a bit confusing.
Hallo Robert!
Glad to hear it helped you! Now it's time to test with native support to Linux that comes with last version of Windows... let's see how it goes with WSL2!
Best regards.
How could I access? I've registered three times at least... and I don't get any link to the webinar... just to the Register Page.
Yes... those were really very sad news. Damn virus! 😢. Conway was one of the greatest mathematicians. RIP.
Yep... my solution is more flexible....no need to recompile anything to change the JSON projections (for export and import)... also it works in Caché/Ensemble... but sure it's less performant than %JSON.Adapter... less format features also... clearly I would recommend %JSON.Adapter for serious productions in IRIS.... but I had fun implementing this :-)
You need a Windows 10 machine...
... if you want me to gather any other info for you just let me know.
Just in case it gives you any cloud... when I enable the connection it seems that it tries to connect through the terminal or something... because I got an error also:
This is when I just Toggle Disable and then Enable (see the error message in the botton right):

It says: The terminal process command 'docker-compose exec iris /bin/bash -c 'command -v ccontrol >/dev/null 2>&1 && ccontrol session $ISC_PACKAGE_INSTANCENAME -U IRISAPP || iris session $ISC_PACKAGE_INSTANCENAME -U IRISAPP'' failed to launch (exit code: {2})
That's what seemed strange to me... I already did it withing VSCode Terminal directly and it works as if I do it in Powershell ... it fails when it goes through the "Open Terminal in Docker" option...
It works with Windows Powershell and with Powershell core (within VSCode Terminal and in PS Console):
![]() |
![]() |
Hi Dmitriy,
I'm testing it in Windows 10 Pro... everything works except the terminal... when I try to open it in VSCode

I got the following error:
The terminal process command 'The terminal process command 'docker-compose exec iris /bin/bash -c 'command -v ccontrol >/dev/null 2>&1 && ccontrol session $ISC_PACKAGE_INSTANCENAME -U IRISAPP || iris session $ISC_PACKAGE_INSTANCENAME -U IRISAPP'' failed to launch (exit code: {2})' failed to launch (exit code: {2})
I've tested directly the command within the Powershell console executing:
docker-compose exec iris /bin/bash -c 'command -v ccontrol >/dev/null 2>&1 && ccontrol session $ISC_PACKAGE_INSTANCENAME -U IRISAPP || iris session $ISC_PACKAGE_INSTANCENAME -U IRISAPP'
and it works... but not through the Open terminal in Docker which is what is more user-friendly...
A very simple approach just in case... but if ind is numeric you can try to get the first and last ones with:
set first = $order(^CacheTemp(repid,"MAIN","" ))
set last = $order(^CacheTemp(repid,"MAIN","", - 1))
and then do the math to know how many entries (at most) there can be.
We have several partners working on industrial sector that have mentioned that having support for OPC UA in IRIS would be great as it's becoming a de-facto stantard in their sector... I didn't dig much into technical details so far, but, based on your knowledge, would it be worthy to have it natively supported in IRIS or is using Java Business Hosts+external Java Library the better approach in this case?
OK. We're improving a bit.
I've changed Cache Terminal to CP850 which is the code page that Windows Powershell uses by default:
.png)
Now, any idea how could I make up-down keys work so to see the commands' history? Also, as Robert C. also mentioned… it seems that Ctrl-C quits not only from the command/function in execution but from Caché Terminal itself...
Almost worked... I got the right symbol in login, but, once within the terminal special characters are not recognized.
Up and Down keys are still not recognized.
.png)
Hi @Travis Thurber , I know this is an old issue... but I'm curious about which was your strategy in the end. Could you share?
Thanks Robert... Happy Xmas
Thanks Eduard. You are right. Test() method assumed that the ID refers to an object (world) already defined… but I like more your suggestion. I've uploaded a new release to GitHub. Now, if you execute the Test() and the World doesn't exist, it creates one for you... also we can choose the char to represent alive or dead blocks and get the iteration we're seeing...
Thanks for posting this. There are not many (if any) of these kind of tools focused in ObjectScript.
Hi Bob,
in Windows, for the key/password it works if you just define a volume where the files are. Then the call would be simpler/smaller:
docker run --name iris3 --detach --publish 52773:52773 \
--volume C:\pmartinez\iris_external:/external \
--volume durable_data:/durable --env ISC_DATA_DIRECTORY=/durable/irissys \
--env ICM_SENTINEL_DIR=/durable iris3:test --key /external/iris.key \
--before "/usr/irissys/dev/Cloud/ICM/changePassword.sh /external/password.txt"
I understand that using a named volume will store the durable %SYS within the Linux VM itself which would avoid issues with Windows FS regarding database files updating, permissions,... but, is there any reason why you choose to mount each file separately instead of this way I include? In the end we just use these 2 files (iris.key and password.txt) once when starting the container.
Thanks Robert! Glad you like it! It's a pity many times we include new functionalities that cannot be used for customers because is required a recompilation and a change in their class model... sometimes depending on the feature, can be strictly necessary, but I think it's not the case for exporting/importing mechanisms.