Article Sergey Mikhailenko · Sep 19, 2023 2m read

image Hello to all developers and IRIS users. I am submitting to the competition a project for an alternative IRIS management portal that I have long wanted to create. The project was implemented on the Django framework and the intersystems_irispython-3.2.0-py3-none-any.whl library using native IRIS. The Django project is integrated with the telegram messenger and can be launched from a docker container or directly. To run it, you need to create a .env file in the project root for which you can use the .env_example example.

1
1 259
Article Sergey Mikhailenko · Jul 4, 2023 1m read

image This project is implemented as a tool for viewing temperature data taken from a temperature sensor installed in Rasperry PI and located in a remote place where there is Internet, for example, in dacha.

The module for regular reading and sending information is implemented in python and is built in the same project.. If the temperature in the country house becomes lower or higher than the threshold values, then a notification will be sent to the telegram channel. It is very convenient if you come to the country house only at the end of the week.

0
1 171
Article Sergey Mikhailenko · Jan 24, 2023 8m read

Introduction

There are many entities in IRIS which are extremely difficult to transfer to another system.They usually contain important system-stored objects: users, roles, privileges, mappings, and applications. The exception to this list is for resources, which are facilitated by the ability to select and save them from the management portal interface [System > Security Management > Resources]. Yet, things are not as good with other system objects. I even got an idea for this topic

2
0 635
Announcement Sergey Mikhailenko · May 31, 2022

I have been developing this project for many years. He helps me a lot in my daily work as a DBA and full stack developer. This project has grown into a platform on which many of my other projects are based. You can read more about the project in the article. And I proposed this project for the contest, maybe it will be useful to you.

0
0 188
Article Sergey Mikhailenko · May 31, 2022 1m read

I think each of us has on the computer directories with photo files of relatives and friends, music albums of favorite bands and singers, as well as e-book libraries. I also have them, and I came up with the idea to implement a convenient interface for these files. You can read more about the project in the article. And I proposed this project for the contest, maybe it will be useful to you.

0
0 160
Article Sergey Mikhailenko · Apr 8, 2022 2m read

image I will devote the third article to a story about the additional features of the project.

znamespace

Very often you need to find out if there is a specific package in the current instance, for example, so as not to duplicate. To do this, I implemented a modification of the namespace command of the package manager, on the option tab, you need to press the FIND button. image

You can filter by package name. You can filter by package name. As a result, we get a list in which namespaces, which versions of packages are. image

package

0
0 183
Article Sergey Mikhailenko · Apr 5, 2022 2m read

image In a previous article, I talked about the implemented package manager commands (generate, list, load). In this article I want to talk about other commands.

repository

On the Option tab, you can see which current case is set and switch image

search

To see the list of packages in the current register, click on the search button. image

install

To install a package in the current namespace, you need to check the selected package and click the install button. image

0
0 250
Article Sergey Mikhailenko · Apr 4, 2022 2m read

image Before this project, I built zpm packages almost by hand. I edited the module.xml file, inserted resources into it and copied the resources to disk, then checked the correctness of the assembly. I was tired of it and I decided to make this work easier for myself.

I present to the contest zpm-generate-ui resource manager, which represents the ui for selecting packages, classes, globals and web applications for creating zpm… modules, for subsequent export to the current registry or repository for deployment in the same or another instance.

0
1 393
Article Sergey Mikhailenko · Feb 22, 2022 2m read

Hello everyone. I present this project to the contest. The export module is essential in many of my projects and is often used in all my product servers.

I have implemented various scenarios in the invoke attribute initialization module, both maximalistic with many additional projects to demonstrate in GCR , and minimalistic to install natively in production instance

zpm "install appmsw-sql2xlsx -Dzpm.demo=none"

To demonstrate the possibilities, I used the fileserver and csvgen projects.

0
1 397
Article Sergey Mikhailenko · Jan 18, 2022 5m read

