Announcement Evgeny Shvarov · Dec 3, 2019

Hi Developers!

I'm pleased to announce that ObjectScript package publishing is now generally available on Open Exchange with this November 2019 release!

If you want your ObjectScript application to be published in ObjectScript Package Manager just enable "Publish in Package Manager" option:

And send the app on approving.

Once the application is approved it will be published automatically in ObjectScript Package Manager Registry and will be available for installation via ZPM client.

See the details below.

5
2 585
Announcement Evgeny Shvarov · Dec 2, 2019

Hi Developers!

For those who want to participate in the Advent of Code 2019 and code with ObjectScript in IRIS, I created a very simple but handy Github Template.

Use the green button

to copy template in your own repo, clone the repo and run in the repo folder:

docker-compose up -d

you will get InterSystems IRIS 2019.4 Community Edition running with the template classes to load input data from files and Day1 solution.

This is also set up to start crafting solutions of Advent of Code 2019 and edit, compile and debug ObjectScript with VSCode addon.

Happy coding with Advent of Code 2019!

0
0 314
Announcement Evgeny Shvarov · Dec 2, 2019

Hi Developers!

This is the digest of new solutions and applications submitted to InterSystems OpenExchange in November 2019!

New applications in November 2019

BridgeWorks VDM by Tony Coffman

BridgeWorks VDM is an ad hoc reporting and graphical SQL query application.

Designed for any user who needs access to their SQL projections in InterSystems Caché, InterSystems DeepSee, InterSystems IRIS, InterSystems IRIS for Health and InterSystems IRIS BI databases.

0
0 200
Announcement Evgeny Shvarov · Dec 2, 2019

Hi Developers!

Here is what's we introduced in Developers Community features and UI last month:

  • Pinned topics for main feed and tags;
  • One-click unsubscribe option in every email we send;
  • A 'new' indicator for the posts and comments;
  • Notification of changes made by moderators;
  • Articles without translation don't show 'access denied' anymore.

See the details below!

0
0 325
Article Evgeny Shvarov · Nov 21, 2019 7m read

Hi Developers!

As discussed in previous parts of Package Manager stories to turn your IRIS application into a deployable package you just need to introduce the module.xml file into the root folder of the repository and describe all the resources.

I’m pleased to introduce you to a new project template on Open Exchange which contains examples of how to make different types of resources of your InterSystems IRIS application a part of the ObjectScript package and so make the deployable ObjectSctipt package.

Let's see how you can describe your application resources using this template project as an example.

See the details below.

2
7 673
Article Evgeny Shvarov · Nov 19, 2019 1m read

Hi developers!

I just want to share with you the knowledge aka experience which could save you a few hours someday. 

If you are building REST API with IRIS which contains more than 1 level of "/", e.g. '/patients/all'  don't forget to add parameter 'recurse=1' into your deployment script in %Installer, otherwise all the second and higher entries won't work. And all the entries of level=1 will work.

/patients

- will work,  but

/patients/all

- won't.  

Here is an example of CSPApplicatoin section which fix the issue and which you may want to use in your %Installer class:

    <CSPApplication Url="${CSPAPP}"
      Recurse="1"
      Directory="${CSPAPPDIR}"
      Grant="${RESOURCE},%SQL"
      AuthenticationMethods="96"
      />
0
1 315
Article Evgeny Shvarov · Nov 18, 2019 2m read

Hi Developers!

Recently we announced two new challenges on Global Masters: 'Bugs Bounty' and 'Pull Requests'.

And we are getting a lot of submits to the challenges which are not the thing we are expecting there. So I hope this post will give some shine to this quest.

'Bugs Bounty'

Ok! What are we expecting from 'Bugs bounty'?

There are a lot of Open Exchange solutions that come with public open-source repositories on Github: project and repoanother project and the repo, another one and its repo, and many more on Open Exchange.

0
0 380
Announcement Evgeny Shvarov · Nov 3, 2019

Hi Developers!

Here is the release of what's was enhanced and fixed in the DC engine in October 2019.

  • New look-and-feel and features for the Developers Events;
  • "Smart" social sharing in Twitter;
  • 5 min delay before sending emails, nested tags for group tags, better articles linkage, and other small enhancements and bug fixes.

See the details below.

0
0 189
Announcement Evgeny Shvarov · Nov 1, 2019

Hi Developers!

This is the digest of new solutions and applications submitted to InterSystems OpenExchange in October 2019!

New applications in October 2019

simplemirror by Mario Sanchez Macias

This is a very simple docker-compose with a simple class that creates a mirror. It will create 2 folders (mirrorA and mirrorB) with the Iris installation files and mirror database MIRRORDB. Also creates a namespace MIRRORNS.

