fixed ![]()
- Log in to post comments
fixed ![]()
When you define UrlMap, you should remember, that Caché uses Regular expressions. So, you can just put (?i) before Url, to make regular expression case insensitive
XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ]
{
<Routes>
<Route Url="(?i)/user" Method="POST" Call="User"/>
<Route Url="(?i)/emailactivation" Method="POST" Call="EmailActivation" />
<Route Url="(?i)/login" Method="POST" Call="Login"/>
</Routes>
}It is possible to get some errors depends on how long query in your URL. It is not a good idea to have such long values in a query. And such value should be escaped to be valid to place in URL. Instead much better to send data as a form in POST.
Could you please edit your question and put correct source code.
I would also recommend using ^GBLOCKCOPY tool, for interactive coping globals from one database to another.
In my previous company, administrator used Veeam to backup Caché databases as well. And as I know it works well. It uses some scripts to call ExternalFreeze Caché before, and ExternalThaw after, just backup, without any checks. All Caché instances work on Windows.
command WRITE, outputs $listbuild in binary format, if you would use ZWRITE, it would show you $lb
I've just made variable from your output
USER>zzdump val
0000: 02 01 04 01 61 61 04 01 4A 4A ....aa..JJ
USER>zwrite val
val=$lb("","aa","JJ")
Just read the documentation and you will get everything needed to work with $listbuild
if $e(chunk,1,1)=$c(34)
Caché stores data from tables in globals in $listbuild format. So you can use $listget, to get value from the particluar column, but you should know number for your column.
Continuation of this article already available.
With Studio, you will have only one option, is to store sources from server's side. Any Studio plugin works in Caché, and this code could decide where to store code. But developers should also have access to the same folder. If you have authorization on your Caché server, it will be quite easy to split settings and storing sources on disk for every developer.
But If you would choose Atelier, you should not care about it. Atelier all changes store on client's side. And no matter how many developers works on one server.
How about to add basic authorization to WRC.
Now it is not possible to download some distributive from WRC in one command in Linux. In first, you should send login and password as a form, save cookies after some redirects. And then it will be possible to download with this cookies. And this command looks so big.
wget -qO /dev/null --keep-session-cookies --save-cookies /dev/stdout --post-data="UserName=$WRC_USERNAME&Password=$WRC_PASSWORD" 'https://login.intersystems.com/login/SSO.UI.Login.cls?referrer=https%253A//wrc.intersystems.com/wrc/login.csp' \ | wget -O - --load-cookies /dev/stdin "https://wrc.intersystems.com/wrc/WRC.StreamServer.cls?FILE=/wrc/distrib/$cache-lnxrhx64.tar.gz" \ | tar xvfzC - .
I would expect to see a much easiest way.
curl -u $WRC_USERNAME:$WRC_PASSWORD https://wrc.intersystems.com/wrc/WRC.StreamServer.cls\?FILE\=/wrc/distrib/$cache-lnxrhx64.tar.gz | tar xvfzC - .
Is it possible to do it, or maybe you can recommend some other way?
And also, will be good to get some API, where I could ask for link to latest version, or for some particular major version, e.g. 2017.1, and for particular platform. So, I could use it to download latest version.
Looks like, do you use integration in Studio? It is a Java application, and as you class is so big, maybe it working so long, and you did not wait for the result.
Have you looked at this project - COS-guidlines?
How about to share your style guide? Your github looks so empty, yet, in public repositories.
I would suggest also to use such a great tool as source code analyzer for COS, and it is the first ever for COS. You can look at the demo. This project is still in a progress, but anyway, can already help to prevent some bugs. And remember, that you can suggest adding some new rules, which you sure will be useful.
Some of such configuration classes contains methods Modify and Get, it may help to easy modify configuration, in a few lines
set props("DeepSeeEnabled")=1
set sc=##class(Security.Applications).Modify("/csp/myapp", .props)
Look at the documentation
Menu, Edit-> Find or Find in files
Would be much better, if InterSystems will add OpenSearch to their documentation. And I think it will be enough only for the public version. And in this case, it will be supported in all modern browsers, without installation anything external.
Something like this.
<?xml version="1.0"?> <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"> <ShortName>InterSystems docs latest</ShortName> <Description>InterSystems Ensemble Documentation latest Version</Description> <Url type="text/html" method="get" template="https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.SearchPageZen.cls?KEY=&KeyWord={searchTerms}"/> </OpenSearchDescription>
Try this
do ##class(%SYS.Journal.File).GetPrev("c:/cache/mgr/journal/20170330.002", prevFile)
write prevFile
Do you wait for any more variants?
Do not forget to mark the answer as accepted.
Do not forget to mark answer as accepted.
Do not forget to mark answer as accepted
I think maybe something like this
/deploy <cache-instance> webterminal
Nowadays when somebody says "chatbot", it means, that such a chatbot will work on one of the popular chats. Like, Slack, Telegram, or maybe Skype. So, where your chat bot will work?
About functionality. Some time in the organization could be useful, such commands as create the new instance, or maybe clone some old one. And anyway you missed at least one command, it is a list of available instances.
But for such bot, I think should be much more than just to start or to stop instances. It is also should support, something like deploying some services there.
you should look at XSLT, it can help transform xml as you need
ClassMethod SplitXML()
{
for item="market","product" {
set params("path")="/doc/"_item
Set tSource=##class(%Dictionary.CompiledXData).%OpenId(..%ClassName(1)_"||XML").Data
Set tXSL=##class(%Dictionary.CompiledXData).%OpenId(..%ClassName(1)_"||XSL").Data
// Transform the source according to the XSL
Set tSC=##class(%XML.XSLT.Transformer).TransformStream(tSource,tXSL,.tOutput,,.params)
If $$$ISERR(tSC) Quit
write !!
// Output the result to the screen
Set tSC=tOutput.OutputToDevice()
}
}
XData XML
{
<?xml version="1.0"?>
<doc>
<header></header>
<product><test>1</test></product>
<market><test2>2</test2></market>
</doc>
}
XData XSL
{
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:param name="path"></xsl:param>
<xsl:output method="xml" indent="no"/>
<xsl:template match="/">
<xsl:copy-of select="$path"/>
</xsl:template>
</xsl:stylesheet>
}will output like below
USER>d ##class(Test).SplitXML() <?xml version="1.0" encoding="UTF-8"?><market><test2>2</test2></market> <?xml version="1.0" encoding="UTF-8"?><product><test>1</test></product>
you can do it with ccontrol tool
Syntax: ccontrol create <instance name> <parameters> Description: Create an instance's entry in the Cache registry. Parameters: directory=<installation directory name> versionid=<version identifier> Example: ccontrol create mystuff directory=/usr/cachesys versionid=2008.2.0.357.0
What are you going to deploy?
To deploy some application you can use Installer Manifest.
Look at this article.
It is not so simple as would appear in the first time. Because you can have some mentions to old package in a source. In studio only possible to rename some class with refactoring feature. Unfortunately, this feature is not documented, or I have not found.
Stay tuned, I'm going to show how to do it the next part.
Hi, I would not recommend thinking seriously about Caché in windows server core container, I think it is too early, yet.