go to post John Murray · Feb 8, 2018 This didn't work for me. Here's what result contained:The /D switch is only valid with the /S switch.Anyway, AFAIK the Read-only attribute of a Windows folder is of limited use. Even if you set it using the attrib command this won't prevent you from being able to modify files within the folder (provided those files don't have their Read-only attribute set).I think the OP was referring to permissions on the folder, not attributes. And in my testing, even if I explicitly deny Write permission on a folder to my user, the ##class(%File).Writeable(...) method still tells me I can write to a file that's in the folder. Of course, when I actually try to open it for write, the timed OPEN command fails correctly.
go to post John Murray · Feb 6, 2018 See Robert's answers. The %File.Writeable(...) method's underlying implementation ($zutil(140,12,filename,2)=0) is apparently not able to determine whether or not a directory is writeable, despite the method doc stating "Return true if the file/directory is writable and false if it is not"See this older doc for $zutil(140) information.You could try raising the issue with InterSystems WRC, but my guess is they'll say it's a bug in the comment on the method.
go to post John Murray · Feb 6, 2018 My reading of the post is that the OP is saying that %File.Writeable(...) on the Windows platform returns the correct answer for a file but not for a directory. I haven't investigated yet.
go to post John Murray · Feb 2, 2018 Good point Jon. Here's a concrete example, taken from the CheckLinkAccess classmethod of %CSP.Portal.Utils (2017.2 version). I have done the macro expansion myself and highlighted the expansions: Set tHaveAllRole = 0 Do . New $roles . Set $roles="" . If ($extract($roles,1,$length("%All"))="%All") Set tHaveAllRole = 1 If tHaveAllRole { ...
go to post John Murray · Feb 1, 2018 I just had this happen, but not on Mac. I'm using Eclipse Oxygen on Windows 10 (64bit), with Atelier 1.1.391.Things were working fine, then I restarted Eclipse and found my connections to servers were failing. When I used "Edit Connection" and clicked the "Test Connection" button I got this:Restarting Eclipse didn't resolve it, nor did "Check for updates" find anything out of date. So I used Help\Install New Software, chose the repository I'd previously installed Atelier from (https://atelier.artifactoryonline.com/atelier/updates/beta/latest/), cleared the "Hide items that are already installed", then selected both "Core" and "Optional" and clicked "Next". Eclipse reported that most pieces weren't needed, but it did install one, which I think was "TM Terminal via Remote API Connector Extensions".When it had finished it told me to restart Eclipse, and now my connections worked.
go to post John Murray · Feb 1, 2018 Evgeny was too modest to mention that he excluded himself from the awards on the basis that it's sort of his job to make lots of contributions to DC. The raw data shows just how prolific he is in doing that.A minor quirk in the table is that "DC Expert 2017 - 4th-10th places" only lists 6 names rather than the expected 7. But looking at the raw data I see that 2 authors tied for the position below Rubens Silva. So I guess either they both get the badge or neither does.
go to post John Murray · Feb 1, 2018 Yes, sometimes the license restrictions that apply to evaluation of a downloaded copy of Cache (i.e. without having contacted InterSystems for a loan key) lead to opaque and unfortunate failures that may give the impression that the product isn't worth the effort.
go to post John Murray · Jan 30, 2018 Thanks, that makes sense. To clarify for others, in the example you gave, Sample.Person was included as an "expanded class" because it's the superclass of Sample.Employee.
go to post John Murray · Jan 29, 2018 The superserver port is recorded in the cache.cpf file, and I think it can be changed there by simply editing the file and then restarting Cache.I'm guessing that the Cache installer uses the registry to discover the locations of the CPF files it needs to check when picking a "free" port to offer as the superserver port for a new instance. So if one of your instances wasn't properly registered at the time you installed another instance then the installer may have defaulted to a port that was actually already taken.
go to post John Murray · Jan 26, 2018 If you don't already have an online support account (a.k.a. WRC Direct) then I suggest you email your bug report to support@intersystems.comMore info abut InterSystems Support is here.
go to post John Murray · Jan 26, 2018 I also like this style, as it helps me spot the lines where execution at the current level might terminate.
go to post John Murray · Jan 26, 2018 There's some documentation here.In your case it sounds like a Cache instance was moved onto the server but not added to the registry that Cache's ccontrol command uses. On Windows I think Cache uses the Windows Registry. On other platforms it uses a file, and offers commands ccontrol create, ccontrol update and ccontrol delete to maintain entries in this registry.
go to post John Murray · Jan 19, 2018 If you're not already committed(!) to using Git, maybe consider Deltanji from George James Software (my employer) as a source code management solution running natively inside the InterSystems environment.
go to post John Murray · Jan 19, 2018 Possibly the OP has to work with a version of Cache / Ensemble etc that doesn't support Atelier?
go to post John Murray · Jan 19, 2018 Robert, my understanding of the h:\dev5\ suffix on the error string is that this indicates the directory holding the CACHE.DAT database where Malcolm's webservice class is located. I'm guessing his web application definition in Portal doesn't even have READ permission on that database.
go to post John Murray · Jan 17, 2018 Why not just use the "=" operator to compare your values, exactly as you have written in your examples?
go to post John Murray · Jan 15, 2018 I'm not clear what you mean by "access the Class Database". Connect Atelier to the SAMPLES namespace and you'll be able to view/edit classes from the SAMPLES database. Please expand on what else you're trying to do.
go to post John Murray · Jan 12, 2018 Alex, if you code it as an instance method (private or public) then you won't be able to call it from a classmethod (private or public) unless the caller has (or creates) an instance of its class. In other words, the decision about whether to code an instance method or a classmethod is surely independent of the decision about whether to mark that method private or public, no?