Question Dmitry Maslennikov · Mar 6, 2019

Let's imagine you have only SQL. You need some table where you should increment value in some property when you update this line.

We have the table

CREATE TABLE "test" (
  "identifier"   VARCHAR(200) NOT NULL,
  "value"        INTEGER,
  PRIMARY KEY ("identifier")
)
6
0 845
Announcement Dmitry Maslennikov · Mar 4, 2019

Hope most of you already familiar with project CachéQuality from @Daniel.Tamajon. For those who don’t know about it, it is a static syntax analyzer for your code written for InterSystems products. It may help you to find and solve many different types of issues in your code, and even possible bugs before clients will find it in production. So, with help of CachéQuality you will be able to deliver a better product. You can find the complete list of rules used to check ObjectScript code here.

It was already available in Studio. And now it is also available in VSCode.

41
1 2316
Announcement Dmitry Maslennikov · Feb 17, 2019

I'm pleased to announce the latest version of extensions for ObjectScript. Just a month has gone since my latest update, and I already have something new to show.

Important. In this version connection to the server will be disabled by default. You have to activate connection through the settings:"objectscript.conn.active" = true.

12
1 1174
Announcement Dmitry Maslennikov · Nov 28, 2018

Are you ready for the next Advent of Code this year?

Just a few days left, the first puzzles will unlock on December 1st at midnight Eastern Time.

Not sure if I will manage to find time to solve those puzzles as quickly as last year, but hope some of you will do. We still have our leaderboard, you can join 130669-ab1f69bf.  So, we will see who the best.

4
0 594
Article Dmitry Maslennikov · Nov 5, 2018 13m read

I bet that not everyone familiar with InterSystems Caché knows about Studio extensions for working with the source code. You can actually use the Studio to create your own type of source code, compile it into interpretable (INT) and object code, and sometimes even add code completion support. That is, theoretically, you can make the Studio support any programming language that will be executed by the DBMS just as well as Caché ObjectScript. In this article, I will give you a simple example of writing programs in Caché Studio using a language that resembles JavaScript. If you are interested, please read along.

6
6 1322
Announcement Dmitry Maslennikov · Sep 24, 2018

I have already mentioned my project CacheBlocksExplorer recently in two articles

  1. Internal Structure of Caché Database Blocks, Part 2
  2. Internal Structure of Caché Database Blocks, Part 3

Now I would like to inform that this project can be easily run with docker.

Version for Caché and for InterSystems IRIS, now publicly available on docker hub.

Remember that you need the appropriate license key (for RedHat Linux) to be able to run this project.

Caché

docker run -d --rm \
 -p 8080:57772 \
 -v ~/cache.key:/usr/cachesys/mgr/cache.
0
1 378
Article Dmitry Maslennikov · Sep 4, 2018 1m read

GlobalSummit too close now, so many people going to be there from so many companies. I'm sure that somebody already uses Docker or even Kubernetes in their work, I do. And would like to share my experience and thoughts about what could be better. And want to hear other people about their experience, how you use Docker, what issues have you faced and how did you solve it. I think InterSystems will help us to find time and place when we could do it, and hope @Luca Ravazzolo will join us. I think It also could be good as the topic at Unconference.

3
0 395
Question Dmitry Maslennikov · Aug 31, 2018

I faced with the issue when WebSocket connection just fails without any errors if I send data with size 384 bytes and more (In binary mode the same). As I know by standard WebSockets frame does not have such limitation. Is there any way how to decrease it? This limitation too small, it is too difficult to fit this size and needs to send data much more often than I expected. Tested with Caché 2016.2, 2017.2 and IRIS 2018.1.

2
0 845
Question Dmitry Maslennikov · Jul 20, 2018

Just got the new beta version of Docker, with depreciation warning of AUFS. It's so bad news when InterSystems does not support used by default storage driver overlay2. Recently I thought to play with Google Kubernetes Engine, and realized that I can't work with InterSystems products there due to incompatibility with Storage Driver. Maybe it's already time to think about support?

5
0 846
Question Dmitry Maslennikov · Nov 24, 2016