objectscript-rest-docker-template by Evgeny Shvarov

Very simple template to start development REST API with for persistent data in IRIS using  Docker.

IRIS OAuth example by Dmitrii Kuznetsov

This is a template for InterSystems ObjectScript Github repository. The template goes also with a few files which let you immedietly compile your ObjecScript files in InterSystems IRIS Community Edition in a docker container

vscode-multi-connection by Dmitry Maslennikov

Example project, how to configure and use multiple connections in one namespace with VSCode-ObjectScript

iris-datatransform-unittest by Alberto Fuentes

IRIS Data Transform UnitTest Sample

SetEnv by Eduard Lebedyuk

Set Environment Variables

DocumentTemplate by Zenkov Artem

DocumentTemplate allows you to use ODT and DOCX files as templates for rendering reports or letters.

msgpack by Maks Atygaev

Implementation of MessagePack protocol where you need something more compact and speed then JSON. https://msgpack.org

Twitter Sentiment Analysis with IRIS by Amir Samary

Use IRIS Natural Language Processing and its interoperability capabilities to fetch realtime tweets and analyze their sentiment as well as their metadata.

Apache POI by Eduard Lebedyuk

ObjectScript part for apache-poi integration. Allows reading xlsx.

RabbitMQ adapter by Eduard Lebedyuk

InterSystems IRIS adapter for RabbitMQ

0
0 209
Article Evgeny Shvarov · Oct 27, 2019 2m read

Hi Developers!

Those who use Dockerfile to work with InterSystems IRIS often need to execute several lines of ObjectScript.  For me, this was a game of "escaping this and that" every time just to shoot a few commands on ObjectScript to IRIS. Ideally, I'd prefer to code ObjectScript without any quotes and escaping.

Recently I found a nice "hack" on how this could be improved to exactly this state. I got this from @Dmitry Maslennikov's repo and this lets you use Objectscript in a way as you would type it in IRIS terminal.

Here is what you have in dockerfile:

///
COPY irissession.sh /
SHELL ["/irissession.sh"]
RUN \
  do $SYSTEM.OBJ.Load("Installer.cls", "ck") \
  set sc = ##class(App.Installer).setup()
# bringing the standard shell back
SHELL ["/bin/bash", "-c"]
CMD [ "-l", "/usr/irissys/mgr/messages.log" ]
///
12
1 830
Announcement Evgeny Shvarov · Oct 3, 2019

Hi Developers!

This is the digest of new solutions and applications submitted to InterSystems OpenExchange in September 2019!

New applications in September 2019

web HERALD by Martin Weber

web HERALD is a Highly Extensible Rapid Application Development framework, the ultimate server-based platform for Caché Developers created by our inhouse Caché Developers.

objectscript-docker-template by Evgeny Shvarov

A simple template to start coding in InterSystems ObjectScript with preset dockerfile and settings for VSCode to start compiling and debugging.

angular-material-iris-starter by Sergey Shutov

A template project for Angular frontend with InterSystems IRIS.  The main goal of this repository is to provide an up to date example of Angular application following all recent best practices

cache-iris-app-tools by Sergey Mikhailenko

Solution for technical support and DBMS administrator. View globals arrays, execute queries (including JDBC/ODBC), sending results to email as XLS files. Viewer class instances with СRUD editing. A few simple graphs on the protocols of the system.

IRIS OData Client by Sean Connelly

A simple IRIS client for connecting and consuming RESTful OData API services.

ObjectScript-Foreach by David Crawford

The beginnings of a foreach function equivalent in ObjectScript.

Kano MDM by Liudmyla Valerko

Kano MDM is an efficient Master Data Management software product with a complete set of features for successful implementation of interoperability solution.

Output-Capture by David Crawford

Captures the output of common objectscript terminal verbs, such as zwrite.

dasha-iris-adapter by Vladislav Chernyshov

Dasha.ai is a platform for designing human-like voice interactions to automate business processes.

This repository includes the first version of Dasha.ai IRIS Interoperability Adapter and demo Interoperability Production to show how to connect IRIS and Dasha.ai platform.

0
0 204
Article Evgeny Shvarov · Sep 29, 2019 2m read

Hi Developers!

When you prepare your modules for ZPM (InterSystems Package Manager) it expects the certain directory structure for ObjectScript source files.

ObjectScript in your source folder need to be stored by types in the following subfolders. E.g. if you have the source folder named as /src the structure should be as follows:

/src

        /cls - for classes

         /inc - for include files

         /mac - for mac files

         /int - for interpretable files

         /gbl - for globals

And the ObjectScript should be in CLS (a.k.a UDL) and not in XML.

Example.

Ok!

0
1 859
Announcement Evgeny Shvarov · Sep 27, 2019

