Discussion Eduard Lebedyuk · Aug 21, 2023 AWS Batch Has anyone tried AWS Batch with InterSystems IRIS docker images? I have a noninteractive workload (but it requires internet access from the job to deliver results), so I'm considering using it as a simpler alternative to ECS since Fargate backs both, and that's enough for my use case. I wonder if anyone tried and cares to share the results, issues, cfn templates. #AWS #Cloud #InterSystems IRIS 0 1 0 180
Discussion Eduard Lebedyuk · Jul 28, 2023 Code Golf: Parenthesis Our previous code golf ended with an overwhelming win, so now it's time for another one. Parenthesis Hell is a Lisp-like esoteric programming language(esolang). As a Lisp-like language, the code consists only of nested matched pairs of opened and closed parenthesis. Your task is to write a method that receives a string of parenthesis and returns 1 if the order of the parenthesis is valid. For example, the string of parenthesis (())() is valid because it contains a matched pair of opened and closed parenthesis at each position. The string ()((()))) is not valid because it contains one unmatched parenthesis. #Code Golf #InterSystems IRIS 5 37 0 696
Question Eduard Lebedyuk · Jul 20, 2023 Caching inProc BOs between invocations? I have the following setup: REST broker calls inProc BO via BS. As BO initialization is time-consuming, I want to reuse the same BO during the CSP process lifetime. I have tried the following approaches: #Business Operation #Business Service #CSP #Interoperability #REST API #InterSystems IRIS 2 0 0 116
Question Eduard Lebedyuk · Jul 13, 2023 How can I run an iris sql command using AWS SSM? I'm trying to execute SQL on a EC2 via SSM: import boto3 instanceid = "i-123456789" sql = """SELECT path FROM Security.Applications WHERE ID = '/csp/sys'""" template = """su - irisusr -c 'cat << EOF | iris sql iris -U %SYS """ + sql + """ q EOF' """ template = [line.strip() for line in template.splitlines()] template = """\n""".join(template) ssm_client = boto3.client('ssm') response = ssm_client.send_command( InstanceIds=[instanceid], DocumentName="AWS-RunShellScript", Comment=AWS, Parameters={'commands': template}) #AWS #Cloud #SQL #InterSystems IRIS 0 0 0 196
Question Eduard Lebedyuk · Jun 15, 2023 How to import VSCode HL7 Custom Schema How to import Custom Schemas from VSCode? They look like this: <?xml version="1.0"?> <Category name="ITK" description="xmlns:hl7='urn:hl7-org:v2xml' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'" std="1"> <MessageType name='ACK' structure='ACK' returntype='ACK' description='xsi:schemaLocation="urn:hl7-org:v2xml ACK.xsd"'/> </Category> Instead of wrapped XML export produced by $system.OBJ: #HL7 #InterSystems IRIS #InterSystems IRIS for Health #VSCode 0 2 0 284
Article Eduard Lebedyuk · Jun 7, 2023 7m read Restoring production class using journals Recently I needed to restore a version of a production class, which was overwritten by compilation and running UpdateProduction. As the correct version was unavailable in the source control, I used journals to restore the data. Journals store a plethora of information about what's happening in the system and are quite a powerful tool. This article explains how to work with journals to extract the data you require. #Interoperability #Journaling #InterSystems IRIS 5 0 1 265
Question Eduard Lebedyuk · May 23, 2023 Abort system start at %ZSTART Is it possible to abort system start during SYSTEM^%ZSTART? If some conditions are not met, I want to shut down IRIS instead of continuing with the startup. #System Administration #InterSystems IRIS 1 7 0 298
Article Eduard Lebedyuk · May 23, 2023 1m read Production settings When developing interoperability productions, it might be useful to have settings outside of a Business Host. The primary reason is when you need a setting to affect several different Business Hosts and want to guarantee that the value is the same. While System Default Settings can be used to propagate settings for Business Hosts, they can be changed by overriding the value on a BH level (although the advantage of Business Host settings set via SDS is that they don't need custom code which our current approach requires).Another reason is when you need to affect non-setting parts of the Business Host configuration (PoolSize, Enabled, etc.) We will be adding an env setting to a production. #Interoperability #InterSystems IRIS 3 1 0 316
Article Eduard Lebedyuk · May 18, 2023 2m read Code Golf: String Rotations Let's have a round of Code Golf! String rotation is when you take a word and move some of its letters to the end of the word, so the first letter becomes the second letter, the second letter becomes the third, and so on. Last letter becomes first. Rotation can happen only in one direction →. Your task is to write a method that will receive two strings. It then must return an integer value of how many times needed to rotate the strings to be equal. As usual shortest solution wins. #Code Golf #InterSystems IRIS 4 14 0 392
Article Eduard Lebedyuk · Apr 26, 2023 2m read Removing large files from the repository history Git stores complete history - meaning you would never lose your files, even if they are deleted, they are still available. That, however, presents an issue if large or sensitive files have been committed. Deleting them DOES NOT remove them from history. Recently one of the repos I work on became unexpectedly large, so here's how you can resolve that: #Git #GitHub #Source Control #InterSystems IRIS 2 0 0 211
Question Eduard Lebedyuk · Apr 4, 2023 DML export Assuming I have an SQL table with data, is it possible to get DML export (INSERT statements for this data)? #Data Import and Export #SQL #InterSystems IRIS 0 4 0 351
Discussion Eduard Lebedyuk · Mar 2, 2023 Code Golf: Isogram It's time for a Code Golf round! Isogram A word or phrase that has no repeating letters, consecutive or non-consecutive. Implement a method that checks if the received string is an isogram or not.Assume the empty string is an isogram. Ignore the letter case. Allowed inputs: A-Z, a-z. As usual, the shortest solution wins! #Code Golf #Code Snippet #InterSystems IRIS 4 11 0 356
Article Eduard Lebedyuk · Feb 10, 2023 6m read Encrypted JDBC connection between Tableau Desktop and InterSystems IRIS In this article, we will establish an encrypted JDBC connection between Tableau Desktop and InterSystems IRIS database using a JDBC driver. While documentation on configuring TLS with Java clients covers all possible topics on establishing an encrypted JDBC connection, configuring it with Tableau might be a little bit tricky, so I decided to write it down. #Encryption #Java #JDBC #SQL #SSL #InterSystems IRIS 2 3 2 654
Discussion Eduard Lebedyuk · Jan 20, 2023 Code Golf: Pyramid New Year, new Code Golf! You will receive a positive integer for the number of floors. Your challenge will build a pyramid with a "#" character. As usual, the shortest solution wins. Input 3 Output # ### ##### also a valid output # ### ##### #Code Golf #Code Snippet #InterSystems IRIS 4 23 1 476
Question Eduard Lebedyuk · Jan 19, 2023 Autoscaling Business Service to consume available CPU I have a production with one Business Host - a Business Service which I need to scale automatically to consume ~80% of CPU time.Business Service pulls data from a (non-FIFO) queue so that I can adjust pool size without any issues. So far, I'm planning a different BS running every X seconds and sampling CPU with $system.Process.GetCPUTime() and scaling the pool size of the main BS up/down based on that metric. Has anyone tried something similar? Any advice/code samples would be appreciated. #Business Service #Interoperability #InterSystems IRIS 1 6 0 276
Question Eduard Lebedyuk · Jan 11, 2023 Inbound Adapter safe shutdown strategy In Interoperability productions Inbound Adapters extract and separate retrieval logic from actual payload processing, which is left to a BS. #Business Service #Interoperability #InterSystems IRIS 1 4 0 332
Question Eduard Lebedyuk · Nov 30, 2022 Iterating HS.SDA3.Container container twice I initialize a HS.SDA3.Container from a XML stream and I need to iterate over it twice. What is a correct way of doing it? Is it enough to adjust StreamPos/StreamOref? The optimal solution would be to use one loop, but it's not possible to combine the processing logic. #XML #InterSystems IRIS 1 4 1 472
Discussion Eduard Lebedyuk · Nov 9, 2022 Code Golf: Word Order We're back with a code golf! You will receive a string. Each word in the string will contain a number. This number is the position that word should have in the sentence. If the input string is empty, return an empty string. The output can only be in words, without the given numbers. Input "i2s T1his Te4st a3" Output This is a Test #Code Golf #Code Snippet #InterSystems IRIS 2 13 0 613
Article Eduard Lebedyuk · Nov 4, 2022 9m read VIP in AWS If you're running IRIS in a mirrored configuration for HA in AWS, the question of providing a Mirror VIP (Virtual IP) becomes relevant. Virtual IP offers a way for downstream systems to interact with IRIS using one IP address. Even when a failover happens, downstream systems can reconnect to the same IP address and continue working. #AWS #Cloud #Mirroring #InterSystems IRIS 12 5 4 2.9K
Article Eduard Lebedyuk · Sep 26, 2022 11m read Continuous Delivery of your InterSystems solution using GitLab - Part XI: Interoperability Welcome to the next chapter of my CI/CD series, where we discuss possible approaches toward software development with InterSystems technologies and GitLab. Today, let's talk about interoperability. Issue When you have an active interoperability production, you have two separate process flows: a working production that processes messages and a CI/CD process flow that updates code, production configuration and system default settings. Clearly, CI/CD process affects interoperability. But questions are: What exactly happens during an update? What do we need to do to minimize or eliminate production downtime during an update? #Business Process (BPL) #Continuous Delivery #Continuous Integration #Git #Interoperability #InterSystems IRIS 4 0 1 507