go to post Eduard Lebedyuk · Sep 29, 2017 I don't think there's an option to export inc files from this dialog.If you often need to move production between environments writing your own deploy script can save you time on clicking through the UI.
go to post Eduard Lebedyuk · Sep 29, 2017 You can use pure javascript to do that: function PrintAll() { var files = ["file1.pdf", "file2.pdf", "file3.pdf"]; for (var i = 0; i < files.length; i++) { var newWindow = window.open(files[i], "print"); newWindow.print(); newWindow.close(); } }
go to post Eduard Lebedyuk · Sep 29, 2017 Your options are:Try to compile crypt only under win x64 (libc as a whole can't be compiled under windows, but maybe you can compile crypt module)PHP doc you referenced states that PHP has it's own fallback implementation when OS does not provide crypt implementation. Check where does PHP search for crypt implementation on windows - it's probably some C lib and call it tooWrite the algorithm yourself, here's a good guide on thatUse another more secure hashing algorithm, for example SHA-512
go to post Eduard Lebedyuk · Sep 28, 2017 There is also CNA project - it provides an interface for using native C-compatible shared libraries without anything but Caché ObjectScript code. CNA is a wrapper for libffi. CNA consists of native library (libcna) and Caché class (CNA.CNA). It is a wrapper around $zf functions (you can use them directly too).Here's the code to call crypt using CNA: Class CNA.Crypt { /// do ##class(CNA.Crypt).Crypt() ClassMethod Crypt(key = "2Ggaobjb", salt = "$1$1a2b3c4d$") { set cna = ##class(CNA.CNA).%New("/InterSystems/forCLM/libcna.so") ; Creates object of CNA.CNA class. do cna.LoadLibrary("/lib/x86_64-linux-gnu/libcrypt-2.23.so") ; Loads C standard library (crypto) in CNA set keyPointer = cna.ConvertStringToPointer(key) ; Converts the string into char array, and saves pointer to the first element set saltPointer = cna.ConvertStringToPointer(salt) set argTypes = $lb(cna.#POINTER, cna.#POINTER) ; function argument types set result = cna.CallFunction("crypt", ; Passes the name of the function, cna.#POINTER, ; type of return value, argTypes, ; list of argument types, keyPointer, saltPointer) ; and comma-separated arguments */ write cna.ConvertPointerToString(result), ! do cna.FreeLibrary() } } Sample output: do ##class(CNA.Crypt).Crypt() >$1$1a2b3c4d$Y5tt50CQ12xW2saeYnI43. do ##class(CNA.Crypt).Crypt("ABC", "$1$12345678$") >$1$12345678$0QgUhxfT5h1pvtkhF5pzx/
go to post Eduard Lebedyuk · Sep 28, 2017 All encryption and hashing are available in %SYSTEM.Encryption class and $zcrc function. Check MD5Hash method. But it doesn't accept salt.What do you want to do?
go to post Eduard Lebedyuk · Sep 27, 2017 Write ##class(Security.Resources).Export("C:\Resources.xml") Write ##class(Security.Resources).Import("C:\Resources.xml")
go to post Eduard Lebedyuk · Sep 27, 2017 "Print" SVG to file or stream. It depends on what you want to do with the image.For example opening this popup as a separate tab and capturing all web page with auto-scroll would yield a complete bp image. If you're talking about nested whiles and such, I don't think there's an easy way to expand them all into one diagram.
go to post Eduard Lebedyuk · Sep 27, 2017 This condition is insufficient for multi-level inheritance (C is a subclass of B, B is subclass of A. So C is subclass of A but Super wouldn't show this information). More on that in here.
go to post Eduard Lebedyuk · Sep 27, 2017 SMP -> Ensemble -> Build -> Business Processes -> [Open your BP] -> Show print friendly version of diagram -> Print that page.EnsPortal.SVG.SVGPrint.zen page outputs the SVG image so if you need you can subclass it to print SVG to file or inject into some document.
go to post Eduard Lebedyuk · Sep 26, 2017 SQL gateway connections settings are stored in %SQLConnection class and the corresponding %Library.sys_SQLConnection table. Note that passwords are stored in encrypted form, so you can't get them as a plaintext. Also password may be stored as a part of system ODBC configuration, so there would be no password at all stored in Caché.
go to post Eduard Lebedyuk · Sep 22, 2017 Assuming you're on 2016.2+: set payload = "{""profile_id"":""9XOzzcI8NfSUjxAhEt0cTLRejwmp6HPi"",""biometrics"":[{""timestamp"":""2017-05-17T13:45:40"",""utc_offset"":""+02:00"",""resting_heartrate"":120.0,""spo2"":98.0,""activity_id"":""591c540aac8f295479ee14ce""}]}" set obj = {}.%FromJSON(payload) write obj."profile_id" >9XOzzcI8NfSUjxAhEt0cTLRejwmp6HPi write obj.biometrics.%Get(0).timestamp >2017-05-17T13:45:40
go to post Eduard Lebedyuk · Sep 22, 2017 When would Experience Labs be available on learning.intersystems.com?
go to post Eduard Lebedyuk · Sep 21, 2017 It's really not.You can have "On Demand" task and call it from %ZSTART. This way you can have task scheduler reporting and execute task only when it's required.
go to post Eduard Lebedyuk · Sep 20, 2017 Is there any reason to use Task Manager instead of %ZSTART? Anyway you can have a task that runs hourly, and checks for existence of ^CacheTemp.MyTask global. If the global does not exist, set it and execute the task. If the global exists - quit. Since restart wipes CacheTemp, the global wouldn't exist on startup.
go to post Eduard Lebedyuk · Sep 20, 2017 What if I have extra properties such as InsertTime in the Test.cvs class?What about them? When you call %SQL.Util.Procedures:CSVTOCLASS you need to specify rowtype, corresponding to your CSV structure. If you have InsertTime property you need to reflect it and any other properties CSV has in your rowtype.
go to post Eduard Lebedyuk · Sep 20, 2017 In Ensemble Visual Trace you can filter by Business Host. To do that:Open Ensemble Visual TraceClick on the Business Host you needIn Apply Filter dropdown choose the filter you need (Host or Corresponding)Visual trace would be filtered to messages sent to/from specified Business Host
go to post Eduard Lebedyuk · Sep 20, 2017 Here's how:SMP > Ensemble > Production Configuration > Your Business Service > Settings > Additional Settings > Schedule > Press on the the looking glassIn Schedule Spec Editor press "New"Specify Schedule name and press OKSet "Raw String" schedule or use "Add action" specify a schedulePress "Save spec"Schedule setting in your Business Service should be set nowRestart your Business Service
go to post Eduard Lebedyuk · Sep 20, 2017 To run Business Service once an hour:Specify Ens.InboundAdapter as an adapter for your Business ServiceOn Production Configuration page, in Business Service configuration set Call Interval to 3600.Restart Business Service. It would now be run once an hour (every 36000 seconds)
go to post Eduard Lebedyuk · Sep 20, 2017 To convert string of any format into $horolog, use TO_DATE function: w $SYSTEM.SQL.TODATE("20160105125915","YYYYMMDD") >63922 To convert string of any format to timestamp use TO_TIMESTAMP function: w $SYSTEM.SQL.TOTIMESTAMP("20160105125915","YYYYMMDDHHMISS") >2016-01-05 12:59:15 These functions are available in Caché ObjectScript and SQL.