go to post Eduard Lebedyuk · Sep 5, 2018 it causes error messages as something in the class is not correct,What error messages?Also try calling zwrite %objlasterror it may contain additional information.
go to post Eduard Lebedyuk · Sep 4, 2018 You can use methods of %Activate.TLEnumerator class to load libraries programmatically.
go to post Eduard Lebedyuk · Sep 4, 2018 I think you'll need a full fledged orchestrator for that. Docker run always starts one container, bit several volumes could be mounted, some of them RW, some RO. I'm not sure about mounting the same folder into several containers (again, orchestration).You can also use volumes_from argument to mount directory from one container to another.
go to post Eduard Lebedyuk · Sep 3, 2018 Redefine HTTP adapter like this: Class Production.Adapter.HTTPOutboundAdapter Extends EnsLib.HTTP.OutboundAdapter { /// Send a POST to the configured Server, Port and URL, sending form data to the named form variables. Method Post(Output pHttpResponse As %Net.HttpResponse, pFormVarNames As %String, pData...) As %Status { quit ..SendFormDataArray(.pHttpResponse, "POST", ..GetRequest(), .pFormVarNames, .pData) } ClassMethod GetRequest() As %Net.HttpRequest { set request = ##class(%Net.HttpRequest).%New() set request.ContentType = "application/json" quit request } } And use it instead of default adapter.
go to post Eduard Lebedyuk · Aug 31, 2018 Similar script is used in InterSystems IRIS docker image to scramble passwords on startup.
go to post Eduard Lebedyuk · Aug 31, 2018 Try this:1. Write stream to string2. Use $zcvt on string $zcvt(string,"O","UTF8")3. Send this stream to XSLT
go to post Eduard Lebedyuk · Aug 30, 2018 Can we leverage this application to show globals currently in Global Buffer?
go to post Eduard Lebedyuk · Aug 29, 2018 Speed comparison: Class POI.Test { /// do ##class(POI.Test).main() ClassMethod main(rounds As %Integer = 1000, size As %Integer = 10, nullPercent As %Integer = 20) { set list = ..getList(size, nullPercent) write !,"Rounds: ", rounds write !,"Size: ", size write !,"NullPercent: ", nullPercent write !,"List: " zwrite list set ways = $lb("listnext", "listfind", "lfs", "base") for i=1:1:$ll(ways) { set way = $lg(ways, i) set start = $zh set list2 = $classmethod(,way, rounds, list) set end = $zh set time = end - start write !,"Way: ", way write !,"Time: ", time write !,"List: " zwrite list2 write ! } } ClassMethod base(rounds As %Integer = 1000, list As %List) As %List { for i=1:1:rounds { set origList = list } quit origList } ClassMethod listfind(rounds As %Integer = 1000, list As %List) { for i=1:1:rounds { set origList = list set ptr=0 for set ptr=$LISTFIND(origList, $c(0), ptr) quit:'ptr set $LIST(origList, ptr, ptr)=$lb() } quit origList } ClassMethod listnext(rounds As %Integer = 1000, list As %List) { for i=1:1:rounds { set list2 = "" set ptr = 0 while $listnext(list, ptr, elem) { if elem'=$C(0) { set list2 = list2 _ $LB(elem) } else { set list2 = list2 _ $LB() } } } quit list2 } ClassMethod lfs(rounds As %Integer = 1000, list As %List) { for i=1:1:rounds { set str = $lts(list) set str = $tr(str, $c(0)) set list2 = $lfs(str) } quit list2 } ClassMethod getList(size As %Integer = 10, nullPercent As %Integer = 20) As %List { set list = "" for i=1:1:size { set list = list _ $lb($select($random(101)<=nullPercent:$c(0),1:$random(50))) } quit list } Results: POI>do ##class(POI.Test).main(1000000) Rounds: 1000000 Size: 10 NullPercent: 20 List: list=$lb(25,20,$c(0),$c(0),4,42,$c(0),28,44,3) Way: listnext Time: .944814 List: list2=$lb(25,20,,,4,42,,28,44,3) Way: listfind Time: .610244 List: list2=$lb(25,20,,,4,42,,28,44,3) Way: lfs Time: .430088 List: list2=$lb("25","20","","","4","42","","28","44","3") Way: base Time: .032151 List: list2=$lb(25,20,$c(0),$c(0),4,42,$c(0),28,44,3) listfind solution seems optimal.
go to post Eduard Lebedyuk · Aug 29, 2018 Thanks, Robert.It works fast, but replaces $c(0) with empty string instead of empty element.Can $list replace replace $c(0) with empty element?I posted it as a related question.
go to post Eduard Lebedyuk · Aug 28, 2018 Develop client part (angular, etc) in your favorite editor, build it there and set build directory as a CSP Files Physical Path for CSP application.Additionally set Serve Files to Always and Serve Files Timeout to 0.
go to post Eduard Lebedyuk · Aug 28, 2018 Terminal works under your own OS user.Studio pseudo-terminal works under Cache system account.They may have different access levels.
go to post Eduard Lebedyuk · Aug 27, 2018 From windows error codes 2 (0x2) The system cannot find the file specified. ERROR_PATH_NOT_FOUND Check your path, also Caché may not have access to the directory or file.