Discussion Alex Kogan · Jan 16, 2020

This is a lesson learned, which I would like to share with community.  


Recently I ran into an issue, where I was using %ConstructClone and it kept cloning extra records, which were not needed.  The record for which I was trying to run a clone had many-to-one relationships.  

The solution to this issue was using param -1.  If you run %ConstructClone(-1) it will not clone relationships, but rather just clone single oref as desired in this case.


I hope this information helps someone who is working with similar records.

0
0 563
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 726
Discussion Evgeny Shvarov · Dec 24, 2019

Hi Developers!

Recently we updated the look and feel of articles on DC:

The font is bigger, with no ads on aside.

Articles look like that now:

The intent was to make reading process for articles more focused cause sometimes we want to share a deeper thought with article and this needs more concentration and less distraction.

Do you like it?

Share your thoughts, please?

1
0 301
Discussion Neerav Verma · Dec 19, 2019

HI,

I am planning to build a WebApp that will have tons of data to display in tables, ability to add comments on that table rows and may be some few more small features as we move on.

1. It has to be Secure

2. It has to be fast

3. It has to be Non CSP / Non Zen

4. Will have Cache DB to pull records from but should be flexible to do that from any odbc resource

5.

18
0 593
Discussion Nikita Savchenko · Dec 12, 2019

Hello, InterSystems community!

Lately, you have probably heard of the new InterSystems Package Manager  - ZPM. If you're familiar with it or with such package managers as NPM, Dep, pip/PyPI, etc. or just know what is it all about -- this question is for you! The question I want to arise is actually a system design question, or, in other words, "how should ZPM implement it".

In short, ZPM (the new package manager) allows you to install packages/software to your InterSystems product in a very convenient, manageable way.

14
0 499
Discussion Evgeny Shvarov · May 1, 2019

Hi Community!

Sometimes I meet a method which accepts 10+ parameters.

And often I need only the 8th parameter  to  pass. And I call the method something like:

do ##class(Some.Feature).Method(,,,,,,,"flag")

And I don't like this method when I call it like this cause, you know, often I just miss the number of commas and raise some other flag I wanted.

How do you avoid this situations? 

If you meet such a code, how do you call it and sure that you didn't miss the number of ","?

What is a good number of parameters in a method and f you need to pass more parameters in a method what do you do?

27
1 1861
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
Discussion Eduard Lebedyuk · Jul 31, 2019

Let's have a round of CodeGolf!

As usual the goal is to write the shortest solution for a specified problem.

Today we have one of the classics: FizzBuzz.

Write a program that prints the numbers from 1 to 100.

But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”.

For numbers which are multiples of both three and five print “FizzBuzz”

22
1 803
Discussion John Kumpf · Apr 9, 2019

Hi guys,

I'm curious about the development processes of those of you using Angular. 

The starting point is that, somewhere, there lives an Angular project full of (mostly) typescript files.  Eventually, those files need to be built, and the resulting built files served up to a browser.

Given that, let's say I want to go change one of the typescript files.  What are some clean ways to, during development, see that change reflected on the active webpage in the development environment.  For something like a .cls or .

11
2 4186
Discussion Daniel Tamajon · Mar 19, 2019

Hi! We have received a request to create a new rule on CachéQuality to identify when a developer uses double quotes (" ") within any SQL statement.

We have been asked many times about SQL validation rules, and we would like to open a debate to allow everyone discuss what would you like to be checked on a SQL statement.

Current examples are for basic situations:

  • Using SQL.Statement class:

Set stmt = ##CLASS(%SQL.Statement).

13
0 668
Discussion Evgeny Shvarov · Mar 7, 2019

Hi Community!

There are two general ways to execute arbitrary SQL  in serverside ObjectScript code: EmbeddedSQL and ObjectScript SQL a.k.a. Dynamic SQL.

E.g. if we want to get the value of the property of instance with a certain ID using SQL we can do:

&sql(SELECT Name INTO :name FROM Sample.Person WHERE ID=1)

write name

Same result with %SQL.Statement:

set rs=##class(%SQL.Statement).%ExecDirect(,"SELECT Name as name FROM Sample.Person where ID=1")
  do rs.%Next()
  write rs.name
2
0 1120
Discussion Evgeny Shvarov · Feb 11, 2019

Hi guys!

Suppose you developed a tool, framework, library on InterSystems ObjectScript for InterSystems Data Platform, share it via Open Exchange and want people to install it. 

