go to post Eduard Lebedyuk · Mar 5, 2016 InterSystems University Outreach Program (Russia). Each developer has his's own machine with his own Caché/Ensemble instance. We use Git source control system and there are several Studio integration plugins we offer, but mainly Cache-tort-git. Changes are commited to a central GitHub repository preferably via pull-requests (see GitHub workflow). Changes from GitHub repository are automatically pulled to a production server(s) with Cache GitHub Continuous Integration tool.
go to post Eduard Lebedyuk · Mar 3, 2016 Also ##Expression macro preprocessor command can be masked and distributed along several macros (which in turn can be distributed across several inc files). For example consider the following class: Class Utils.Macro Extends %RegisteredObject { /// do ##class(Utils.Macro).Test() ClassMethod Test() { #define Tab # #define Indent $$$Tab$$$Tab #define Start Expre #define End ssion($$$Call) #define Call ##class(Utils.Macro).GenerateNewClassObject(%classname) #define All $$$Indent $$$Start$$$End set b=$$$All } ClassMethod GenerateNewClassObject(cls As %String) { zw // custom logic depending on class may be implemented q "##class("_cls_").%New()" } } Note, that in this example full-text search for ##Expression would yield nothing. In here GenerateNewClassObject method would be executed on Utils.Macro class compilation. because $$$All macro would be evaluated to: ##Expression(##class(Utils.Macro).GenerateNewClassObject(%classname) Which in turn would be evaluated on the last line: set b=$$$All where GenerateNewClassObject would be called by ##Expression command. So I guess don't compile Caché ObjectScript from untrusted sources at all or check carefully what you compile.
go to post Eduard Lebedyuk · Mar 3, 2016 And for any macro definitions which contain ##Expression, ##Function, #Execute and ##SafeExpression. Also #If, #IfDef, #IfNDef conditions (any Caché ObjectScript expression) are evaluated at compile time.
go to post Eduard Lebedyuk · Mar 2, 2016 ClassMethod way to set a language for a session is: Do ##class(%MessageDictionary).SetSessionLanguage(lang) The interesting case would be $$$Text("englishtext") macros getting compiled on a new instance under a session in other language. Under these conditions the ^CacheMsg global would be written with "englishtext" values under session language. Which would be set as a default language for this domain (Messages in $$$Text are presumed to be written in domain default language, unless specified otherwise). To prevent that set domain default language or change session language before the compilation. As far as I remember importing message dictionary does not set default language for the domain itself.
go to post Eduard Lebedyuk · Feb 26, 2016 I stand somewhat corrected do $System.Process.Terminate() In %ZSTART(or ZAUTHENTICATE for that matter) does solve my problem. Seems like overkill, though. Really wanted just to return status.
go to post Eduard Lebedyuk · Feb 26, 2016 Exactly, what I want is two-factor authorisation but with my own authentication infrastructure for a second factor.
go to post Eduard Lebedyuk · Feb 26, 2016 Additional check is calling external device to provide rfid/biometric/whatever authentication on the user logged in to provide additional security level. Yes, application approach seems to be better.
go to post Eduard Lebedyuk · Feb 26, 2016 Tried both your suggestions, observed no change in authentication behaviour.
go to post Eduard Lebedyuk · Feb 24, 2016 I need to perform additional check during Cache user authorization. Is there any way to do that?
go to post Eduard Lebedyuk · Feb 24, 2016 How much does a standart 1-2cpu/1GB RAM/32Gb SSD virtual server with linux distro costs per month? I was unable to find it on their website.
go to post Eduard Lebedyuk · Feb 23, 2016 Great!RSS feed by tag works in Thunderbird. Main RSS feed still shows as invalid.Some thoughts about email integration:Replace the icon with a simple envelope icon - which is more recognizable. I can easily recognize the first three icons, but the last one I incorrectly accociate with msn logo After clicking on a "share via email bullton" I'm being redirected to a new page where I can send a message from communityportal@intersystems.com. I think you can raise convertion by using a simple mailto link (so default mail client pops up with a predefined topic and message instead of the new page) - so the person sharing the post can share from his own email account.
go to post Eduard Lebedyuk · Feb 21, 2016 1. They must be granted to either application or user 2. Only resources of Service, Application and User type could be used there. %DB are database resources 3. SMP -> Menu -> View Roles -> Choose the role "webapp-admin" -> General Tab -> Priveleges -> Add -> choose the resoure -> OK -> Save Repeat for webapp-user 4. Like this: Parameter RESOURCE = "ResourceName1:Permission,ResourceName2,ResourceName3:Permission"; Where Permission is one of: READ, WRITE, USE If Permission is skipped (see ResourceName2) then USE permission is checked.
go to post Eduard Lebedyuk · Feb 19, 2016 Here's an aggregation rss feed which combines the Community Portal RSS and InterSystems StackOverFlow RSS tags. It's available here and works with Thunderbird.
go to post Eduard Lebedyuk · Feb 19, 2016 Have you thought about uploading this projects on GitHub?UPD. Nevermind, seen your message about GitHub in another topic.
go to post Eduard Lebedyuk · Feb 19, 2016 If you paste table from somewhere else, when creating a post, sometimes borders may be undisplayed. To fix that switch into HTML view (via "Disable rich-text" button) and find the beginning of your table definition. It would look somewhat like that: <table class="confluenceTable"> And replace it with: <table border="1" cellpadding="1" cellspacing="1">