go to post Robert Cemper · Apr 9, 2021 There is some 'silent' period during the night.Actually, a snapshot (~380 GB) is taken during a Freeze-Thaw window, Which is not really RO.
go to post Robert Cemper · Apr 8, 2021 the format ./IOTABLE="CP1252" applies only using the OPEN command $ZCONVERT and %Stream.FileCharacter just use "CP1252" just by the name
go to post Robert Cemper · Apr 8, 2021 In namespace %SYS you have a utility NLS that shows your installed conversion table and its short names. %SYS>d ^NLS2) Select defaults2) I/O tablesItems marked with (*) represent the locale's original default I/O table Current default--------------------- --------------------1) Process RAW (*)2) Cache Terminal UTF8 (*)3) Other terminal UTF8 (*)4) File RAW (*)5) Magtape RAW (*)6) TCP/IP RAW (*)7) System call RAW (*)8) Printer RAW (*) I/O table: 4 1) RAW (*) 2) UTF8 3) UnicodeLittle 4) UnicodeBig 5) CP1250 6) CP1251 7) CP1252 8) CP1253 9) CP1255 10) CP43711) CP850 12) CP85213) CP866 14) CP87415) EBCDIC 16) Latin217) Latin9 18) LatinC19) LatinG 20) LatinH21) LatinT So you see the shortnames but no Latin1 but CP1252 which is almost identical.the related problem is described here: https://www.i18nqa.com/debug/table-iso8859-1-vs-windows-1252.html "ISO-8859-1 (also called Latin-1) is identical to Windows-1252 (also called CP1252) except for the code points 128-159 (0x80-0x9F). ISO-8859-1 assigns several control codes in this range. Windows-1252 has several characters, punctuation, arithmetic and business symbols assigned to these code points." and Encoding Problem: ISO-8859-1 vs Windows-1252So you should check what your customer really does (some hide the fact they use Windows)The appropriate table can be used in $ZCONVERT(), ##class(%Stream.FileCharacter ) property TranslateTable OPEN command parameter /IOTABLE=
go to post Robert Cemper · Apr 7, 2021 Sorry! That doesn't indicate any reason. $zf(-1) is just a spawn.
go to post Robert Cemper · Apr 6, 2021 I just verified: Download an Ubuntu Docker image Install a Caché Ububtu distribution tar + gzip the image and you are part of the game with 550 MB only
go to post Robert Cemper · Apr 5, 2021 If this record is Property Record as %STRING; you can use 2 calculated properties /// true if Header/Trailer Property HeaderTrailer as %Boolean [Calculated,SqlComputed, SqlComputeCode = { set {*} = $extract({Record},1,20)?20" " } ]; /// make integer, 0 for Header / Trailer Property RecordType as %Integer [Calculated,SqlComputed, SqlComputeCode = { set {*} = $extract({Record},21,23)\1 } ];
go to post Robert Cemper · Apr 4, 2021 @Mike Minor I just installed a full instance on WIN10. boooooring slow!!If you don't disable AutoStart @ Boot in the config Win reacts rather confused.Especially if your drive has changed by dynamics from F : -> D: or similar.In addition, a lot of info is saved in Win-Registry. Overall performance is not a thrill but acceptable Next trouble: Dismount of the flash drive. Painful My strong recommendation: Use a Docker container instead. Example here CrossECP-CacheThen you are really mobile and fast
go to post Robert Cemper · Apr 4, 2021 using LOG^%ETN gives a full stack trace. without breaking the processyou just have to place it into your code at the critical points.https://docs.intersystems.com/iris20201/csp/docbook/Doc.View.cls?KEY=GCOS_errors#GCOS_errors_log_etn
go to post Robert Cemper · Apr 4, 2021 Instead of the double $ZF() I'd suggest using the query in Library class %File. set rs=##class(%ResultSet).%New("%File:FileSet") do rs.Execute(SDIR,"*",1) while rs.Next() { write !,rs.GetData(1) }
go to post Robert Cemper · Apr 4, 2021 Let's analyze this: [leaving aside that $Zf(-1 .. is Deprecated) You run the same sequence in 2 Caché/IRIS processes in parallel. There is no synchronization between them Both run in the same namespace ==> therefore the same default directory where SDIR_"DIRLIST.TXT" is located ???? " .. but from a different folder... " is SDIR different ????? if not : Both processes spawn 2 times a sub-process for each $ZF(-1) let's name the sub processes fg1, fg2 and bg1,bg2 The sub_process from foreground is not synchronized to the sub-process of background and your construct has no control on the sequence they are running. If the run sequence fg, fg1,fg2,bg,bg1,bg2 there should be no problem. But that's rater unlikely it looks like fg,bg,fg1,fg2,bg1 (partially deleting results of fg2), bg2 To verify what's really happening run fg,fg1,fg1,bg (JOB ), bg1,bg2 So they both can't influence each other.
go to post Robert Cemper · Apr 3, 2021 You may use this at init time https://openexchange.intersystems.com/package/helper-for-objectscript-language-extensions to add your ZPM command and function. It does a unique insert of the label
go to post Robert Cemper · Apr 2, 2021 When I was Software Support Manager @ Digital Equipment Corp. in a former lifein the previous millennium we had 2 basic rules graved in stone: The (contracted) customer is right. IF NOT, Rule #1 has to be applied. I won with my team the annual European customer survey competitionover several years in sequence.
go to post Robert Cemper · Apr 2, 2021 @Vic Sun. your reaction is - to formulate it politely - a disappointment.But no surprise to me.
go to post Robert Cemper · Apr 2, 2021 I miss a button "Excellent Answer" in the community Big Thanks!
go to post Robert Cemper · Apr 2, 2021 I understood that 14 licenses + Grace Period are your biggest pains.In past, I decreased the risk by moving ALL (suspicious) connections to a dedicated Userobserving his maxConnection limit using %CSP.Session.Login() especially this explanation: Login with this username and password, returns a status code to show if it worked or not. This method also trades license units at the same time so this CSP session will be logged in as a named user. If you pass type=1 then this will trade licenses only and not login as this user. This can't avoid a DDoS attack but it limits the initial impact and allows you toprotect some emergency licenses. [As I know the inventor of Grace Period since it was rolled out with a lot of pain for customersI'm not willing to discuss this "feature" in public again]
go to post Robert Cemper · Apr 1, 2021 Yes, pls. share!I always liked to see not just the ONE and ONLY solution but a choice.
go to post Robert Cemper · Mar 31, 2021 as you are in SMP anyhow just try to do an insert manually.Just 1 row.you seem to require something else <UNDEFINED>in addition, if your record exists already You may need an INSERT OR UPDATE (if this is possible in postgreSQL)It could be OK, but I wonder that you insert just 1 valueEventually, there is something required that is missing?Check the definition of the generated Caché class,
go to post Robert Cemper · Mar 31, 2021 Seems just a typo in INSERT statement.Target Columns must be in parenthesis. INSERT INTO HSIPIData.datos_usarios2 (addresses) SELECT Addresses FROM HSPI_Data.patient