George James · Sep 4, 2021 go to post

The basic VS Code extension for ObjectScript doesn't manage deletions at all.  You have to manually delete them on the server.

You can however use the Serenji extension which does manage deletions properly.  You can read more about it here: https://georgejames.com/serenji  or just install it from the VS Code marketplace.

George James · Aug 25, 2021 go to post

Deltanji https://www.georgejames.com/deltanji can take care of this for you.

With Deltanji you can change the DTL either in the Management Portal or in VS Code, or both.   And you'll get a lot of other benefits if you upgrade your git repository to Deltanji.

George James · Jun 23, 2021 go to post

Hi Alexey

It sounds like writing a simple VS Code Extension would be the right solution for this requirement.

We would be able to help you with this if you don't have the appropriate skills.

George

George James · Jun 17, 2021 go to post

Muhammad

The VS Code ecosystem for Objectscript is evolving fast.  And because it is community driven there is plenty of choice of extensions.

If you are likely to be working with more than one IRIS server then you should check out the InterSystems Server Manager extension.  And for code editing you have a choice of the basic vscode-objectscript or Serenji.

Then for debugging there is some support in the vscode-objectscript extension or you can purchase the premium debugger option for Serenji.

But as Nigel says, check out the VS Code market place, there are quite a number of interesting and useful extensions to choose from depending on your needs.

George

George James · Jun 15, 2021 go to post

Evgenli

When a label begins with % it is often a sign that it is something that has been generated as part of the class compilation process.

In this case %Construct is the generated constructor code for the class.  More specifically, if any property in your class definition has an initial value specification then the %Construct code will be generated in your .int routine and will initialise the values of these properties.

By default, the .int code for the class %DeepSee.ResultSet.cls will not be present on your system, but you can create it by recompiling this class with the k flag which indicates that .int code should be kept.

Do Compile^%apiOBJ("%DeepSee.ResultSet","k")

Once you have re-compiled this class then you should be able to inspect the .int code and locate the line that is responsible for your <PROTECT> error.

George James · Jun 7, 2021 go to post

Have you looked at PDFbox?  https://pdfbox.apache.org/

Alternatively, if the pdfs are of your own making then the best solution would be to merge the xml content before you use fop to create the pdf document.

George James · May 26, 2021 go to post

Adel

Do you need something more than simply attaching a debugger to the process and stepping through the code?