Just curious how many companies use in their work Docker containers, I mean not only with InterSystems products. And if such companies exist, which of them uses docker and doesn't  use it for InterSystems products  by some reasons. What are the reasons? For companies which already uses InterSystems in containers, how do you use it? Development environment, testing or even in production ?

And if you don't use but thought about it, what are the reasons which stop you.

2
0 902
Article Dmitry Maslennikov · Oct 11, 2016 5m read

This text is a continuation of my article where I explained the structure a Caché database. In this article, I described the types of blocks, connections between them and their relation to globals. The article was purely theoretical. I made a project that helps visualize the block tree - and this article will explain how it works in great detail.

3
1 2272
Article Dmitry Maslennikov · Oct 3, 2016 6m read

InterSystems Caché globals provide very convenient features for developers. But why are globals so fast and efficient?

Theory

Basically, the Caché database is a catalog having the same name as the database and containing the CACHE.DAT file. On Unix systems, the database can also be an ordinary disk partition.

All data in Caché is stored in blocks which, in turn, are organized as a balanced B* tree. Taking into account that all globals are basically stored in a tree, global's subscripts will be represented as branches, while values of global's subscripts will be stored as leaves.

10
7 5650
Question Dmitry Maslennikov · Sep 17, 2016

Working on implementation FHIR to my project, I found interesting project HAPI-FHIR, which could help me to quickly launch my FHIR api server with InterSystems Caché as a storage, because this projects uses Hibernate to connect to database, as an example they use DerbyDB. I tried to change settings to use InterSystems Caché, but unfortunately it does not work and throw some errors inside HIbernate. As I found in Caché documentation, I have not some many options, I just have to set Cache dialect, and set database url.  This projects uses Hibernate 5.

13
0 1854
Question Dmitry Maslennikov · Sep 9, 2016

Some time ago, I was started to work at a new company even in other country, and more important in a different sphere when I have not been worked before, in HealthCare. It's a very new project even for company. Since I have not experience in HealthCare, I looked at what I can use in my project, and found that I should not reinvent the bicycle, and think about how to store all my data which I need and how to get access to this data. And I can use FHIR, which is looks like everything what I need, what else I need it's just a client.

2
0 511
Article Dmitry Maslennikov · Feb 23, 2016 14m read

Developing an idea with RuleEngine in XData, we could even refuse from editing full class and edit only valuable xml. Sometime ago I have already written an article(in russian) about such possibility, even more, in that article I wrote about compilable JavaScript to Caché. 

Opening File

This possible with %Studio.AbstractDocument. While extending this class, developer should add a Projection.

  Projection RegisterExtension As %Projection.
2
0 1148
Article Dmitry Maslennikov · Feb 21, 2016 6m read

Some days ago Alberto has written a very interesting article about the usefulness of ObjectGenerators available in Caché.

In this article, Alberto shows an example RuleEngine based on XData, and how it is possible to improve the process of filling such rules. Caché Studio has a Studio Asist for XData; you may have already seen examples of it if you use ZEN or %Installer.Manifest.

We can use the %XGEN.AbstractDocument class for our task. Unfortunately, InterSystems has marked these classes (all of classes in %XGEN, in fact) as for internal use only.

2
0 1017
Question Dmitry Maslennikov · Feb 18, 2016

XData blocks in Caché classes has a MimeType property, and dcoumentation says

MimeType — The MIME type (more formally, the internet media type) of the contents of the XData block. The default is text/xml

But unfortunately I can't set any other values, such as text/html or application/javascript, because XData still expect only XML. 

So, question is, for what reasons this property was appeared?

It would be very usefull to set in this property anything other then text/xml, and Studio would highlighted it as developer expected.

3
0 559
Article Dmitry Maslennikov · Dec 4, 2015 1m read

Database Blocks Explorer for InterSystems Caché

Key features

Tree explorer
  • Shows tree of database blocks;
  • Export tree as SVG or PNG image;
  • Shows every node in the block;
  • Open any block just by clicking on node in parent block;
  • Reload block info by clicking at the same node second time;
  • Zoom in and out, fit and navigator;
  • Easy way to switch between view modes (tree/map);
Fragmentation map
  • Shows every block with the same colour for every globals;
  • Legend for globals;

Installation

Minimal supported version is 2015.3 or 2016.1.

8
0 565