Hi Developers!

Just want to share the information with you that we support TechCrunch Disrupt Hackathon 2019 this year!

It will take place from 2-4 of October in San Francisco, CA.

We introduced InterSystems special prizes for participants which solutions will use InterSystems IRIS $4,000 and InterSystems IRIS for Health 4,000.

Learn more here.

If you happen to participate we wish you luck and hope you'll leverage InterSystems IRIS data platform functionality to win Disrupt Hackathon 2019!

0
0 330
Announcement Evgeny Shvarov · Sep 24, 2019

Hi Developers!

If you happen to visit Global Summit 2019 don't hesitate to stop by Developers Community Booth (table 9 on Tech Exchange, 3rd floor) - we can help to submit your Open Exchange solution to ZPM Package Manager.

One package Output Capture by @David Crawford is already packaged and can be installed with the following command:

zpm:USER>install output-capture

Also, come to chat on your dev experience and collect your GlobalMasters badge from @Anastasia Dyubaylo ;)

0
0 395
Article Evgeny Shvarov · Sep 19, 2019 6m read

Hi Developers!

Recently we launched InterSystems Package Manager - ZPM. And one of the intentions of the ZPM is to let you package your solution and submit into the ZPM registry to make its deployment as simple as "install your-package" command.

To do that you need to introduce module.xml file into your repository which describes what is your InterSystems IRIS package consists of.

This article describes different parts of module.xml and will help you to craft your own.

I will start from samples-objectscript package, which installs into IRIS the Sample ObjectScript application and could be installed with:

zpm: USER>install samples-objectscript

It is probably the simplest package ever and here is the module.xml which describes the package:

<?xml version="1.0" encoding="UTF-8"?>
<Export generator="Cache" version="25">
  <Document name="samples-objectscript.ZPM">
    <Module>
      <Name>samples-objectscript</Name>
      <Version>1.0.0</Version>
      <Packaging>module</Packaging>
      <SourcesRoot>src</SourcesRoot>
      <Resource Name="ObjectScript.PKG"/>
    </Module>
  </Document>
</Export>
16
6 2043
Article Evgeny Shvarov · Sep 14, 2019 1m read

Hi Developers!

Often I find questions on how to install IRIS, connect to IRIS from IDE, setup the environment, compile, debug, maintain the repository.

Here below possibly the shortest way to set up all the environment and start development with ObjectScript on InterSystems IRIS.

Prerequisites

Make sure you have Git, Docker, and VSCode installed

Install Docker and ObjectScript extensions into VSCode

Sign in or Create an account on Github

Here we go!

9
6 1584
Article Evgeny Shvarov · Sep 6, 2019 2m read

Hi Developers!

InterSystems Package Manager (ZPM) is a great thing, but it is even better if you don't need to install it but can use immediately.

There are several ways how to do this and here is one approach of having IRIS container with ZPM built with dockerfile.

I've prepared a repository which has a few lines in dockerfile which perform the download and install the latest version of ZPM. 

Add these lines to your standard dockerfile for IRIS community edition and you will have ZPM installed and ready to use.

To download the latest ZPM client:

1
1 1058
Question Evgeny Shvarov · Sep 6, 2019

Hi Developers!

Suppose I have a project where I want to build an IRIS container with two different dockerfiles depending on goals.  How can I make it?

The issue is that docker-compose is looking for the file with name 'dockerfile'

Are there any #IF constrations in a dockerfile syntax? 

Commenting works but sometimes it's more than one line.

2
0 353
Announcement Evgeny Shvarov · Sep 3, 2019

Hi Developers!

This is the digest of new solutions and applications submitted to InterSystems OpenExchange in August 2019!

ToolBox-4-Iris by Richard Zimmermann

API for InterSystems IRIS with a collection of handy and useful tools

iris-history-monitor by Henrique Gonçalves Dias

IRIS History Monitor - monitoring visualization tool for InterSystems IRIS

Nested Set Model by Nikolay Soloviev

Nested Set Model implementation for ObjectScript

SOLID Design with ObjectScript by Sourabh Sethi

Training and Codeset of SOLID Design in ObjectScript

Samples-ObjectScript by Joel Solon

ObjectScript samples for use with the ObjectScript tutorial. Meant for use with InterSystems IRIS Data Platform.

Object Synchronization by Jose Tomas Salvador

Sample project to play with IRIS Object Synchronization feature

Https-Proxy-IRIS-Docker by Guillaume Rongier

Sample of an Https proxy for Intersystems Iris with docker

iris-webgateway-example by Dmitry Maslennikov

Example of containerised IRIS with separate Apache and WebGateway

iris-mirror-with-docker by Dmitry Maslennikov

Docker compose environment with demo IRIS configured with Mirroring

