Robert Cemper · Jun 17, 2023 go to post

in Caché it is %installdir%/mgr/cconsole.log
and you can see it from MgmtPortal
and it would be helpful if you uncover the primary language you use

Robert Cemper · Jun 17, 2023 go to post

in your namespace you can map not just full Globals   
to a different Database but also parts of a Global.
This works over Global Subscript   Details
IF your structure is ^HISTORY(yyyymm, ....)    [yyyymm as first subscript ]
? eventually also your IDKEY ?
this is a possible way   to set   
^HISTORY(201606) >>  201606_HIPAA.dat 
^HISTORY(201607) >>  201607_HIPAA.dat

But if yyyymm is just somewhere in your data, you need to reorganize your global
I assume this is something  you have to do anyhow with your history 

ATTENTION: this is total static.
so for 120 DBs you need 120 mapping lines

Robert Cemper · Jun 16, 2023 go to post

just a hint:
Webterminal uses 2 connections:

  1. http/https
  2. wss/ws       websockets

this might cause problems. just my guess

In WEBCOMMAND I use just 1 connection (rather straight CSP)
with less  comfort

Robert Cemper · Jun 9, 2023 go to post

Confirmed!

Also if zipped typical IRIS.DAT is not accepted by GitHub because of size.
If cut to smaller pieces performance and flexibility are lost.

Robert Cemper · Jun 9, 2023 go to post

If not disabled all global SET and KILL and also transactions are documented in JOURNAL
there are also related search utilities available in %SYS
there is no equivalent feature for Global READ.
if you just look for the fact that there was a SET or KILL at object level
DSTIME could be an option see example: 
https://community.intersystems.com/post/synchronize-data-dstime
it is easier to handle than JOURNAL
 

Robert Cemper · Jun 9, 2023 go to post

I had some doubt in your initial question.

NowYOUR mistake is evident
you compose a JSON array args=[arg1value,agr3value,arg3value,..]
using %Push(..)

to %SQL.Statement this is just kind of a strange structured String
%SQL.Statement doesn't deal with JSON Arrays or Objects

with arg... you have to pass a local variable array
which is a core structure of Object Script (since ever)
arg=3           ;;<max subscript count>
arg(1)=arg1value  
arg(2)=arg2value
arg(3)=arg3value
as already described by @Julius Kavay 
 

Robert Cemper · May 25, 2023 go to post

BUT:
S txt="-123.45E6789" IF +txt W "true"
                     ^
<MAXNUMBER>
USER>

Robert Cemper · May 25, 2023 go to post

done on Caché 2018.*
s txt="-123.45E6789" if txt w "true"   >>> true
true/false stops checking Strings at the first nonzero numeric sign to set $T=1
almost since ever

Robert Cemper · May 18, 2023 go to post

Great improvement! 🥂
for me:  Emojis are the emotional equivalents to single-character commands in M

🌷

Robert Cemper · May 17, 2023 go to post

one of my (former) customers suggested this approach:

  • Train COS not on IRIS but on some Caché/ENS 2018 instances with Studio
  • or on some older IRIS version
  • As they run pure COS they have Studio for Training. An no need of new features
  • once all the logic works they may move the result to some final IRIS
    (if ever they migrated) 
     
Robert Cemper · May 16, 2023 go to post

Just to rephrase your issue:

  • you expect a JSON array of JSON objects   [{..},{..},{..} ]
  • but you get a JSON object containing that array {"cursos": [{..},{..},{..} ]}
;;  asssumptio input holds the received obj
    set jobj={}.%FromJSON(input) ; convert to obj
    set jarray=jobj.%Get("cursos")   ; content of "cursos" = [..]
    set output=jarray.%ToJSON() ; convert to  string
    

docu: %Library.DynamicObject
 

Robert Cemper · May 15, 2023 go to post

There is still another critical directory for Windows Docker Desktop

C:\Users\<yourusername>\AppData\Local\Temp\docker-scout\sha256

