Announcements

I am pleased to announce the field test of Caché and Ensemble 2016.2 -  an exciting new release with improvements on many different fronts.

The entire product team at InterSystems looks forward to your participation in the field test and feedback over the coming months.

Some of the more profound changes in 2016.2 include:

  • Atelier - the new multi-platform IDE for Caché, Ensemble and HealthShare.
  • Introduction of a DOCUMENT data model (extending the reach of our multi-model capabilities)
  • Concurrent management and configuration of many servers

As always, there are a host of scalability and performance improvements, including improvements to the core database, ECP and SQL.  And hundreds of smaller improvements and corrections.

Summary details of these changes can be found HERE

Last comment 29 March 2016
+ 6   0 8
829

views

+ 6

rating

Hi everyone,

 

are you curious which topics we are going to cover at this year’s Global Summit? You have come to the right place! I will provide you with a sneak peek of what you can expect from the areas I am responsible for.

Last comment 5 September 2018
+ 5   1 3
660

views

+ 5

rating

Hi Community!

Here is a digest of articles, announcements, and questions posted last week on InterSystems Developers.

Announcements

Developer Community

InterSystems IRIS

Questions

Ensemble

0   0 1
0

comments

10

views

0

rating

This post is intended to guide you through the new JSON capabilities that we introduced in Caché 2016.1. JSON has emerged to a serialization format used in many places. The web started it, but nowadays it is utilized everywhere. We've got plenty to cover, so let's get started.

Last comment 11 January 2019
+ 32   1 33
6969

views

+ 32

rating

I'm pleased to announce the latest version of the renewed for ObjectScript, which is now available with a lot of new features.

This new extension is a fork of previously developed extension in different repository originally started by @Oleg Dmitrovich.

Last comment 17 February 2019
+ 23   10 4
882

views

+ 23

rating

This post will show you an approach to size shared memory requirements for database applications running on InterSystems data platforms including global and routine buffers, gmheap, and locksize as well as some performance tips you should consider when configuring servers and when virtualizing Caché applications. As ever when I talk about Caché I mean all the data platform (Ensemble, HealthShare, iKnow and Caché).


A list of other posts in this series is here

Last comment 22 August 2017
+ 19   3 11
5217

views

+ 19

rating

Have some free text fields in your application that you wish you could search efficiently?  Tried using some methods before but found out that they just cannot match the performance needs of your customers?  Do I have one weird trick that will solve all your problems?  Don’t you already know!?  All I do is bring great solutions to your performance pitfalls!

As usual, if you want the TL;DR (too long; didn’t read) version, skip to the end.  Just know you are hurting my feelings.

If you open up your version of Sample.Company in the SAMPLES namespace of a recent (2015.1 or later) Caché/Ensemble/HealthShare version you will see a Mission field that is pseudo-randomly generated text.  Suppose we want to search this text field.  For the purpose of this exercise, I generated about 256,246 companies – feel free to populate some on your own and follow along.  Well you might run the following query

Last comment 10 May 2019
+ 19   1 3
1225

views

+ 19

rating

The topic of for/while loop performance in Caché ObjectScript came up in discussion recently, and I'd like to share some thoughts/best practices with the rest of the community. While this is a basic topic in itself, it's easy to overlook the performance implications of otherwise-reasonable approaches. In short, loops iterating over $ListBuild lists with $ListNext or over a local array with $Order are the fastest options.

As a motivating example, we will consider looping over the pieces of a comma-delimited string.

A natural way to write such a loop, in minimal code, is

Last comment 3 October 2016
+ 18   0 12
4373

views

+ 18

rating

 

Estimated reading time: 6 minutes
 

Hello everyone,

I was first introduced to TDD almost 9 year ago, and I immediately fell in love with it. 
Nowadays it's become very popular but, unfortunately, I see that many companies don't use it. Moreover, many developers don't even know what it is exactly or how to use it, mainly beginners.

 

 

Overview

My goal with this article is to show how to use TDD with %UnitTest. I will show my workflow and explain how to use cosFaker, one of my first projects, which I created using Caché and recently uploaded to OpenExchange.

So buckle up and let's go.

Last comment 18 April 2019
+ 17   6 1
348

views

+ 17

rating


Hello!

This article is a small overview of a tool that helps to understand classes and their structure inside the InterSystems products: from IRIS to Caché, Ensemble, HealthShare.

In short, it visualizes a class or an entire package, shows the relations between classes and provides all the possible information to developers and team leads without making them go to Studio and examine the code there.

If you are learning InterSystems products, reviewing projects a lot or just interested in something new in InterSystems Technology solutions — you are more than welcome to read the overview of ObjectScript Class Explorer!

Last comment 3 July 2018
+ 17   1 11
3149

views

+ 17

rating

Your application is deployed and everything is running fine. Great, hi-five! Then out of the blue the phone starts to ring off the hook – it’s users complaining that the application is sometimes ‘slow’. But what does that mean? Sometimes? What tools do you have and what statistics should you be looking at to find and resolve this slowness? Is your system infrastructure up to the task of the user load? What infrastructure design questions should you have asked before you went into production? How can you capacity plan for new hardware with confidence and without over-spec'ing? How can you stop the phone ringing? How could you have stopped it ringing in the first place?