Fast & Informative WEB API/Proxy by Sourabh Sethi

Informative and Fast WEB API VIA ObjectScript and Ensemble/HealthShare

PivotSubscriptions by Peter Steiwer

Subscribe to Pivot Tables in InterSystems IRIS Business Intelligence to receive scheduled emails

ObjectScript Package Manager by Evgeny Shvarov

Package Manager for InterSystems IRIS

0
0 219
Discussion Evgeny Shvarov · Aug 31, 2019

Hi Developers!

Often we need to use relatively small arrays with constants, static arrays in algorithms, etc where we need to do something with each element of an array. There are several ways to deal with it in ObjectSctipt. 

Previously I used to use globals, locals, PPG for this but not so long time ago figured out that %List is a way too handy.

Indeed, suppose we have an array of months and need to set up and use it in our code.

15
1 724
Article Evgeny Shvarov · Aug 29, 2019 4m read

Hi Developers!

Often when we develop some library, tool, package, whatever on InterSystems ObjectScript we have a question, how we deploy this package on the target machine?

Also, we often expect that some other libraries already installed, so our package depends on them, and often on some particular version of it.

When you code on javascript, python, etc the role of packages deployment with dependency management takes package manager.

So, I'm pleased to announce that InterSystems ObjectScript Package Manager available!

19
4 3654
Question Evgeny Shvarov · Aug 27, 2019

Hi Developers!

A question to those who use VSCode to code InterSystems ObjectScript.

Suppose you have the ObjectScript code on IRIS server and you want to export it into the desired folder.

And you have VSCode connected to the server.

What is the way to tell VSCode that I want to export classes into some particular folder in /package/class.cls way?

E.g. into:

/project_folder/src/cls/Package/class.cls

and project_folder is opened in VSCode as the folder of the project.

8
0 1212
Discussion Evgeny Shvarov · Aug 18, 2019

Hi Developers!

InterSystems IRIS stores everything in globals and if we use ObjectScript classes to persist data class documents globals it uses in storage. But if you use globals for calculations, temporary storages, for special indexes or for some other purposes - how do you document it?

Possible options which come to my mind:

1. Macro

#define Array ^MyGlobal

usage:

s $$$Array(1)=1

2. Class parameter

Parameter Array ="^MyGlobal";

Usage:

s @(..#Array)@(1)=1

3. Documentation comment

Just document it to have it in a class documentation

/// ^MyGlobal is used to store my data

What do you do?

3
0 428
Announcement Evgeny Shvarov · Aug 4, 2019

Hi Developers!

This is the digest of new solutions and applications submitted to InterSystems OpenExchange in July 2019!

New Applications

Metrics example published by David Underhill

A simple example of collating database and license metrics

Dynamic SQL to Dynamic Object published by David Crawford

ObjectScript function to convert any SQL query into a dynamic object

Cogs JSON Class published by Sean Connelly

Convert JSON to and from InterSystems ObjectScipt classes

Objectscript Roman Numeral Converter published by David Crawford

Converts numbers into roman numerals using ObjectScript

Random Read IO Storage Performance Tool published by Tony Pepper

Random Read IO Performance Tool for InterSystems IRIS Database

Port published by Rubens Silva

Port is a VCS-agnostic Caché Studio utility to export or import Caché files based on projects instead of namespaces

Forgery published by Rubens Silva

An auxiliary tool used to mimic requests to %CSP.REST and Frontier Router-based classes.

Log Production Queue Counts published by Robert Hanna

A simple scheduled task and persistent table for logging production queue counts.

EnsDemo Iris installer published by Guillaume Rongier

ENSDEMO port to IRIS without HL7 and DICOM examples

Anti CSRF CSP published by David Crawford

A method for mitigating anti CSRF attacks on CSP derived API calls

Frontier published by Rubens Silva

%CSP.REST on steroids. Frontier is a REST framework made with the purpose of reducing boilerplate code and imposing a clean coding style 

Python Gateway Samples published by Eduard Lebedyuk

Examples of PythonGateway Usage. Python Gateway for InterSystems Data Platforms

0
0 190
Question Evgeny Shvarov · Aug 3, 2019

Hi developers!

Every day coding with IRIS and docker I call the following 3 commands in VSCode terminal. Always the same for any projects:

docker-compose build   ; to build the container

docker-compose up -d   ; to run the IRIS in container

docker-compose exec iris iris session iris ; to open the IRIS terminal

Is there any way to map the key sequence which will type me the rest? 

e.g.

irisb for docker-compose build,

irisup for docker-compose up -d,

irist for docker-compose exec iris iris session iris

I know and use keyboard sequences for mac, but it doesn't work in VSCode terminal :/

2
0 576