There some GB of Generated/Downloaded images are kept and NEVER cleared
I didn't miss anything when I deleted them manually after stopping Docker
getting back some more GB

Robert Cemper · May 12, 2023 go to post

 In past (before2016),
I had 2 times the challenge to run a private training within a window of 2 years

  • Are developers generally willing or resistant to the idea of learning ObjectScript? Mostly rather resistant, but forced to learn it to get the job,  
  • Why? ObjectScript is not the mainstream. And in my geographic environment (middle Europe) demand is rather low. So it's more a curiosity skill that almost no recruiters value 
  • For developers trying to learn ObjectScript - what was that process like? classroom training + practical exercises  What were the main challenges there?
    • In-person learning?  Y
    • Online class?  N
    • Documentation?  Y
    • What were your impressions? almost all tried to map the previous experience to ObjectScript the concept of variable scoping + global variants shocked them they had massive problems following CSP=>CLS=>MAC=>INT=>OBJ  
  • How did it compare to other languages? They were looking for public examples. Support of SQL was often disappointing compared to market leaders
  • What would have made it easier to learn? pushing it to universities and technical schools instead of retreating and leaving that space to competitors
  • How long did it take to learn?    basics 2 weeks - guided development 3 months
  • Was it longer/shorter than expected?  Just a predefined schedule  
  • Easier or harder than expected? Hackers and Investigators had a clear advantage Formal thinkers suffered the most.

The main environment was a huge application Upgraded from
MUMPS to ObjectScript with a lot of old-style code using enough
ancient tricks that might "Code Quality" drive crazy.

Are there any other comments you'd like to make about the hiring
or training process that might help us improve?
My personal prerequisites list:

  • understanding Java (:= Object concept)
  • understanding SQL DBs
  • willing and able to think across the fence
  • rather exploring new ideas than varying old models
  • courageous enough to explore and fill white space on their skills map
  • digging into details

Besides the technology item:
being rather an explorer than an administrator

Robert Cemper · May 10, 2023 go to post

Obviously, ChatGPT has no idea of ObjectScript
nonexisting methods, wrong indexing, ......

DISAPPOINTING 

Robert Cemper · May 10, 2023 go to post
ClassMethod SortVersion(input As %DynamicArray) As %DynamicArray {
    Set sorted = []
    Set val = ""
    Kill order
    For i=1:1:input.%Size() Set order(input.%Get(i-1))=""
    For  {
        Set val=$o(order(val)) Quit:val=""
        do sorted.%Push(val)
        }
   Quit sorted
}
Robert Cemper · May 8, 2023 go to post

works fine. it didn't know me first 😉
just a minor adjustment

ports:
  - 52773:52773
  - 51773:1972

Robert Cemper · May 7, 2023 go to post

Typical licensing happens by user by processes - every user gets 25 processes slots
if you exceed this 25 every process consumes its own license.
so up to 25 you consume 1 license but by #26 you convert to 26 licenses consumed
then the total number of license slots counts.
But there are also other licensing models. You should check with ISC Sales or WRC which one applies. 

  • $SYSTEM.License.KeyLicenseUnits() 
     returns the number of license units authorized by the active key.
  • $SYSTEM.License.LUConsumed()
    returns number of license units currently consumed at the local instance.
  • there are more $SYSTEM.License...... that might be of interest.

Docu %SYSTEM.License

Robert Cemper · May 1, 2023 go to post

Permission points to some missing user privileges
start your container in foreground   (no -d switch) to see the full log  with details

Robert Cemper · Apr 19, 2023 go to post

we need to handle 2 types of line terminators. $C(13,10) and $C(10)
+ BASE64 holds only printable characters, $C(13) is a NONO in Base64.
So:
if you always use $c(10) as line terminator 
then set ln=$TRANSLATE(ln,$c(13))  will remove also a leftover $C(13) if existing
or just do nothing.

Robert Cemper · Apr 17, 2023 go to post

right! Just the stating numeric is important

i will elaborate on the background of objects