go to post Dmitry Maslennikov · Mar 6, 2019 We do not have any way to suppress warnings, yet. As I know only SonarQube for Java supports it.
go to post Dmitry Maslennikov · Mar 2, 2019 I would not be so sure in your doubts about VSCode. VSCode itself supports refactoring staff, we just do not have it in ObjectScript extension, yet. Deleting obsolete classes, for sure very interesting and quite difficult task. But better to solve it another way, with just clean rebuild. Or for example I can add action delete in the context menu in server explorer, so, a developer will be able to manually delete any class/routine on the server from VSCode.
go to post Dmitry Maslennikov · Mar 2, 2019 To activate OS authentication in your docker image, you can run this code, in %SYS namespace Do ##class(Security.System).Get(,.p) Set p("AutheEnabled")=p("AutheEnabled")+16 Do ##class(Security.System).Modify(,.p) If you work with community edition, you can use my image, where you can easily define also user and password for external use. Running server $ docker run -d --rm --name iris \ -p 52773:52773 \ -e IRIS_USER=test \ -e IRIS_PASSWORD=test \ daimor/intersystems-iris:2019.1.0S.111.0-community Terminal connect $ docker exec -it iris iris session iris Node: 413a4da758e7, Instance: IRIS USER>write $username root USER>write $roles %All Or with docker-compose, something like this iris: image: daimor/intersystems-iris:2019.1.0S.111.0-community ports: - 52773:52773 environment: IRIS_USER: ${IRIS_PASSWORD:-test} IRIS_PASSWORD: ${IRIS_PASSWORD:-test}
go to post Dmitry Maslennikov · Feb 21, 2019 Just published version 0.7.10:New logoFixed backward compatibility with previous versions of Atelier APIFixed issue with license usage, due to losing cookiesSome other small fixes
go to post Dmitry Maslennikov · Feb 21, 2019 Unfortunately VSCode marketplace doesn't have any good analytics, but as I can see I have now already more then 300 installs.
go to post Dmitry Maslennikov · Feb 21, 2019 Hi, very interesting, could you the issue, I'll try to investigate it. And I think I will make next release with API version fix out of the schedule.
go to post Dmitry Maslennikov · Feb 20, 2019 You can extend UrlMap only by splitting routesWhile in one class you have this XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ] { <Routes> <Route Url="/class/:namespace/:classname" Method="GET" Call="GetClass" Cors="true"/> <Map Prefix="/something" Forward="Some.Your.Class"/> </Routes> } You can add one more class, whic will work only with routes started with /something with XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ] { <Routes> <Route Url="/more" Method="GET" Call="More" Cors="true"/> </Routes> } Where real route will be /something/more
go to post Dmitry Maslennikov · Feb 18, 2019 I need a new good icon for the project, can anybody suggest or draw something?
go to post Dmitry Maslennikov · Feb 17, 2019 Hi Jiri, please fill the issue. I will add a check for any previous versions of API. So, something which will require a newer version of API, will not work, but others should work.
go to post Dmitry Maslennikov · Feb 17, 2019 Set ht = ##class(%Net.HttpRequest).%New() Set ht.Server = "server" Do ht.SetParam("param1", "true") Do ht.SetHeader("myheader", "headervalue") Set tSC = ht.Get("/api/get", 1) Look at the second parameter in the call of Get method, it is a test flag, helps to understand how your request will actually go GET /api/get?param1=true HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; InterSystems IRIS;) Host: server Accept-Encoding: gzip myheader: headervalue Look at this code, it will do the same Set ht = ##class(%Net.HttpRequest).%New() Set ht.Server = "server" Do ht.SetParam("param1", "true") Do ht.SetHeader("myheader", "headervalue") Set ht.Location = "/api/get" Set tSC = ht.Get(, 1) Or even this code Set ht = ##class(%Net.HttpRequest).%New() Do ht.SetHeader("myheader", "headervalue") Set tSC = ht.Get("http://server/api/get?param1=true", 1)
go to post Dmitry Maslennikov · Feb 17, 2019 You can find them in the source of README [](https://www.intersystems.com/products/intersystems-iris/) [](https://www.intersystems.com/products/cache/) [](https://www.intersystems.com/products/ensemble/)
go to post Dmitry Maslennikov · Feb 13, 2019 It would be better if you could provide some of your code.
go to post Dmitry Maslennikov · Feb 5, 2019 I don't know exact task of Eduard, but I think, some time when you only one way to communicate with the server, and you need to do some task, why not to use it. But not all those tasks have to be asynchronous. Like here, you can connect, get response and disconnect, as well as with plain HTTP. Or connect, send request for some data, get response and disconnect. Websockets should keep connection alive. That's how it works, when you connected, you send any data, and get response, at any time, or get only response.
go to post Dmitry Maslennikov · Feb 5, 2019 And how it looks like just with telnet $ telnet echo.websocket.org 80 Copy-Paste this data GET / HTTP/1.1 Accept: */* Host: echo.websocket.org Connection: Upgrade Upgrade: websocket Sec-WebSocket-Key: 7BOhi3I1WkBoazaXv+MfWA== Sec-WebSocket-Version: 13 After the empty line, it will show response HTTP/1.1 101 Web Socket Protocol Handshake Connection: Upgrade Date: Tue, 05 Feb 2019 10:37:17 GMT Sec-WebSocket-Accept: /gSfI5y+P3MMhONARUXNHG5vrHc= Server: Kaazing Gateway Upgrade: websocket
go to post Dmitry Maslennikov · Feb 5, 2019 You should not forget that WebSockets is still used the HTTP protocol, so, you should send some headers first.Look at this my code, it uses plain OPEN, and I'm not sure if my example 100% correct, but works. set securityKey = $SYSTEM.Util.CreateGUID() set securityKey = $SYSTEM.Encryption.MD5Hash(securityKey) set securityKey = $SYSTEM.Encryption.Base64Encode(securityKey) set host = "echo.websocket.org" set url = "/" set port = 80 set device = "|TCP|"_port Open device:(host:port:"SCWD"::8192:8192:/TCPNOXY) Use device Write "GET ",url," HTTP/1.1",! Write "Accept: */*",! Write "Host: ",host,! Write "Connection: Upgrade",! Write "Upgrade: websocket",! Write "Sec-WebSocket-Key: ",securityKey,! Write "Sec-WebSocket-Version: 13",! Write !,*-3 Use device:(::"A":$char(13)) Set fullResponse = "" Do { Set response = "" Read response:1 Quit:'$test Set fullResponse = fullResponse_response_$char(13) } While $test Use 0 Close device Write !!,fullResponse In this case, it only reads the first response, which actually should be with HTTP headers as well. Something like this. HTTP/1.1 101 Web Socket Protocol Handshake Connection: Upgrade Date: Tue, 05 Feb 2019 10:51:37 GMT Sec-WebSocket-Accept: qU2IAmlBvnSoEctnti8lcbc4bVA= Server: Kaazing Gateway Upgrade: websocket It does not contain the first portion of data, which some WebSocket servers may send after initial connect. But if your server sends it, you should see it at the and of response. If you have to send something before, you should do it after the first response, which says that connection established and you can send any data. But not any, it should be in binary format, more details you can find here. Any responses also decoded.
go to post Dmitry Maslennikov · Jan 31, 2019 first of all, you have to check docker logs iristest2 And while you trying to use durable %SYS, you look at IRIS log /nfs/IRIS/iconfig/mgr/message.log. And as Jim already noticed, you have double dash when defining the variable ICM_SENTINEL_DIR
go to post Dmitry Maslennikov · Jan 31, 2019 Sorry for everybody who wanted to see my demo there, unfortunately, I can't go, because of some issues with getting a visa.
go to post Dmitry Maslennikov · Jan 30, 2019 If you can edit this code, you can try change to this. <Data name="DESCRIP_2"> <RetrievalCode> S {DESCRIP_2}=$P($G(^PHPROP({L1},"DESC_CODES")),"\",2) S {DESCRIP_2}=$S($L({DESCRIP_2}):$Get(^SEDMIHP($P({DESCRIP_2},","),$P({DESCRIP_2},",",2))),1:{DESCRIP_2}) S {DESCRIP_2}=$E({DESCRIP_2},1,80) </RetrievalCode> </Data> But not sure, if this correct. What I did there, is, wrapped retrieving data from global ^SEDMIHP with the function $Get() Or this way, with the default value <Data name="DESCRIP_2"> <RetrievalCode> S {DESCRIP_2}=$P($G(^PHPROP({L1},"DESC_CODES")),"\",2) S {DESCRIP_2}=$S($L({DESCRIP_2}):$Get(^SEDMIHP($P({DESCRIP_2},","),$P({DESCRIP_2},",",2)),{DESCRIP_2}),1:{DESCRIP_2}) S {DESCRIP_2}=$E({DESCRIP_2},1,80) </RetrievalCode> </Data>
go to post Dmitry Maslennikov · Jan 28, 2019 I see that so many people already installed this plugin. I hope many of you already tried it in action and have some thoughts about how it can be improved. Please fill issues about any troubles you found and any new features you would like to see. I want to make this tool useful for everybody, not only for me, I need your opinion.