Last comment 30 September 2016
+ 17   2 19
2209

views

+ 17

rating

I am pleased to announce the immediate availability of Atelier 1.0

This is the debut release of our new Eclipse based plugin for developing code on Cache and Ensemble.

Highlights include

  •     Integrated Source Management
  •     Debugging
  •     Context based documentation
  •     Server Side browsing of multiple systems
  •     Compilation and Testing facilities

Atelier will be released independently of various server releases. The first versions of Cache and Ensemble that fully support Atelier are 2016.2 and higher. Facilities within Atelier itself will manage updating as we make newer versions available. You can download the Atelier client for the OS of your choice here:

https://download.intersystems.com/download/atelier.csp

The release notes for the 1.0 release can be found here

Last comment 2 December 2016
+ 17   0 1
937

views

+ 17

rating

In the last post we scheduled 24-hour collections of performance metrics using pButtons. In this post we are going to be looking at a few of the key metrics that are being collected and how they relate to the underlying system hardware. We will also start to explore the relationship between Caché (or any of the InterSystems Data Platforms) metrics and system metrics. And how you can use these metrics to understand the daily beat rate of your systems and diagnose performance problems.

Last comment 24 March 2018
+ 16   1 16
2070

views

+ 16

rating

The Art of Mapping Globals to Classes 1 of 3

Looking to breathe new life into an old MUMPS application?  Follow these steps to map your existing globals to classes and expose all that beautiful data to Objects and SQL.

By following the simple steps in this article and the next two you will be able to map all but the craziest globals to Caché classes.  For the crazy ones I will put up a zip file of different mappings I have collected over the years.  This is NOT for new data; if you don’t already have existing global please just use the default storage.

If you still can’t make heads or tails of your globals, send some example data to Support@InterSystems.com and we will be happy to help you figure it out.

Steps for mapping a global to a class

Last comment 1 February 2019
+ 16   1 15
2419

views

+ 16

rating

This is a  rather personal view on the history before Caché.
It is in no sense meant to compete with the excellent books from Mike Kadow  discussed in an earlier article.
We have different history and so this is meant to create a different prospective of the past.

The whole story started in 1966 at MGH (Mass.General Hospital) on a PDP-7 Ser.#103
with 8K of memory (18-bit words) [ today = 18K byte ]  as a spare system

Last comment 12 September 2017
+ 16   0 11
880

views

+ 16

rating

Cache rendering of an old classic:

 s enc="dQZ4nK1VzU7DMAy+I/EEveTcCWicpt3UU2VABTRA/AhBeYW+As/U7vE4VNhxypJuoAlhS1vixJ//"_
 "06TNsy5p4TppzRKTNqtMXuXQjSSrdEPSEmmtK1uZssp1l0Z3nHJ9fEQroJURlQLHNE35WPYWx7N3"_
 "YpJYkeRe4mQzkEKuGDwjkHTBP+9JW4oUsB+Y2CVj2JuttlkFAbhbfdIuRU/jhvZkryejtNok7UpO"_
 "Moww3JbdcPifW8APosVi4Q9Otwck5LMojmKOojNnDUIXe0XEvnVrdaEeiF95H8BYgXG38o6i0Vpg"_
 "lhSO00TVkN6VelRPaq1q9ehucnizrGopJ5TY+8zHzOBSPih8jjnLQWbyKSYy25Cpe+JXMTdM2dZS"_
 "cbAu3YP42EQw4GOq1a16VjfEtWoCGHJdS5dAjkPoYgRTCsw8DG4MaSAw2G++KfA6So0v9xTJVmHD"_
 "0UjTAeD4TQ7oRr1EMMbXm2N6IyO1AxtDLS2NCBqHiCIYX+9hLxGGtCxk2Me0D8Q5eknNcafW0j47"_
 "SiBNqVcYTSHEM3ASTfwvogDB4qFKc9G+YTzYg4yfqYyfqd2M6O6KqnOh3vgaK1SHIP8403/IitX/"_
 "khVb/JYVkBdCh4/53gmCHyZoh3kApk/BrNdcOsBMDzb/hCPEI+zfA/fnvjTWnn8BUo3vtEE=" 
 s enc=$SYSTEM.Util.Decompress($SYSTEM.Encryption.Base64Decode(enc))
 w enc

Share more ANSI art!

Merry XMas and a Happy New Year!

Last comment 31 December 2016
+ 16   0 9
627

views

+ 16

rating

Index to Articles

Hi All

I am an avid user of ZEN for over 10 years now and it works for me.
But it seems that Intersystems are no longer actively developing it (or ZEN Mojo), the only published reference to this  is here

As an aside, Intersystems makes fine products (I have been using the technology for 35 years) and has great support BUT they are not good at being open with their product road map/retirement plans.  This is very embarrassing  to me when talking with my end user clients.

