update added
- Log in to post comments
update added
confirm. It works and is independent of IRIS version
Write to a DataBase with no Read is not possible by principle.
Think if indices and other information for structural maintenance.
BUT:
You may create your own WRITE in a method, function, background job, ...
that elevates to RW access and drops it at completion.
details: Privileged Routine Applications
I prepared a pull request for standard Docker support
https://github.com/r-cemper/PR_First-Vector-Search-on-IRIS
#1) in %SYS find the sessions by this Stored Procedure:.png)
#2 Next based on the SessionId I can open the Object
%SYS>set sess=##class(%CSP.Session).%OpenId("kTkyVXwgxw")
%SYS>set pid=sess.ProcessId
%SYS>if $l(pid) set tSC=$$DeleteSession^%SYS.cspServer(pid)The last row was found in
Class %CSP.UI.Portal.CSPSessions
ClassMethod EndSession
Attention. Not every CSP Session has also a pid !
That's a typical case,
where I write my personal ZZanyname function into %ZLANGF00.mac
to hide the details
which version ?
I tried and failed.
CLASS DOES NOT EXIST>%FromOref+8^%Library.DynamicObject.1 *%Library.EntityProjectionUtil
SAMPLES>w $zv
IRIS for Windows (x86-64) 2024.3 (Build 217U) Thu Nov 14 2024 17:59:58 EST
Just to confirm naming in COS
GlobalName is everything between Caret ^ and left Parenthesis (
GlobalSubscript is everything within left and right Parenthesis ( )
just E2C8.D9IS.*
to cover all .1 .2 .3 .S
and no subscripts
Did you mean to map this Global ?
^DepartmentMasterData("^E2C8.D9IS.*") ?????
or just ^E2C8.D9IS.* ? with all subscripts
OK
To Stream needs 1 line 2 statements
ClassMethod personsidGET(messageRequest As dc.Sample.v3rest.requests.personsidGET) As %Stream.Object
{
set stream=##class(%Stream.TmpCharacter).%New(),sc=##class(dc.Sample.Person).%OpenId(messageRequest.pathid).%JSONExportToStream(.stream)
return stream
}To String is shorter (just 1 statement) as you don't need to initialize %String)
ClassMethod personsidGET(messageRequest As dc.Sample.v3rest.requests.personsidGET) As %String
do ##class(dc.Sample.Person).%OpenId(messageRequest.pathid).%JSONExportToString(.string)
return string
{not just Sample.Person but also Sample.Address,
or whatever serial class you refer to require %JSON Adaptor.
then
set person=##class(Sample.Person).%OpenId(3)
>set sc=person.%JSONExportToString(.Jperson)
set zjson={}.%FromJSON(Jperson)
ZWRITE
Jperson="{"LIMIT":103,"Name":"O'Rielly,Xavier E.","SSN":"331-77-5308","DOB":"1957-05-26","Home":{"Street":"8757 Elm Place","City":"Miami","State":"FL","Zip":"92027"},"Office":{"Street":"413 First Drive","City":"Miami","State":"NH","Zip":"83830"},"Age":67,"RowVer":0}"
person=<OBJECT REFERENCE>[2@Sample.Person]
sc=1
zjson=<OBJECT REFERENCE>[13@%Library.DynamicObject]and there is your dynamic object
there is no description of how to communicate with Butler
at the moment it hangs around like a lazy chap
updated today
Congratulations to the participants and winners.
Special BIG THANKS to the organizers and administrators of this contest. 💐🏵🌷🌻🌹
I'm really proud to see how this community has grown and raised in quality.
do ^ADMIN indicates that you run a classic straight ObjectScript program.
while WRITE just has 1 direction to act READ is bi-directional.
READ can send some text as prompt and waits for reply.
The only bi-directinal device I know of are network connections as TCP, UDP, TRM,FTP,..
The common feature is : they communicate out of your IRIS instance.
Inside IRIS you may do a redirection e.g to some TCP port like |TCP|7000
but then this port is blocked. No other process can touch |TCP|7000.
So you need an external port wrapper to some other port. e.g. |TCP|7100
Then you can handle this bi-directional communication either by sequence
or you have a list of prompts and the expected replies or similar.
The sequence of operation could then be:
The most tricky point is to handle situations where the communication
if it is not just 1 Prompt :=> 1 Answer but
multiple Prompts or WRITEs :=>1 Answer or 1 Prompt :=> multiple Answers.
So I'd suggest instead of an IRIS internal solution rather look for an
external Terminal program to consume and apply your answer script.
check if your lines start with the labels or if you have some leading <blank> or <tab>
if so it is interpreted as function call instead of a label
slightly shorter using Julian Date
USER>set hours=-3 write $zdt($zdth(hours*3600+$zdt($h,-2),-2))Sorry, I just couldn't resist
From Ensemble.inc:
#define TRACE(%arg) $$$catTRACE("user",%arg)
#define sysTRACE(%arg) $$$catTRACE("system",%arg)
#define catTRACE(%cat,%arg) Do:$$$DoTrace ##class(Ens.Util.Trace).WriteTrace(%cat,$$$CurrentClass,$$$CurrentMethod,%arg)
#;
#define DoTrace $S($D($$$EnsJobLocal("DoTrace")):$$$EnsJobLocal("DoTrace"),1:##class(Ens.Util.Trace).DoTrace())
#;
#define EnsJobLocal %Ensemble
#;
. . . .
Class Ens.Util.Trace [ Abstract, ClassType = "", ProcedureBlock, System = 4 ]
{
ClassMethod DoTrace()
{
Set tJobConfigName=$$$JobConfigName
Quit $G($$$ConfigTrace(tJobConfigName),0)||(""'=$G($$$JobTraceDevice))||$$$IsTerminalDevice($IO)
}
Never tried it for long time , but $system.CSP.Shell() might be a starting point
$system.CSP.* seems to have some more useful methods.
I followed this rules with (1,1) as base
Starting any other point than (1,1) simply shortens the spiral.
now I reached 259
I really dislike the result as it is composed so unfriendly
just to save same bytes that nobody asked for.
I see a general problem in interpretation of the "spiral"
so I took some drawing for aquadratíc and a rectangular matrix. .png)
The diagonal came to my mind thinking how to NOT increase the imaginative radius of the spiral.
The related subscripts for the diagonale points of an n*m are found as (-n/2+x,-m/2+y)
The pink subscripts are obviously (n/2,m/2) and might be just virtual.
As subscripts start with 1 and first piece position is also 1
some more adjustment of coordinates is required
I haven't written any useful line yet.
DC search; Improve selectivity of Articles and Questions by using TAGS
https://ideas.intersystems.com/ideas/DPI-I-630
Just at a 2nd view also N=3 has that problem.
StarMiddleTop (1,2) has the same Problem as MiddleRight (2,3)
Not all characters of the matrix show up in the result.
it shows DEFGHABI but DEFGHABC looks similar correct according to published rules
Is this expected behavior?
2cents more
The clockwise logic is simple for a 3*3 matrix
though starting with 4*4 there is some rule missing on how the handle a dead end
Starting at a corner (1,1) or similar is trivial.
BUT: starting at any other point may create a rathole or miss some boxes
Set matrix($Increment(matrix)) = "C,O,D,E"
Set matrix($Increment(matrix)) = "U,C,H,G"
Set matrix($Increment(matrix)) = "M,U,F,O"
Set matrix($Increment(matrix)) = "S,I,F,L"Start (1,1) is in the example but
Start (1,2) runs ODEGOLFISMU what is the next to (2,1) ? (1,1) or (2,2) or ??
worse with Start(2,2) already the first according to description could be
up (1,2) or right (2,3) or left (2,1) leaving dead ends clockwise.
And this is only with N=4 larger grids may create multiple lost cells.
Clockwise spiral is just not detailed enough for a UNIQUE result to collect ALL cells
A rule how to handle / skip already consumed cells might improve.
Just as I type a non straight spiral solution to (2,2) consuming the full matrix
might be CUISMUCODEGOLFFH
I fail to imagine grids >5*5
2 options:
set mylist = ""
for i = 1:1:5 {
set item = "item"_i
set mylist = mylist_$ListBuild(item)
}
zw mylistkill mylist
for i = 1:1:5 set $li(mylist,i)="item"_i
zw mylistJust as you did with Studio
see docs: https://docs.intersystems.com/ens201813/csp/documatic/%25CSP.Documatic.cls?LIBRARY=%25SYS&CLASSNAME=%25CSP.Response#ContentLength
• property ContentLength as %String;
Sets the Content-Length header. Since the HTTP headers are sent after the OnPreHTTP() method is complete, setting it after this has no effect.
As a first step I would search Journals to find the Globals affected
if they are not in IRISTEMP/CACHETEMP or PPG of if Journal is switched off.
In order to separate routine calls (abc^myroutine) from real ^globals
Though journal just shows Process Ids, no routine names.