Article Daniel Kutac · May 13 2m read

I'm sure most of you are familiar with utility %SYS.MONLBL that is crucial when analysing code performance bottlenecks. It allows you to select a number of routines that you want to monitor at runtime and also specify what process(es) you want to watch. BUT, what if you do not know exactly, what process would execute your code? This is true with many web based (CSP/REST) applications today. You want to minimize the resource utilization on your production system that needs analysis. So, how about doing a small tweak?

1. Define an INC file with these macros:

0
0 0
Announcement Daniel Kutac · Aug 27, 2020

A Webinar was held today for our Czech and Slovak partners and end users. This webinar was an online version of what we originally planned to present earlier this year in Fabrika hotel, Humpolec as a workshop. Due to the current epidemiologic situation a decision was made to move the workshop into the virtual space.

5
1 352
Article Daniel Kutac · Aug 21, 2020 3m read

Dynamic PoolSize (DPS) Experiment

Purpose:

Enhance Ensemble or IRIS production so it can dynamically allocate pool size for adapter-based components based on their utilization.

Sometimes, an unexpected traffic volume occurs, and default pool size allocated to production components may become a bottleneck. To avoid such situations, I created a demonstrator project some 2 years ago to see, whether it would be possible and feasible to modify production, so it allowed for dynamically modifying its components per their load.

3
0 584
Article Daniel Kutac · May 15, 2020 3m read

Hi, if you develop production with HealthShare, you may have noticed there is a nice tracing feature available - HS.Util.Trace.Operations. This feature allows visually tracing debug information, in structured way. It complements good old logging macros like $$$LOGINFO, $$$TRACE and alike.

I use this feature a lot. However, it has limited functionality, it works nice with classes that extend XML Adapter, streams or data types, but it doesn't work well with arbitrary objects that do no extend from XML Adapter.

2
0 760
Question Daniel Kutac · Apr 30, 2019

Hello,

I have a very simple web service that I'd like to secure via SAML Authorization with X.509 Certificates. I am, however struggling with documentation and my lack of cryptographic skills. (I do this just for educational purposes now, but need to use it in the future)

Does anyone have an example that shows how to construct a SOAP Client with adding all necessary security headers manually or point me to a decent learning resource?

Thank you very much!

1
2 1385
Article Daniel Kutac · Feb 11, 2019 4m read

Hi guys,

Couple days ago, a customer approached me with the wish to enhance their existing legacy application, that uses SOAP (Web)Services so it shares the same authorization with their new application API based on REST. As their new application uses OAuth2, the challenge was clear; how to pass access token with SOAP request to the server.

After spending some time on Google, it turned out, that one of possible ways of doing so was adding an extra header element to the SOAP envelope and then making sure the WebService implementation does what is needed to validate the access token.

1
3 12072
Announcement Daniel Kutac · Oct 29, 2018

We had our first meetup of the Prague Meetup for InterSystems Data Platform last Thursday!

As it was our first such venue, the attendance was not large, but we believe it was a good start. Those who attended could learn about new features that InterSystems IRIS brings to our partners and customers as well as listen to a presentation discussing what it takes to migrate from Caché or Ensemble to InterSystems IRIS and eventually containerizing their applications.

2
0 314
Question Daniel Kutac · Jul 3, 2018

Hi, every time I launch Atelier for the first time after my PC boot, it reports an error when trying to connect to a server.

Restarting Eclipse solves the issue and it no more manifests until next PC reboot.

Does anyone know how to avoid this issue? I run Windows 10, Java JRE 8

7
1 514
Article Daniel Kutac · Jun 14, 2018 1m read

I was approached recently by and end use who wanted to perform analysis of their databases and see how they could save some space by picking data good for deletion without harming the application. As part of investigation, they wanted to know sizes of globals within datasets. This can be achieved by various means but all of them provide data in text form only.

I thought I might be a good tool for database administrators in general - to see global sizes in a graphical way.

1
0 402
Question Daniel Kutac · Feb 6, 2018

Is there an API that would list classes within a given package? I can't find any. I do have a workaround that uses class index, but this query lists all classes available in the namespace and I have to filter those I want. But this is just unnecessary overhead.

If anyone has spotted such API, please let me know.

TIA!

Dan

3
1 1307
Article Daniel Kutac · Nov 10, 2017 1m read

As many of you, our partners, are more widely using modern UI frameworks to create client front-end, you may have encountered a question, "So how do I secure my data when I just finished developing all new fancy browser based client experience?"

The answer is easy. Use a standard, proven OAuth2 and OpenID!

"OK, but how can I do it? I have never done it before."

No problem, just have a look here, if your client is Angular (not AngularJS) based, there is a demo project available for you to review and get inspired!

1
0 1280
Question Daniel Kutac · Aug 3, 2017

Hello,

I have a series of data organized by time (year and month) so I can use a time dimension to drill down data. So far so good.

However, I need to display the data not by calendar years and months but rather by seasons. The season has 12 calendar months but starts in September. So I'd like to see the data from September / Year N to August / Year N+1 using the same hierarchy as normal time dimension.

Has anyone done something similar?

Obviously, the season can start by any month, not only September :)

TIA!

3
0 335
Article Daniel Kutac · May 3, 2017 1m read

It's almost a year since I have published a series of articles explaining how to configure Cache instance as a client / resource server / authorization server. By that time, the implementation of OAuth 2.0 was still a pre-release software.