It is becoming more and more common to see beautiful badges in the README.MD file with useful information about the current project in the repositories of GitHub, GitLab and others. For instance:

The project is being developed The quality of the code, which also provides its own badge, which immediately shows the status of code validation of the project. If you insert a line into the README.MD file

4
3 685
Article Sergey Mikhailenko · Jan 16, 2022 1m read

For the demonstration, a exchange-rate-cbrf-ui project was made and deployed an online demonstration in the cloud.

For authorization, you can use the account superuser with password SYS

For this project, I used the AdminLTE template, which I have already used in my projects more than once, for example info-chest or access-matrix.

On the main page, you can get a table of exchange rates... image

... or download data from the official website of the Central Bank of the Russian Federation. image

Two more pages have been created for demonstration purposes. image

0
1 170
Article Sergey Mikhailenko · Nov 30, 2021 1m read

Looking at my old articles recently. I saw an undeservedly forgotten program that can significantly increase the security of your system by not allowing the user to use old passwords when changing.

To meet the requirements of section 8.2.5 PCI DSS "Prohibit the use of old passwords", a small application has been implemented that will be launched by the system when a user tries to change a password and check if it was used before.

You can install the program from the terminal and from the management portal interface

Open IRIS terminal:

1
2 328
Article Sergey Mikhailenko · Nov 29, 2021 2m read

I recently published the "appmsw-docbook" module for deploying the solution not by individual programs, but by the entire database. This solution allows you to deploy a project without source codes.

Having received feedback, I decided to improve it significantly. Replaced zip archive with tgz, which will allow not using external system-dependent archivers.

0
1 366
Article Sergey Mikhailenko · Nov 29, 2021 2m read

Developing the project zpm "install isc-apptools-lockdown" implemented the ability to set the security level not only to lockdown, but also to minimum and normal.

Increasing security settings

You can replace the shared password if the password of the predefined system users has been compromised

USER>do ##class(appmsw.security.lockdown).ChangePassword("NewPass231",##class(appmsw.security.lockdown).GetPreparedUsers())

Apply Security settings to "LockDown"

USER>do ##class(appmsw.security.lockdown).SetSecurityLevel("lockdown","NewPassword123")

or equivalent

0
2 442
Article Sergey Mikhailenko · Aug 14, 2021 2m read

Continuing the description of work on the use of the openhl python module in productive mode.

Since the version of iris with Embedded Python, does not yet have a final release, it is already necessary to use it in production now. We decided to back up the service for exporting requests to a xlsx file on a separate server, and save the query result in a global in a separate database.

This database was made networked, local for the service server and remote for the product server. The communication between the prod server and the service was implemented using a rest service.

0
1 368
Article Sergey Mikhailenko · Jun 28, 2021 1m read

For a long time, we have been using a utility in production to export the result of a query to an Excel spreadsheet. Moreover, we have applied a modification of it, in which the explicit setting of column formats is a priority.

This utility used the module %SYS.ZENReportExcelExporter and is based on a java program. Every year the report grew and there was not enough java RAM, so we had to increase the value of the environment variable. The value has reached 7gb and now it has become a problem.

2
0 496
Article Sergey Mikhailenko · Apr 20, 2021 4m read

Hello developers! I present to you the project of editors in terminal mode. The full-screen editor of routines, arrays and text files in terminal mode can be useful to you when debugging your project in docker or when your web interface is unavailable or limited for some reason. Although this project is self-sufficient, I decided to make it as an addition to the ‘zapm’ module for the convenience of calling editor commands.

If your instance does not have a ZPM, then you can install the zapm-editor module in one line:

4
0 301
Article Sergey Mikhailenko · Apr 16, 2021 7m read

When you have more than ten thousand users in your database, it becomes time-consuming and inconvenient to assign group access rights through the standard IRIS interface. In this artilce I want to introduce you an application to automate this process.