Last comment 11 May 2018
+ 16   0 8
1049

views

+ 16

rating

So, one day you're working away at WidgetsDirect, the leading supplier of widget and widget accessories, when your boss asks you to develop the new customer facing portal to allow the client base to access the next generation of Widgets..... and he wants you to use Angular 1.x to read into the department's Caché server.   

There's only one problem:  You've never used Angular, and don't know how to make it talk to Caché.

This guide is going to walk through the process of setting up a full Angular stack which communicates with a Caché backend using JSON over REST.  


This is a parent page for the multipart series on creating a Material-Angular1x-REST-JSON-Caché application.  The current list of articles is

Last comment 13 December 2018
+ 16   3 10
3281

views

+ 16

rating

When using Studio, ODBC or a terminal connection to Caché or Ensemble, you may have wondered how to secure the connection. One option is to add TLS (aka SSL) to your connection. The Caché client applications - TELNET, ODBC and Studio - all understand how to add TLS to the connection. They just need to be configured to do it.

Configuring these clients is easier in 2015.1 and later. I'm going to be discussing this new method. If you're already using the old method, it will continue to work, but I would recommend you consider switching to the new one

+ 15   0 5
0

comments

2111

views

+ 15

rating

As a developer, you have probably spent at least some time writing repetetive code. You may have even found yourself wishing you could generate the code programmatically. If this sounds familiar, this article is for you!

We'll start with an example. Note: the following examples use the %DynamicObject interface, which requires Caché 2016.2 or later. If you are unfamiliar with this class, check out the documentation here: Using JSON in Caché. It's really cool!

Example

You have a %Persistent class that you use to store data. Now, suppose that you are ingesting some data in JSON format, using the %DynamicObject interface. How do you map the %DynamicObject structure to your class? One solution is to simply write code to copy the values over directly

Last comment 22 November 2016
+ 15   0 7
1080

views

+ 15

rating

Greetings, InterSystems community!

I am pleased to announce that the web terminal project, Caché WebTerminal version 4 gets its release! After long period of enhancing this web application from 2013, it came to the version 4, which features major stability and security improvements, intelligent autocomplete and syntax highlighting, convenient SQL mode and a lot of other useful features.

The goal of this article is to spread the knowledge about this project over the InterSystems community.

Last comment 26 February 2019
+ 15   2 8
1741

views

+ 15

rating

Preface: our small, but very ambitious company called “Black Mushroom Studio” came up with an idea for an e-commerce project and a mobile app that would let users pay for certain goods/services via a payment aggregator.

 

What we had initially: an Android app skeleton that, of course, liked communicating via HTTP and JSON, and a payment system with an API – web services with SOAP content.

 

Goal: make it all work together.

Last comment 22 September 2016
+ 15   0 7
983

views

+ 15

rating

Index to Articles

Hi All

It's been 6 weeks since my original article sad
- - - - -but I have been busy on this project smiley

I have been looking at/thinking about a replacement for ZEN for around 12 months but only really started in depth 4 months ago.
Also been in IT for long enough that I can "get a feel" for a product/technology and make decisions accordingly without going into great detail. 
Any new technology has a learning curve and I don't want to waste time and effort on something that won't fly. 
And, as always, I am looking to minimise the learning curve as I want to concentrate on delivering business benefit. 

Last comment 11 April 2019
+ 15   0 4
452

views

+ 15

rating

This 'feature' have been around for a long time, but I don't see any articles on it so I thought I would make everyone aware.

A method is provided to customize the appearance of the Cache cube icon in the system tray so different instances can be visually distinguished.  When csystray.exe, the Cache/Ensemble cube program, starts, it will look for files named "up.ico" and "down.ico" in the \bin directory below the instance installation directory.  If these .ico files are present, csystray.exe will load the icons and display them in place of the default blue and gray Cache/Ensemble cube icons.  These files should each contain a single small (16x16) icon.

In order for the change to take affect, you need to exit the cube and then start it again from the Start menu (note - obviously this only works on Windows as the Cube doesn't run on other platforms)

Last comment 7 September 2017
+ 14   0 8
476

views

+ 14

rating

Date range queries going too slow for you?  SQL Performance got you down?  I have one weird trick that might just help you out! (SQL Developers hate this!)*

If you have a class that records timestamps when the data is added, then that data will be in sequence with your IDKEY values - that is, TimeStamp< TimeStampif and only if ID1 < IDfor all IDs and TimeStamp values in table - then you can use this knowledge to increase performance for queries against TimeStamp ranges.  Consider the following table

Last comment 4 June 2018
+ 14   1 9
5038

views

+ 14

rating

Enterprises need to grow and manage their global computing infrastructures rapidly and efficiently while simultaneously optimizing and managing capital costs and expenses. Amazon Web Services (AWS) and Elastic Compute Cloud (EC2) computing and storage services meet the needs of the most demanding Caché based application by providing
 a highly robust global computing infrastructure.

+ 14   3 9
0

comments

4361

views

+ 14

rating