With the advent of Cache version 2017.1 a lot has changed. OAuth 2.0 implementation is fully completed and supported. Numerous new features were added (e.g. dynamic client registration)  - see release notes here for full details - and configuration pages have been redesigned to a great extent as well.

3
0 550
Article Daniel Kutac · May 3, 2017 18m read

Created by Daniel Kutac, Sales Engineer, InterSystems

Part 3. Appendix

InterSystems IRIS OAUTH classes explained

In the previous part of our series we have learned about configuring InterSystems IRIS to act as an OAUTH client as well as authorization and authentication server (by means of OpenID Connect). In this final part of our series we are going to describe classes implementing InterSystems IRIS OAuth 2.0 framework. We will also discuss use cases for selected methods of API classes.

0
3 3527
Article Daniel Kutac · Apr 13, 2017 3m read

Recently, a partner company started to develop an Angular client for their Cache application. Together, we decided to leverage the power of Caché dynamic objects to exchange JSON encoded data between client and server parts. However, we realized that currently there is a gap in Cache JSON implementation that prevents simple use of traditional registered and persistent classes to exposed their data with the same ease as with XML. I wrote a small JSON adapter, that does the job and bridgers the gap. It's purpose is simple expose data described by a regular Cache class in a one-to-one fashion to

7
1 2234
Question Daniel Kutac · Mar 3, 2017

Hello 

I recently spent some time with Atelier, and tried to use it's inherited (from Eclipse) XSL transformation capabilities.

I have installed Exlipse XML Editor and Tools and Orangevolt XSLT - as it provides Saxon XSLT processor.

I have XSLT 2.0 transformation defined, that uses isc:evaluate() callback function to perform some server side code.

And here is my problem:  when I try to run XSL transformation of a file in my project, then as soon as the processor hits isc:evaluate() it fails. 

5
0 792
Article Daniel Kutac · Nov 17, 2016 2m read

Those of you, who work with DeepSee, might have spotted, that when working with a date hierarchy, there are several functions, allowing you to select a time function for a given level. E.g. for extracting a year from a date/time property when building date hierarchy, you simply use Year function. similarly for month number, quarter and so on. Sometimes, you may wish to see the time - namely hour numbers. For this there is a HourNumber function available with DeepSee. Unfortunately, this function converts time into 12 hours format suffixed with AM/PM to indicate day part. This is not, however,

7
0 475
Article Daniel Kutac · Sep 8, 2016 2m read

This short article was motivated by a problem of one of my customers. They use Ensemble to integrate many systems, some of them use just plain files.

So they naturally selected File Outbound Adapter to write into target file. Things were running smoothly for years, until recently, when the volume of data being written to the file reached large size of tens of megabytes. The operation took around half an hour to complete, causing timing problems where subsequent operations within the process had to wait, and third party system was not happy to wait so long.

2
0 841
Article Daniel Kutac · Aug 10, 2016 22m read

Created by Daniel Kutac, Sales Engineer, InterSystems

Warning: if you get confused by URLs used: the original series used screens from machine called dk-gs2016. The new screenshots are taken from a different machine. You can safely treat url WIN-U9J96QBJSAG as if it was dk-gs2016.

Part 2. Authorization server, OpenID Connect server

12
3 5694
Article Daniel Kutac · Jul 18, 2016 3m read

Cache tricks

Several years ago, long before Developer Community Portal was launched, I published a series of Caché tricks at one of Czech web sites. In this article, I’m posting translated version of one of them.

Capturing output of someone else’s methods or routines

Suppose you, or someone else created a useful method or routine, that was producing some computation that you’d like to benefit from, but the routine was writing output to process principal device.

4
0 2870
Question Daniel Kutac · Jun 21, 2016

Customer is using an ancient MSM based client Workstation for their application and they made a small change to their server code. They introduced property of %Double() and discovered an issue. The MSM workstation is not able to retrieve any property of an object instance that holds value of $double(0). see images illustrating the issue.

I'm posting this to DC intentionally before I eventually send it to WRC so others can comment.

Dan

Image 1 - data

image 2 - UI

1
0 590
Question Daniel Kutac · Jun 21, 2016

Customer is experimenting with %vid variable for selecting row numbering for sql queries. Basically he's trying to implement paging functionality.

He is confused that select %vid from (select ...) returns dummy number whilst select *,%vid from (select...) returns correct data.

4
2 1964
Question Daniel Kutac · Jun 10, 2016

this is catching  me all the time, again and again...

Haven't worked with XML VDOC for some time, I can't figure out, what is the correct way of using Property path. Can someone please help me to refresh my memory.

Simple example: I have a class called Body, with Value and Topic properties. I created a XML Schema for this class and imported it into Ensemble. So i have a category called message, with Body as DocType structure and Name and Topic properties of Body complex type ($2:Value and $2:Topic are element names)

My rule looks this way:

3
0 1308
Question Daniel Kutac · Jun 1, 2016

I need to pass a parameter string that contains slashes to a REST call.

I tried URL encoding, or making URL map to accept query parameter instead of path parameter but apparently we only allow for path parameters.

I can come with several workarounds, but these involve some transformation at client and then on server, but I'd prefer a direct support.

Q1: is there any Cache specific trick to pass slashes in path parameters

Q2: are we going to support query parameters in REST?

something like this would help: 

<Route Url="/test?var=:var" Method="GET" Call="Test" Cors="true"/>

 Dan Kutac

18
0 45679