go to post Alexander Koblov · Mar 4, 2019 For drawbacks of Parent/Child relationships see this comment by @Brendan Bannon
go to post Alexander Koblov · Feb 28, 2019 Quoting doc: "Name indirection, argument indirection, and XECUTE commands that appear within a procedure are not executed within the scope of the procedure." https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY... Consider method: Class Test.test [ Abstract ] { ClassMethod ind() { kill info set active = 1 set i="active" set @i = "global scope" break } } Output: USER>do ##class(Test.test).ind() break } ^ <BREAK>zind+5^Test.test.1 USER 2d1>w active="global scope" <Private variables> active=1 i="active" Notice private variables and public variables.
go to post Alexander Koblov · Feb 22, 2019 Correction for future readers. Correct path is {serverdir}/dev/atelier/CACHELIB/Metadata.zip Relevant section in Atelier documentation
go to post Alexander Koblov · Jan 26, 2019 Null in this case is not a reserved word. It’s just a name of variable that is not defined.
go to post Alexander Koblov · Jan 23, 2019 NTLM Authentication is supported in Caché / Ensemble 2018.1 and later: https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY...
go to post Alexander Koblov · Dec 10, 2018 I'm getting following error, running your program on Caché 2017.2.2: USER>do ^test This FTP server is anonymous only. And it works OK once I change Connect to be anonymous: If 'ftp.Connect(host,"anonymous","",port) Write ftp.ReturnMessage,! Quit sc Output: USER>do ^test Ftp server messsage: Features: EPRT EPSV MDTM PASV REST STREAM SIZE TVFS End Mode now: Binary Length of file received: 524288 Can you connect to speedtest.tele2.net from the same server, but not from Caché? Maybe access via port 21 is blocked by your firewall?
go to post Alexander Koblov · Nov 29, 2018 You need to use Escape clause. SELECT ID, CompanyName FROM Table1 WHERE CompanyName LIKE '%\%%' ESCAPE '\' See documentation for LIKE predicate
go to post Alexander Koblov · Nov 26, 2018 DeepSee Engine is independent of DeepSee user interface. You can use DeepSee REST API to access DeepSee Engine from any UI. See documentation.
go to post Alexander Koblov · Oct 18, 2018 a) I think no, performance will not improve if you have nine SQLGateways. SQLGateway ODBC connection is established in each process. So each separate Caché process has each own connection to the SQLServer. b) As to the SQLGateway performance. I think first thing you need to check is how SQLServer itself handles these nine queries being run simultaneusly. If it's fast, and slow only via SQLGateway connection, then it makes sense to look into if something can be configured on SQLGateway / Caché side.
go to post Alexander Koblov · Oct 4, 2018 Tuan, $.TotalSteps seem to work OK in curl: C:\utl>curl -i -X POST -H "Content-Type: application/json" http://localhost:52774/api/docdb/v1/USER/db/TestDB HTTP/1.1 201 Created ... {"content":{"Name":"TestDB","Class":"ISC.DM.TestDB","properties":[{"Name":"%%OID","Type":"%Library.RawString"},{"Name":"%Concurrency","Type":"%Library.RawString"},{"Name":"%Doc","Type":"%Library.DynamicAbstractObject"},{"Name":"%DocumentId","Type":"%Library.Integer"},{"Name":"%LastModified","Type":"%Library.UTC"}]}} C:\utl>curl -i -X POST -H "Content-Type: application/json" http://localhost:52774/api/docdb/v1/USER/prop/TestDB/TotalSteps?type=%Integer&path=$.TotalSteps HTTP/1.1 201 Created ... {"content":{"Name":"TotalSteps","Type":"%Library.Integer"}} What error do you get?
go to post Alexander Koblov · Oct 3, 2018 Yes, there is an API to export and import web-applications info to and from file. To export: %SYS>write ##class(Security.Applications).Export("c:\temp\webapp.xml",.n,"/csp/samples,/csp/user") To import: %SYS>write ##class(Security.Applications).Import("c:\temp\webapp.xml",.n) 1 %SYS>write n 2
go to post Alexander Koblov · Oct 3, 2018 No, it's not safe to use %NOLOCK on INSERT query. Doc says following: %NOLOCK ... should only be used when a single user/process is updating the database. https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY... If you use INSERT with %NOLOCK, then some other process might UPDATE partially inserted row. Rows inserted as follows: a) Save inserted row (fill Data global) b) File index values for inserted row (fill Index global) Imagine there are two parallel processes A and B. A inserts row with %NOLOCK. B updates the same row without %NOLOCK. t1) A saves row, filling Data global t2) B updates the same row, overwriting the value in Data global t3) B fills Index global with values corresponding to new data of row t4) A fills Index global with values corresponding to old data of row (as of Insert time) Now you have row in the table with wrong indices. Also, please notice that if there is inheritance in classes -- E.g. Sample.Employee inherits from Sample.Person. Then storing row in Data global is at least two SETs, so you might end up with corrupted row, not only wrong index. Also filing index records is not atomic. Each index record is separate SET. So, I would not recommend to use %NOLOCK. There is one possible use case for %NOLOCK -- bulk-loading data, but there should be only one process accessing the data while loading.
go to post Alexander Koblov · Sep 28, 2018 Hi Roger. Please notice Eclipse 2018-09 (4.9.0) is not Photon. It seems that it's codename is SimRel (https://www.eclipse.org/downloads/) Eclipse Photon is 4.8. Please try to use Atelier 1.3 on top of Eclipse Photon 4.8. Thank you, Alexander.
go to post Alexander Koblov · Sep 12, 2018 Daniel, in the guide https://community.intersystems.com/post/k-means-clustering-iris-dataset Niyaz connects to the InterSystems IRIS using user 'dev' and password '123'. Did you change that to user/password that exists on your system? Access Denied error usually means incorrect credentials or lack of required privileges. You can try to enable Audit in IRIS (Management Portal -> System Administration -> Security -> Auditing). Then enable LoginFailure and Protect events (Auditing -> Configure System Events). Then reproduce the error and check audit (Auditing -> View Audit Database). If LoginFailure or Protect events appeared -- click on Details, they might give some hints of why you are getting "Access Denied".
go to post Alexander Koblov · Sep 7, 2018 Yes. USER>set reg = $system.CSP.GetGatewayRegistry() USER>set managers = reg.GetGatewayMgrs("a") USER>write managers.Size // you can have many CSP Gateways connected to this Caché instance 1 USER>set mgr = managers.GetAt(1) // I only have one USER>write mgr.GetThisServerName(.names) 1 USER>zwrite names // this server is listed in CSP Gateway Configuration as 'LOCAL'. names(0)="LOCAL" USER>kill params USER>set params("Username")="CSPSystem" USER>set params("Password")="very strong password" USER>write mgr.SetServerParams("LOCAL",.params) 1 USER>write mgr.CloseConnections("LOCAL") // close connections, forcing to reconnect with new credentials. 1 Please be careful, if username/password are not valid for connection to Caché, then CSP Gateway will not be able to reconnect, and you'll loose connection with CSP Gateway and ability to modify settings using this API. For more details see 1. https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY... 2. Class reference for classes in package %CSP.Mgr
go to post Alexander Koblov · Sep 6, 2018 Cody, seems that server you connect to uses Server Name Indication. Caché supports this starting from 2017.2 In 2017.1.1 you can do what Eduard suggests as a workaround.
go to post Alexander Koblov · Aug 28, 2018 I don't know the fastest way. I know a way: set list = $lb("stri,ng", $c(0), 2) set list2 = "", ptr = 0 while $listnext(list, ptr, elem) { if elem'=$C(0) { set list2 = list2 _ $LB(elem) } else { set list2 = list2 _ $LB() } }
go to post Alexander Koblov · Jul 31, 2018 Hi Sebastian Maybe you are looking for ^%ISC.ZEN.cssLevel Or the method %OnDetermineCSSLevel paragraph "Zen Pages Uses CSS Level 3" https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY...
go to post Alexander Koblov · Jul 20, 2018 David, Have you tried suggestion from https://community.intersystems.com/post/eclipse-could-not-render-atelier... ?