Delve more into AI and it's application both in DEVOPS and application functionality.
- Log in to post comments
Delve more into AI and it's application both in DEVOPS and application functionality.
Would be interesting to play with what's been discussed along with the below to see how far this can be pushed, though it would be dependant on requirements and workload.
Don't forget $query can provide faster iteration through globals, where appropriate.
Just as an example, an alternative with $piece.
An issue would be if both startStr and stopStr are the same value which $find does solve.
set values=""for n=2:1:$length(text,startStr) {
set check=$piece(text,startStr,n)
if check[stopStr set values=values_" "_$piece(check,stopStr)
return$piece(values," ",2,*)Great overview, I have had plenty of discussions with IT departments who don't understand that Linux, and Windows, will use available resources, especially for IO, and it is only an issue if it is persistent or unusual, and obviously if there are performance/stability issues.
Being able to provide metrics over time and proving it is "normal" usually helps.
This looks so much easier than when I had to do it and is very welcome.
At the time I moved it to a personal email so I didn't have to do it again changing companies.
This means it should actually be possible to keep it linked to wherever you are working.
I appreciate the comments, some things to think about.
If you have planned tables and data properly uniqueness should not be an issue and it looks like the performance consideration is unlikely to be a problem in most cases.
Being able to check the raw data easily with a standard global naming is, for me at least, a benefit of not using the hashed names.
However, knowing these reasons is very helpful in planning and identifying those edge cases.
Is there anything else I have missed that would make this more of an issue?
Without someone providing an accepted linter you won't get everyone to agree on case etc...
My own preferences do not all match the above but if we had a defined ruleset that was easily managed and enforceable in the IDE then fine with me.
However, I think we should all be able to agree that moving away from shortened commands and names benefits code maintenance and readability plus aligns better with other languages, especially if we use classes, braces, and other "modern" objectscript styles. Yes I know that I am showing my age, but note I avoided mentioning the "M" word 😂
Nice documentation.
Some niceties to add that I encountered, all available in the documentation link Iryna provided.
- The generated global names are often not very intuitive, you can set these yourself in the CREATE TABLE using
%CLASSPARAMETER USEEXTENTSET = 0, %CLASSPARAMETER DEFAULTGLOBAL = '^Packagename.Tablename';
- For concurrency checks similar to PostgreSQL you can add a version property.
CREATE TABLE ... ( ... xmin INT, ... ) %CLASSPARAMETER VERSIONPROPERTY = 'xmin'
Definitely someone worth celebrating.
Well done John.
If you don't use Inter Job Communication devices then set IJCBUFF and IJCNUM to zero.
You can also zero NLSTAB if you don't modify collations.
I would also turn off NETJOB if not running ECP.
DC Search by a single or range of versions applicable: Search by version | InterSystems Idea
You can also use iristerm directly in batch mode
or use IRISDB, an example is below
Backup Freeze/Thaw batch script pitfalls for VMWare (and solutions) | (intersystems.com)
Classes such as Config allow changing these values
Config.config - InterSystems IRIS Data Platform 2020.1 - including private class members
You could write methods to update these based on passed values and then call them externally from powershell using iris session or iris terminal
Very useful.
I tend to avoid post conditionals nowadays as I long ago realised, as with your other examples, readability was far more important.
Only one I do not personally do is the Command Arguments example, I'm old and set in my ways and like using the comma 😁
Another possible mention might be "goto".
Oh, and your note on functions not being case-sensitive is only for system (intrinsic) functions.
I think the message overall is we no longer have the same memory and screen limitations and so spaced out, readable, and maintainable code is far more important than the old compacted method of writing mumps/objectscript.
Hi, best thing would be to not use the built-in web server (PWS) and set-up your own Web Gateway in IIS or Apache.
These are links to some of the relevant documentation
Pipes are also a good way to interact with an OS command or external program
%SYSTEM.OBJ has various compile methods, you can compile individual classes, whole packages, whole namespaces, and so on.
https://docs.intersystems.com/iris20201/csp/documatic/%25CSP.Documatic…
You can also use them via $SYSTEM.OBJ... instead of ##class(%SYSTEM.OBJ)...
Thanks for the reply.
If a user needs to be able to monitor and operate a Production would they not still need access to that data base? Also, that table is granted via %ENSROLE_OPERATOR which such a user will need?
Thanks for the explanation, I assumed it worked something like that.
Do you agree with that approach though or would you prefer something more like Robert's description?
In my mind you don't create a database based on a specific file so the DAT should be swappable and retain the database settings, other database settings work that way.
It's good to hear this is going to be added. In the meantime we found using explicit ftps got around it but that may depend on how the ftps server is configured.
For explicit ftps I got a very helpful answer in a previous post
Explicit FTPS in Cache | InterSystems Developer Community | Data Import and
For curl, these help with how to do a POST
cURL - POST request examples - Mkyong.com
The command line response contains everything and if it is json the below can help
As Marc says though, what do you need to be able to do?
Hi, that was my understanding but I have seen resource issues caused by moving CACHE.DAT in the past and recently had an odd issue on IRIS then did the below to test it.
I just copied the IRIS.DAT from the USER database folder, which has the %DB_USER resource, to another database folder which had %DB_%DEFAULT and afterwards the other database had %DB_USER instead of %DB_%DEFAULT and so it seems the Resource does move with the DAT file.
The copy was done manually with windows file copies while IRIS was down and no config changes made.
This is all viewing the database resource via the portal in System > Configuration > Local Databases
That removes all " characters, while these are indeed doublequote's, someone could also mean "" where there are double quotes, as in quotes inside a quoted string (str="this is a quote"".")
For that
$translate(str,"""""","""")or I find it more readable to use the ASCII value so to remove
$translate(str,$c(34.34),"")or to replace with a single "
$replace(str,$c(34,34),$c(34))Good point, I guess it depends on the variables scope at that stack level, I generally just run it twice.
Either way, as you say, it is useful to know to do this to ensure "leftovers" don't interfere with later commands.
"reset" terminal session
%SYS 4d3>kill zremove quit %SYS>
Not 100% sure of the requirement but if you write the output from the Cache code as if it was to the terminal then you can redirect the output to a file by appending >output.file but I don't think cterm is the way to do that as cterm will trap all the output itself, you would need to use csession for that.
You could just write to a file in your Cache code or run an external command/script from inside the Cache code?
Access Denied is generally either a user permissions or a resource issue. However, from one of your screenshots it looks like you are connecting to a Cache install running an evaluation license? These can have limitations so it is also possible you are hitting a license (user/process) limit?
Most likely the user does not have permissions. Based on screenshots in other comments it looks like you are using the wrong password for the Marco user and that the Admin user is disabled but you have obviously been able to log into the portal and overcome the issue mentioned with selecting events? Would also be useful to check the console log for that time as well.
If this is still happening perhaps update this query with details on the username, whether that user works in the portal, and the latest errors in event log that relates to the studio failure, look at all entries for that time, not just the login failures, in case the issue is different.
Whoops I was in a rush and did a command line test, stupid.