I’ll show you how to assign and change the role lists for the users, selecting them by context, and I will also show you how to expand this application’s functionality. you know how to apply your work as an administrator and developer to the new features of the well-proven apptools software complex. With the addition of an adminLTE template, you can now quickly and easily create interface interactions for any entity and many functional modules. The goal while developing this toolkit is to write as little JavaScript as possible as well as transfer and implement all the dynamics as much as possible in the ObjectScript.

0
0 677
Article Sergey Mikhailenko · Mar 3, 2021 2m read

Good day, developers!

The "apptools-admin" project is not only a set of tools for the administrator, but a platform for the rapid creation of a prototype of any solution. For example, Photo Album, Music Player, and Personal Library all come together in a user-friendly treasure chest design.

Load http:// your-host:your-port/apptoolsrest/a/infochest

Change the path to your treasure files and start viewing, listening or reading from any convenient device: desktop, tablet or smartphone.

The example will be located at ${CSPdir}/apptools/files

0
0 285
Article Sergey Mikhailenko · Jan 25, 2021 2m read

Hello, developers!

I would like to share the history of the project - the ZAPM shell.

As soon as ZPM was implemented, I immediately began to think about how best to use it.

And immediately faced with the desire to move more quickly between namespaces, especially when there are more than 20 of them. I had to leave the ZPM, move to the desired namespace and re-enter the shell. I suggested an improvement - a new "namespace" command for easier navigation. I didn’t wait - I did it myself. And so it went. If you need it, get ready to do it yourself.

0
0 270
Article Sergey Mikhailenko · Nov 17, 2020 5m read

Hello developers!

I submitted for the contest a solution that would allow organizing message notifications and providing information to users of the messenger Telegam. This is achieved by creating two bots: an administrator and an informant. The administrator manages the list of users connected to the bot informator and their access rights.

The Solution based on project https://github.com/intersystems-community/TelegramAlerts

0
0 161
Question Sergey Mikhailenko · Sep 25, 2020

Hello developers!

Share the best practices: 1) saving frequently used code sections, 2) quickly finding it, and 3) quickly including it into the current program? There was a thought for 1,2 to use DC(this resource), but the search is not always convenient not only for me

The idea on the surface is to use the git repos wiki. Are there any other best practices?

There is a project github awesome. Maybe we should include the awesome-objectscript sections in it? And in the future for vscode to develop a plugin for awesome-objectscript ?

12
0 274
Article Sergey Mikhailenko · Jun 2, 2020 8m read

When you first start working with InterSystems IRIS, it’s a common practice to install a system with only a minimum level of security. You have to enter passwords fewer times and this makes it easier to work with development services and web applications when you're first getting acquainted. And, sometimes, minimal security is more convenient for deploying a developed project or solution. And yet there comes a moment when you need to move your project out of development, into an Internet environment that’s very likely hostile, and it needs to be tested with the maximum security settings (that is, completely locked down) before being deployed to production. And that’s what we’ll discuss in this article. For more complete coverage of DBMS security issues in InterSystems Caché, Ensemble, and IRIS, you may want to read my other article, Recommendations on installing the InterSystems Caché DBMS for a production environment. The security system in InterSystems IRIS is based on the concept of applying different security settings for different categories: users, roles, services, resources, privileges, and applications. Users can be assigned roles. Users and roles can have privileges on resources — databases, services, and applications — with varying read, write, and use rights. Users and roles can also have SQL privileges on the SQL tables located in databases.

2
3 1139
Article Sergey Mikhailenko · Jan 23, 2018 20m read

This article was written as an attempt to share the experience of installing the InterSystems Caché DBMS for production environment. We all know that the development configuration of a DBMS is very different from real-life conditions. As a rule, development is carried out in “hothouse conditions” with a bare minimum of security measures, but when we publish our project online, we must ensure its reliable and uninterrupted operation in a very aggressive environment.

##The process of installing the InterSystems Caché DBMS with maximum security settings

OS security settings

2
5 1874