go to post Robert Cemper · Sep 6, 2017 The default for %String is MAXLEN=50 if you write in your definition %String(MAXLEN="") also in Method calls this should be enough. Query Methode(data1 As %Library.String(MAXLEN=""), data2 As %Library.String(MAXLEN=""), data3 As %Library.String(MAXLEN="")) As %Library.Query(CONTAINID = 1, ROWSPEC = "Result,Par2:%String") [ SqlProc ] and so on. Or you make you own data type inheriting %String overwriting Parameter MAXLEN="" Or just use %Library.VarString which makes just this MAXLEN=""http://docs.intersystems.com/latest/csp/documatic/%25CSP.Documatic.cls?P... Query Methode(data1 As %LibraryVar.String, data2 As %Library.VarString, data3 As %Library.VarString) As %Library.Query(CONTAINID = 1, ROWSPEC = "Result,Par2:%VarString") [ SqlProc ] and so on.
go to post Robert Cemper · Sep 6, 2017 of course it makes sense!but then you know which application is using it and can use the application's cleaning method / routine that takes care of all kind of dependencies:I remember well times when routines used to start with KILL ^CacheTemp*($JOB)I expected over time most applications are using PPG (^||myGlobal...) to avoid this. Or have a Clean-Up.
go to post Robert Cemper · Sep 6, 2017 It's the task of the application that uses ^CacheTempUser.* to take care of the housekeeping.I found no traces that it belongs to Caché System Management and Operation.
go to post Robert Cemper · Sep 5, 2017 So for a first check if this is the only issue just throw the full string into a $TRANSLATE$tr(jsonstring,$c(26)) and whipe it out.
go to post Robert Cemper · Sep 5, 2017 Last comment from Ken holds his final solution.use Class %Regex.Matcher it finds the control chars and can replace it .e.g. ""http://docs.intersystems.com/latest/csp/documatic/%25CSP.Documatic.cls?A...
go to post Robert Cemper · Sep 5, 2017 http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...there isn't much doc around.it's also used for "Find in files"a little bit in debugginghttp://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...
go to post Robert Cemper · Sep 4, 2017 Hi Evgeny,IF you can afford a short OFFLINE state:#5) dismount DB / copy of cache.dat to a fast local device / remount it move the copy in a secure place: #2, #1ELSE IF you have to remain online all the time:#3) on fast local device + move backup in secure place by #2,#1 NEVER #4) a fair chance for massive inconsitencyRobert[semper fidelis]
go to post Robert Cemper · Sep 4, 2017 double dot ..property is the shortcut for $this.property in instance methods.http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...
go to post Robert Cemper · Sep 1, 2017 Great explanation of the issue. Thanks!So we have an nice example what Proleptic Gregorian Calendar used for $H calculation means: write $zd($zdh("1492-10-12",3,,,,,-600000)#7,11)Wed And that's definitely not correct as you demonstrated very precisely.But is common use in most programming and DB systems. But the date as such is questionable for 2 reasonsThere is a 5..6 hours time gap between Spain and the Caribean sea At the and of the middle age every kingdom and smaller typically dated their documentsby the years their actual king was in power. A common date as we know was not at all in place.So Oct.12 is most likely a date back calculated by historians hundred years later . So we should interpret this date as an common agreed convention that by luck was Friday.Thanks again for the contribution.
go to post Robert Cemper · Aug 31, 2017 You are right, the A -B -C case isn't covered by me:not a goal but an assist (half points )
go to post Robert Cemper · Aug 31, 2017 It's possible but counter productivesince: if you switch off journal this get's logged in Audit and generates at least 1 entry in journaland swicthing it back on for the rest of your application you get another entry.I just don't recommend things with negative impact on performance. Anyhow IF you insist it's your fate:http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...
go to post Robert Cemper · Aug 31, 2017 You may do it as well with SQLselect count(*) cnt , ID from ( select 'PERS' Typ, ID from %Dictionary.ClassDefinition where Super [ 'Persistent' union all select 'XML' Typ, ID from %Dictionary.ClassDefinition where Super [ 'XML.Adaptor')group by IDorder by cnt descResult : 2 both classes contained in classcntID2%BI.Blog2%BI.BlogPost2%BI.DashBoard2%BI.DetailList2%BI.DocMag2%BI.ImageList2%BI.KPI2%BI.ListField2%BI.Measure2%BI.PerfMet2%BI.PerfMetNode2%BI.PivotData2%BI.PivotTable
go to post Robert Cemper · Aug 31, 2017 For Regex you have $LOCATEhttp://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...$MATCHhttp://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...and %Regex.Matcherhttp://docs.intersystems.com/latest/csp/documatic/%25CSP.Documatic.cls?A...
go to post Robert Cemper · Aug 30, 2017 YES, map it to a namespace where Journal is disabledswitching on/of journalling at every write is overhead and fills the audit log that is journalled itself
go to post Robert Cemper · Aug 30, 2017 I'd suggest in this case to take the original JSON String from Request.HttpResponse.Dataand split it by "LineNumber":eg:set sep="""LineNumber"":"for line =2:1:$l(json,sep) set line(line)=+$p(json,sep,line)and you get line=3line(2)=0line(3)=1I admit it's not very object-ish but efficient
go to post Robert Cemper · Aug 30, 2017 your private google search service delivered some material.[this is not a standard service]
go to post Robert Cemper · Aug 30, 2017 Athanassios,I googled some time around Python console:It is single threaded. But your expectations seem to be that the behavour is like a terminal.To achieve this your have to run 2 Phyton consoles / shells as you required 2 Terminals.a) 1 passive to receive messages from WRITE see attaches example starting before b)b) 1 active to trigger action in CachéYour initial code from your questions using the Caché Phyton binding covers b) OK!for a) you may use a listener similar to this Phyton example with the correct port, buffer,... ToDo 1 #!/usr/bin/env python 2 3 import socket 4 5 6 TCP_IP = '127.0.0.1' 7 TCP_PORT = 5005 8 BUFFER_SIZE = 20 # Normally 1024, but we want fast response 9 10 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 11 s.bind((TCP_IP, TCP_PORT)) 12 s.listen(1) 13 14 conn, addr = s.accept() 15 print 'Connection address:', addr 16 while 1: 17 data = conn.recv(BUFFER_SIZE) 18 if not data: break 19 print "received data:", data 20 conn.send(data) # echo 21 conn.close()
go to post Robert Cemper · Aug 30, 2017 Dashboards are always fresh calculated.Compare the performance in .NET to IE. It should be rather close to each other being based on similar technology.If there is a significant difference then you dig at .NET end (buffers, ...)If Chrome is significant faster then IE it's most likely the faster JS engine in Chrome.Next you could look into global buffers of Caché and concurrent use of the Caché instance.And (rarely) the complexity of your dashboard
go to post Robert Cemper · Aug 30, 2017 Hi Athanassios,you can not run the sender code in the same terminal as the receiver codeyou have to use 2 terminals:Terminal #1) start receiver. This simulates your Phyton Consoleset tcp="|TCP|4200"open tcp:(:4200):1 write $s($t:"OK",1:"failed"),!for line=1:1 use tcp read text use 0 write line,?5,text,! now you wait for something to be sent:#Terminal #2): run sender set person = ##class(Samples.Person).%OpenId(1) w person.Name do person.PrintPersonTCP() for this test it's essential that the sender finds a receiver waiting for input. Probably the same issue with PhytonConsole?It's like real life: If nobody listens, your words are lost. And it has to happen at the same time.