go to post Dmitry Maslennikov · Oct 31, 2020 Extracting such amount of data with using JDBC/ODBC, will be much slower than any sort of native access in Cache. InterSystems Cache offers a way to export the whole table, with selected columns Open System Management Portal, System Explorer, SQL. Switch to the desired namespace. Click on Wizards and select Data Export The next steps should be pretty much simple, just select what you need to export and starts in the background. So, you will be able to control how it is going. Look at the documentation for more details
go to post Dmitry Maslennikov · Oct 30, 2020 Extract data could be quite tricky depending on how old is application there. If you sure that the desired data is available through SQL, so you can use any SQL tools, DataGrip, DBeaver, Squirrel-SQL. DBeaver already supports Cache out of the box, and very soon will support IRIS as well.
go to post Dmitry Maslennikov · Oct 6, 2020 There is only one way to do it, is to use any supported webserver, Apache or Nginx, and do not use built-in apache. Configure the chosen server to work with InterSystems products. And configure SSL for that server, in any way by instructions you can find on the internet.
go to post Dmitry Maslennikov · Oct 4, 2020 You can use property "links" in "objectscript.conn", to add some links to your projects, which you will be able to open quickly "objectscript.conn": { "active": true, "username": "_system", "password": "SYS", "ns": "MYAPP", "port": 52773, "links": { "MyApp": "http://${host}:${port}/csp/${namespace}/main.csp" } } After this, you will get a new item in the menu shown by click on the status bar with connection info.
go to post Dmitry Maslennikov · Sep 25, 2020 Look here. You can implement snippets in the project, and store it in source control close to your sources.
go to post Dmitry Maslennikov · Sep 25, 2020 By code sections, I would get some code snippets. In VSCode, you can easily add any amount of snippets, look at this article. And VSCode will offer to insert code snippet, while you typing text written in prefix of the snippet.
go to post Dmitry Maslennikov · Sep 22, 2020 To be able to export %Id() as id property in JSON, I had to add this. Property id As %Integer [ Calculated, SqlComputeCode = { Set {*} = {%%ID} }, SqlComputed ]; I think, that it would be better to have some parameter in a class which would enable to output id easier without hacks.
go to post Dmitry Maslennikov · Sep 19, 2020 Yeah, at the moment it does not support a real quiet way, and at the moment, it's just not verbose logging. Verbose produces even more logs. So, I would recommend, just fill the issue in the repo.
go to post Dmitry Maslennikov · Sep 10, 2020 Check the value stored in ^%SYS("CSP","DefaultFileCharset"), if there is no value or there is something different to utf-8, try to change it there.
go to post Dmitry Maslennikov · Sep 5, 2020 To find a good replacement, the most important to know is a reason, why you need this information in the browser? The first sample looks like you are looking for a default printer in the system. And the second one, looking for a specific disk drive, with the letter U, and it should be network drive. How are you going to use this information after that? Maybe the best way will be to completely change the way how you doing it or just forget about it. Anyway, this happens due to a wish from browsers vendors, to increase a security level, so, they completely declined to use NPAPI and ActiveX. And as a side-effect of it, it's now impossible to use Java applets as well. And usually, to fix it, the simplest way was to create own simple application, which has to be installed on the users machine, and web-application application was able to connect to locally installed application through WebSockets or simple rest API in that application. ps. I can help you with development if you need any help.
go to post Dmitry Maslennikov · Aug 26, 2020 You need to write your own %ZSTOP routine, which can catch it. Look at the documentation
go to post Dmitry Maslennikov · Aug 24, 2020 menu.mac ROUTINE menu menu(routine) { Set rtn = ##class(%RoutineMgr).%OpenId(routine_".mac") Quit:'$IsObject(rtn) Set menu = "" While 'rtn.Code.AtEnd { Set line = rtn.Code.ReadLine() Continue:$Char(9,32,35)[$Extract(line) Continue:line'[" ; " Set label = $Piece($Piece(line, " "), "(") Set title = $Piece(line, " ; ", 2, *) Set menu = menu _ $Listbuild($Listbuild(label, title)) } Quit menu } asLine(menu, pos) public { Set menuItem = $Listget(menu, pos) Quit:menuItem="" """""" Set $Listbuild(label,title) = menuItem Quit "$Char(13,10)_""" _ $Justify(pos, 4) _ ". " _ title_ """" } menu.inc ROUTINE menu [Type=INC] #Execute Set menu = $$^menu(rtname) Write !,"--------Menu---------" write ##Expression($$asLine^menu(menu,$Increment(menuLineNum))) write ##Expression($$asLine^menu(menu,$Increment(menuLineNum))) write ##Expression($$asLine^menu(menu,$Increment(menuLineNum))) write ##Expression($$asLine^menu(menu,$Increment(menuLineNum))) write ##Expression($$asLine^menu(menu,$Increment(menuLineNum))) write ##Expression($$asLine^menu(menu,$Increment(menuLineNum))) write ##Expression($$asLine^menu(menu,$Increment(menuLineNum))) write ##Expression($$asLine^menu(menu,$Increment(menuLineNum))) write ##Expression($$asLine^menu(menu,$Increment(menuLineNum))) write ##Expression($$asLine^menu(menu,$Increment(menuLineNum))) write ##Expression($$asLine^menu(menu,$Increment(menuLineNum))) write ##Expression($$asLine^menu(menu,$Increment(menuLineNum))) write ##Expression($$asLine^menu(menu,$Increment(menuLineNum))) write ##Expression($$asLine^menu(menu,$Increment(menuLineNum))) write ##Expression($$asLine^menu(menu,$Increment(menuLineNum))) write ##Expression($$asLine^menu(menu,$Increment(menuLineNum))) write ##Expression($$asLine^menu(menu,$Increment(menuLineNum))) write ##Expression($$asLine^menu(menu,$Increment(menuLineNum))) Write !! do { Write $Char(13),"Option? ",*27,"[0K" Read menuOption Quit:menuOption="" Quit:"qQ"[$Extract(menuOption) Quit:$Listget(menu,+menuOption)'="" } while 1 Write ! if (+menuOption) { Set label = $Listget($Listget(menu, menuOption)) Do @label } Quit And some routine which will have to have menu ROUTINE test #; just include menu, at the place where you need it #Include menu quit task1 ; Task 1 Write !,"Some work 1" quit task2 ; Task 2 Write !,"Some work 2" quit task3 ; Task 3 Write !,"Some work 3" quit task4 ; Task 4 Write !,"Some work 4" quit task5 ; Task 5 Write !,"Some work 5" quit task6 ; Task 6 Write !,"Some work 6" quit task7 ; Task 7 Write !,"Some work 7" quit task8 ; Task 8 Write !,"Some work 8" quit task9 ; Task 9 Write !,"Some work 9" quit task10 ; Task 10 Write !,"Some work 10" quit and call it USER>d ^test --------Menu--------- 1. Task 1 2. Task 2 3. Task 3 4. Task 4 5. Task 5 6. Task 6 7. Task 7 8. Task 8 9. Task 9 10. Task 10 Option? 1 Some work 1 Menu list changed after compile, but routine should be saved as MAC. The final INT code contains the generated menu.
go to post Dmitry Maslennikov · Aug 21, 2020 I did not find any mention of ECDSA in InterSystems products, so, not sure if it's supported natively. I would look at some external tools which could help you with it. And you can start from openssl. And If I undestood correctly, you'll also need a public certificate, which used to make such a signature.
go to post Dmitry Maslennikov · Aug 16, 2020 I have a configuration with Caché 2018.1 as an ECP Data server and a few ECP Application servers on Ensemble 2012.2. The code is compiled and deployed for 2012, only, but stored on 2018.1. The data server even does not have a namespace for an application. It only mounts databases, and code databases just like any other data, which used by application servers. Ensemble Production works on a separate application server. And ECP Data server uses mirroring, so, my ensemble production and integrations does not care about IP migration at all, they work in the same place all the time. In case of when ECP Application server may work on different versions, I would recommend storing all the versions of code in one place anyway on ECP Data Server. Just mount a specific code version on different platforms.
go to post Dmitry Maslennikov · Aug 10, 2020 what do you mean by integrating with IS? Is it just Integrating with application working on IS? Years ago, I've implemented some of the video services into our application. So, I have some experience. But this time it could be even less complex, or completely different. And anyway depends on how exactly you would like to see it. I can help you with it, please contact me directly dmitry@caretdev.com, I co-founder of a company, where we can help you to implement this or anything else.
go to post Dmitry Maslennikov · Aug 2, 2020 Muni, First of all, you have to copy all of your journals, you currently have, so, they will not be purged by schedule. Next, it depends, on how that data was deleted. If it happened in the transaction, so, you are lucky. It will be possible to restore that data, if not, again depends on how it was killed. Just Kill ^Global, outside of the transaction, just kills it, with no useful information for restore. I think you can actually do what you with ^ZJRNFILT. But I prefer direct access to journals through their API, in %SYS.Journal classes.
go to post Dmitry Maslennikov · Jul 11, 2020 This is explorer view, supposed to be only to view the source of code on the server and read-only. There are two ways Preferable, store any code locally, and when you save it, it will upload to server and compile it there. If you already have some of your code on server, you can export it from the explorer view. Use virtual filesystem named isfs, in this case, all of your code stored only on server. Documentation You can find some useful videos on youtube on Developer Community channel, for instance ObjectScript with Visual Studio Code Introduction to VSCode-ObjectScript Webinar
go to post Dmitry Maslennikov · Jul 2, 2020 As Kai, already mentioned, this icon, will appear only if you have any folder opened. Such a folder is a kind of project in VSCode. And, while Server Explorer view, which can be opened available by this icon, is supposed to be as just a server explorer, without editing. So, there are no reasons to make it available until any project will be opened.
go to post Dmitry Maslennikov · Jun 21, 2020 Not sure if it should work there, the minimal version of Caché is 2016.2