With the Serenji debugger you have precise control over stepping into or over blocks of code and you can mask out library code that you already know about (or don't want to know about).

George James · May 21, 2021 go to post

Hi Mike

Nice example of recursion.  However, you might want to try testing your solution with some non-sanitized input.   For example:

set maliciousInput="""_$xecute(""h"")_"""
set in(maliciousInput)=""
set in(maliciousInput,1)=""
set out=..Flatten(in)
George James · Apr 21, 2021 go to post

Do you have a multi-rooted Workspace?  Currently gj :: locate only works on the first top-level folder in a workspace (multi-folder capability coming soon).

What is the first top-level folder in your workspace?  Is it a folder on your local file system or a remote connection to an IRIS server using  isfs or isfs-readonly?

If it's a local folder, have you exported all of your source files?

George James · Jul 26, 2019 go to post

Hendri

Another alternative is Serenji for VSCode which works very nicely on Linux desktops as well as Windows and MAC.

It works like Studio and doesn't require exporting all your sources like Atelier and other solutions.  It will also work with very old versions of Cache such as you have.

George James · May 20, 2019 go to post

Francisco

You could try using the Serenji extension for VSCode.  This avoids the problem of syncing altogether.

Serenji allows you to browse, edit and debug your code directly in the database where it is stored and executed.  So you don't have any problems with the sources being out of sync because it just can't happen.

George
www.georgejames.com

George James · Apr 18, 2019 go to post

Roberto

If you have VSCode then  select the Extensions viewlet and type Serenji in the Marketplace search field.  Then click on the first result returned (Serenji 3.0.2).   In the right hand panel you will see Details about the extension including a section about Installation.

If you don't have VSCode installed yet, you can view the same information by following this link:  https://marketplace.visualstudio.com/items?itemName=georgejames.vscode-…

In either case there is a link from the Installation section to an additional page on the georgejames.com website that gives more details about how to get started with Serenji.  The direct link to this is: https://georgejames.com/files-cgi/doc/serenji/3.0.2/GettingStarted.html

Ask here if you have any more questions.

George
www.georgejames.com

George James · Oct 8, 2018 go to post

Dmitry

Indeed, one of our goals is to make it easy for Cache Studio users to adopt to vscode.  It will be very familiar to them.  While vscode is very lightweight it has many of the capabilities of the Eclipse platform without the complexity.

For those who don't know, Visual Studio Code is not the same as Visual Studio.  Although it is from Microsoft, It is free and open source and is gaining a lot of traction among developers everywhere.  Neither is it like Eclipse.  It's a nice tool that does its job very well.

George
www.georgejames.com

George James · Oct 4, 2018 go to post

There was a short demo of what we have added to Visual Studio Code in one of the flash talks at the Global Summit.

The recording quality is not that good but this link takes you to the start of John Murray's talk where you can see a class being loaded into VS Code and then stepping through one of its methods with the debugger: https://youtu.be/1146vFuHoI8?t=1263

George
www.georgejames.com

George James · Oct 4, 2018 go to post

We made some announcements about this at Global Summit this week.  More information will be coming soon.

The next version of Serenji will provide code editing and debugging within Visual Studio Code.  Alongside this we will be releasing the next version of Deltanji which will provide file explorer and source control capabilities within Visual Studio Code.   We expect these to be available in about a month or so.

George
www.georgejames.com

George James · Oct 4, 2018 go to post

This week at Global Summit we announced extensions for Visual Studio Code that will provide Explorer, Editing, Debugging and Source Control for InterSystems IRIS, Cache and Ensemble.

Those at the GS conference we able to see all this being demonstrated at our partner pavilion booth.  We expect these extensions to be available in a month or so.

And to answer the original question directly,  I've been running Cache Studio on Linux Mint very successfully using Wine.  There are one or two glitches but they are mainly cosmetic and not unusual with many complex applications that run under Wine.

George
www.georgejames.com

George James · May 25, 2017 go to post

Evgeny

I think you have come to the wrong conclusion.  It is never ok to export the class without the storage schema. 

The case of the deleted property is just one example of how things can go wrong.  A manual change to the schema of any kind (like changing the global name) would also get lost if you don't export it.  It's even possible that future versions of Cache might use a different algorithm that gives a different result.  You just can't second guess all the constraints that you need to watch for.

In short.  Never export a persistent class definition without the storage schema.

Regards
George

www.georgejames.com

George James · May 24, 2017 go to post

Alexy

Providing the storage schema is exported along with the class definition (it will be, automatically, unless you mess with the default export options) then you will not have a problem reverting to a previous definition.  The scheme evolution mechanism used by Studio ensures the consistency of the data locations from previous versions. 

This works well unless you make some deliberate schema changes that include a manual data migration.  In this case if you reverted to a previous version then you would also need to undo the manual data migration.  So there is a danger here if you are not aware of it or prepared for it.

The documentation on this is quite sketchy but worth reading anyway: http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY…

Regards
George

www.georgejames.com

George James · May 24, 2017 go to post

Evgeny

Try this experiment:

  1. Create a class containing two properties a and b.
  2. Populate the class with a couple of rows of data.
  3. Delete property a.
  4. Export the class without it's storage schema.
  5. Import the class, regenerate the storage.
  6. View the data created earlier.

I think you'll find that the regenerated class will incorrect values for property b.  This would be a very nasty surprise if it happened to some real application.

Regards
George

www.georgejames.com

George James · May 24, 2017 go to post

Evgeny

What method are you using that even gives you the choice to not export the storage schema?  I don't see anything that allows this, other than if you export the class before the schema has even been generated.  Is that what you do?

George

www.georgejames.com

George James · May 24, 2017 go to post

Evgeny

If you have customised the storage schema, or even added and then deleted properties, then a regenerated schema will not match the original schema. 

This can have serious consequences as data may get stored in a different place from data stored by previous versions of the class.

George
www.georgejames.com

George James · Feb 10, 2017 go to post

Steffen

Some new information.  In about 1 in 5 attempts the connection is successful.  I get the fixme message whether the connection is successful or not.  So I don't think it is relevant and could well be a red herring.

George

www.georgejames.com