What is the best strategy if it is a library and supposed to be called from different namespaces?

Here are the following thoughts:

1. Tool's developer should be able to use globals to read/store data the tool needs.

2. Tool's consumer should be confident, that the thing he/she installs will not harm the application's data.

3. A tool should be callable from any application's namespace.

4. Tool's installation(in general) should not request manual security changes (e.g. grant the write access to IRISLIB) and %YourClass is not an option.

5. It's easy to uninstall the tool - just delete the namespace/database (maybe delete some web-apps too).

10
0 562
Discussion Eduard Lebedyuk · Nov 9, 2018

Do you think our editor has too many unused features?

I propose removing some, so it would look nice & clean!

Here's some buttons that I think we really can let go. 

What do you think?

3
0 412
Discussion Kurro Lopez · Sep 5, 2018

Hi community,

This is an idea to improve the community. Add a button to remove a comment/answer in a post. There is not a way to remove a comment, only I can edit. For example, duplicated comment, an answer that it was for a post but I've written in other one. etc...

Best regards,

Francisco López

1
1 341
Discussion Francis Galiegue · Apr 4, 2016

Hello community!

At the global summit in Phoenix, we (Lite Solutions) will be presenting a tool performing static code analysis on ObjectScript source files. You can see it in action at this URL:

https://demo.cachequality.com

Technically, the tool is a language plugin over SonarQube (http://sonarqube.org) and consists of three main parts:

  • parsing the language,
  • collecting metrics,
  • collecting issues.

The third point is where we kindly request for feedback.

Explanation: issues are the result of rules being triggered by inspecting the source files.

6
1 2168
Discussion Evgeny Shvarov · Apr 22, 2018

Hi, Community!

Have a question for general discussion. 

In ObjectScript we have cls for classes and mac code, which both compile into int code. 

Is there any reason when you use mac instead of cls  for non-persistent classes?

For me the benefits for cls are:

1. Inheritance and other OOP features

2. Auto-documented code 

For mac one visible benefit is easier call in terminal:

do method^Utils(p1,p2)

vs

do ##class(Package.Utils).method(p1,p2)

What is your choice and why?

43
1 3069
Discussion Peter Cooper · May 11, 2018

Hi Evgeny/Anastasia

I spent some time just clicking around and found the old google groups discussion groups
These are clearly dated and the place is here

However it's not clear to users that they should post here rather than on the google groups

Mai I suggest that a big banner link is added to re-direct the user to ask their question here rather than there

Peter

2
0 937
Discussion Sebastian Mueller · Aug 8, 2017

I understand this is a rather broad topic (and at times involves religious sentiments) yet I would like to look at it from the Caché perspective:

  • Do you use an issue tracking / collaboration system? If so which one. Any you would recommend or immediately dismiss based on personal experience?
  • How do you keep track of large code bases? Thousdands of folders named backup1, backups2, ..., SVN, git?
  • Do you have a development server to which you commit and test features there, or do you rather run a local copy of caché and implement features locally first, then push to the
14
0 966
Discussion Mike Kadow · Jul 3, 2017

I know this may sound like sour grapes, but really it is not.

I hear all the exciting things about the up coming InterSystems Conference, and I am sure it is.

But it is way, way out of my price range, and I am sure out of the price range of most of the Cache/MUMPS developers, without company backing.

Just wondering what others think.

4
0 579
Discussion David Little · May 16, 2017

Hi All

I'm looking for some field experiences, lessons learned, or actual deployed solutions to the problem of replicating non-CACHE.DAT data in a mirrored Cache environment.  

Environment:

  • Operating System is IBM AIX
  • Hardware is IBM Power w/ virtualised storage
  • Cache 2017.1
  • 2x Production mirror members
  • 1x DR mirror member

There are a number of different data types that we're looking at mirroring, and a number of identified solutions.

1
0 514
Discussion Ben Spead · Jun 7, 2016

Since we have a way to see 'Unanswered' questions now, there are a couple of things that jumped out at me.  Not sure if I am missing how to do these or if they need to be added to the future enhancements list:

1) It looks like a lot of people 'Comment' on a Question rather than providing an Answer.  This means that there are many questions listed as unanswered where the answer actually lies in a Comment (but noone has submitted a formal Answer).  Is there some way to tag a Comment as the Answer?

1
0 232