go to post Timothy Leavitt · Nov 30, 2022 @Eduard Lebedyuk - I just found this while looking to do the same thing. You say that adding a favorite is the easiest way - are there other approaches as well short of editing code you shouldn't edit?
go to post Timothy Leavitt · Nov 8, 2022 This is super exciting and I look forward to seeing what's next!
go to post Timothy Leavitt · Nov 3, 2022 @Evgeny Shvarov agreed - although it's good to be sure that you're developing on the same version that you're targeting in production.
go to post Timothy Leavitt · Nov 3, 2022 This is a good point. Fortunately, dictionary version updates are few and far between these days. (They used to happen all the time.)
go to post Timothy Leavitt · Oct 26, 2022 You could do something truly horrible and disgusting with the storage definition, like: <IndexLocation>@$Select($D(%SuppressIndexFile,0):"foo",1:"^DC.Demo.SuppressIndexFileI")</IndexLocation> But that would be truly horrible and disgusting. (Echoing Robert Cemper's comment, knowing why would help!)
go to post Timothy Leavitt · Oct 20, 2022 I've added two more questions at a colleague's suggestion: What has made an upgrade fail? When have you had to roll-back?
go to post Timothy Leavitt · Oct 19, 2022 @Julian Matthews thanks for the super quick reply! A follow-up question - do you tend to do maintenance release updates or just jump major versions?
go to post Timothy Leavitt · Oct 17, 2022 Not sure if this is what you're getting at, but one of the most exciting and unique things about ObjectScript is how natural it is to do metaprogramming (in the sense of writing ObjectScript that treats other ObjectScript code as data). Because all of your code is in the database, you can work with it from an object or relational perspective - see the %Dictionary package. There are to main ways of doing this: generators and projections. A generator produces the actual code that will run for a method or trigger in a class at compile time, typically based on the class definition. A projection adds side effects of compiling/recompiling/deleting the class (e.g., updating a global with metadata about the class, creating + queueing compilation of other classes). isc.rest has a lots of examples of both of these; here's a representative sample: %pkg.isc.rest.handlerProjection does a bunch of SQL/object updates to data after compilation %pkg.isc.rest.handler (which uses that projection) has a CodeMode = objectgenerator method that fails compilation of subclasses if certain methods are not overridden. %pkg.isc.rest.model.action.projection creates a separate class with dependencies on other classes properly declared and queues it to be compiled. The class created extends %pkg.isc.rest.model.action.handler which defines some methods with CodeMode = objectgenerator, though a separate class does the actual work of code generation.
go to post Timothy Leavitt · Oct 17, 2022 Here's the article: https://community.intersystems.com/post/reflection-cach%C3%A9
go to post Timothy Leavitt · Oct 6, 2022 Glad this was the first Google result for "docker required linux capability is missing"
go to post Timothy Leavitt · Oct 5, 2022 @Eduard Lebedyuk if you say zpm "install packagename" and you already have the latest version installed, it'll just reinstall the same package (rather than doing nothing, which is what Ron wants).
go to post Timothy Leavitt · Oct 5, 2022 @Ron Sweeney this seems like a good use case to define your own package with dependencies for the things you want to "install if not already installed" - installing your package will install those dependencies only if they haven't been installed. (And if the versions update, they'll be updated.) Alternatively, you could do something like: if '##class(%ZPM.PackageManager.Developer.Module).NameExists(packagename) { zpm "install "_packagename }
go to post Timothy Leavitt · Sep 19, 2022 Hard for any language to beat: ClassMethod makeComplement(d As %String) As %String { q $tr(d,"ATGC","TACG") }
go to post Timothy Leavitt · Sep 13, 2022 Not great around edge cases, but this passes the tests at least (and might beat a $find-based approach since it avoids set commands): ClassMethod findShort(s) As %Integer { f i=1:1 ret:$locate(s,"(^| )\w{"_i_"}( |$)") i }
go to post Timothy Leavitt · Sep 7, 2022 If the thing you're working with is actually some sort of configuration data then this is probably a good approach. If not then building your own integration to transmit the data is probably better.
go to post Timothy Leavitt · Sep 7, 2022 Why? This sounds like HealthShare; maybe using the Configuration Registry would be the right fit. See: https://docs.intersystems.com/hs20221/csp/docbook/DocBook.UI.Page.cls?KE...