go to post Dmitry Maslennikov · Jan 2, 2017 Thanks, and thanks for your articles hope to see next article soon.
go to post Dmitry Maslennikov · Jan 1, 2017 Did you install 2016 version on the same machine where you had Cache 2014? For me, it looks like, the error on AutoCAD or Windows side, not on Caché side. But anyway I think you should ask for help in WRC.
go to post Dmitry Maslennikov · Jan 1, 2017 Plase add some more details, what do you mean by slowly?Do you work remotely? Is it still slowly if connect locally on the server?
go to post Dmitry Maslennikov · Jan 1, 2017 You should look at the requirements part at this download Atelier page. Where you will see that Caché should be licensed.
go to post Dmitry Maslennikov · Jan 1, 2017 Well, there are some different reasons to do it: optimization network traffic for readers. You should remember, that you wrote the public article for people all around the world, with different quality of their network connection. Some people may even disable images for loading. in slow internet connection, you may see empty spaces for your images, while it will be loaded. it is a bit difficult to recognize your terminal images due to the white background, the same as for page. If you put it as a formatted text, it will have the different background.
go to post Dmitry Maslennikov · Dec 29, 2016 I would recommend to use a bit modern way set rs=##class(%Routine).RoutineListFunc("ABC*.int") while rs.%Next() { write !,rs.Name }
go to post Dmitry Maslennikov · Dec 28, 2016 Tani, please change all terminal samples and samples of code from pictures to plain formatted text.
go to post Dmitry Maslennikov · Dec 26, 2016 InterSystems still support only SQL-92. While WITH appeared only in SQL-99. So, Caché doesn't support it.
go to post Dmitry Maslennikov · Dec 23, 2016 w #,*27,"[32m" s $lb(tw,th,twi,c,tp,l)=$lb(2,4,8,40,4,24) while (l-th>tp) { f st=0:1:th-1 { s y=tp+st,x=c-(tw/2),w=tw-1 s:w ts(y)=$lb(x,w) w *27,"[",y,";",c-(tw/2),"H/",*27,"[",y,";",c+(tw/2),"H\" s tw=twi/th*2+tw } s tp=tp+th,tw=tw-twi } w !,*27,"[0m","Press any key to exit" f { w *27,"[",y,";",x+1,"H",$j("",w) f i=1:1:y\4 { w *27,"[",$r(10)+30,"m",*27,"[",y,";",$r(w)+x+1,"Ho",*27,"[1;1H"} s y=$o(ts(y),-1,d),$lb(x,w)=d i w<5 {s y=$o(ts(""),-1) h 0.3} r q:0 q:$t } w *27,"[0m"
go to post Dmitry Maslennikov · Dec 22, 2016 It is a very different question, please create as a separate one.
go to post Dmitry Maslennikov · Dec 20, 2016 Before doing such task, you should know a bit more about technologies which you going to use. PDF - it is a binary format, so, you can't just copy text from PDF. Some of the files may contain a text, some just a picture with text. And to get plain text from PDF, you have to use some third party OCR software. One of the leaders is ABBYY FineReader it is proprietary, but if you need you can find some products for free.
go to post Dmitry Maslennikov · Dec 13, 2016 Thanks, I had not noticed Problem View before. But now I see that problem in some file, which was found by Atelier in a project folder. And in my case, error was File is too large to parse properly for file jqeury.min.js.
go to post Dmitry Maslennikov · Dec 13, 2016 Thanks, for such a good project. Hope to see open source repository with it.
go to post Dmitry Maslennikov · Dec 13, 2016 Look at this article here. It helps you to write some method in this class for this task.
go to post Dmitry Maslennikov · Dec 9, 2016 I would suggest that you have authorization in your web-application, and SoapUI fails to load it because it is not authorized. follow the documentation and add it to the URL. &CacheUserName=_SYSTEM&CachePassword=SYS
go to post Dmitry Maslennikov · Dec 8, 2016 When you want to use Ensemble on Docker, it means that you need some integration with some external services. When you have to connect to some external services, no need any extra actions. But when you should use some shared folder, or some own internal services, which will be used by others, you have to expose some TCP ports, or volumes, and do some changes in a running process for this container. But you can use some network settings for the container, and in this case, Ensemble will be as a usual machine in your network, and you don't need to change any settings when you have to add some new internal service into Ensemble Production. Windows also supports Docker but from version Server 2016. Windows also supports windows containers, but I don't know yet, is it supported to run windows version of Ensemble or not. What you need to start your first Ensemble container within Ensemble application. The easiest way is to define some %Installer Manifest. When you can create a new database, load and compile your code, do some changes in an Ensemble settings. There are some different examples of Dockerfile. Quite simple, with only Ensemble. Or even with Apache inside, for some web application. You can also look at this example of Dockerfile ### Cache ### FROM tutum/centos:latest MAINTAINER Dmitry Maslennikov <Dmitry.Maslennikov@csystem.cz> # update OS + dependencies & run Caché silent instal RUN yum -y update \ && yum -y install which tar hostname net-tools wget \ && yum -y clean all \ && ln -sf /etc/locatime /usr/share/zoneinfo/Europe/Prague ARG WRC_USERNAME ARG WRC_PASSWORD ARG cache=ensemble-2016.2.1.803.0 ARG globals8k=512 ARG routines=32 ARG locksiz=117964800 ENV TMP_INSTALL_DIR=/tmp/distrib # vars for Caché silent install ENV ISC_PACKAGE_INSTANCENAME="ENSEMBLE" \ ISC_PACKAGE_INSTALLDIR="/opt/ensemble/" \ ISC_PACKAGE_UNICODE="Y" \ ISC_PACKAGE_CLIENT_COMPONENTS="" \ # vars for install our application ISC_INSTALLER_MANIFEST=${TMP_INSTALL_DIR}/Installer.cls \ ISC_INSTALLER_LOGFILE=installer_log \ ISC_INSTALLER_LOGLEVEL=3 \ ISC_INSTALLER_PARAMETERS="routines=$routines,locksiz=$locksiz,globals8k=$globals8k" # set-up and install Caché from distrib_tmp dir WORKDIR ${TMP_INSTALL_DIR} # our application installer COPY Installer.cls . # custom installation manifest COPY custom_install-manifest.isc ./$cache-lnxrhx64/package/custom_install/manifest.isc # license file COPY cache.key $ISC_PACKAGE_INSTALLDIR/mgr/ # cache distributive RUN 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 - . \ && chmod +r ./$cache-lnxrhx64/package/custom_install/manifest.isc \ && ./$cache-lnxrhx64/cinstall_silent custom_install \ && cat $ISC_PACKAGE_INSTALLDIR/mgr/cconsole.log \ && cat $ISC_PACKAGE_INSTALLDIR/mgr/installer_log \ && ccontrol stop $ISC_PACKAGE_INSTANCENAME quietly \ && rm -rf $TMP_INSTALL_DIR # Caché container main process PID 1 (https://github.com/zrml/ccontainermain) RUN curl -L https://github.com/daimor/ccontainermain/releases/download/0.1/ccontainermain -o /ccontainermain \ && chmod +x /ccontainermain # TCP sockets that can be accessed if user wants to (see 'docker run -p' flag) EXPOSE 57772 1972 22 ENTRYPOINT ["/ccontainermain", "-cconsole", "-i", "ensemble"] And installer manifest, with just some settings. Class Temp.Installer { XData setup [ XMLNamespace = INSTALLER ] { <Manifest> <If Condition='+"${routines}"=0'> <Var Name="routines" Value="32"/> </If> <If Condition='+"${globals8k}"=0'> <Var Name="globals8k" Value="256"/> </If> <If Condition='+"${locksiz}"=0'> <Var Name="locksiz" Value="1179648"/> </If> <SystemSetting Name="Config.config.routines" Value="${routines}"/> <SystemSetting Name="Config.config.globals8kb" Value="${globals8k}"/> <SystemSetting Name="Config.config.locksiz" Value="${locksiz}"/> </Manifest> } ClassMethod setup( ByRef pVars, pLogLevel As %Integer = 3, pInstaller As %Installer.Installer, pLogger As %Installer.AbstractLogger ) As %Status [ CodeMode = objectgenerator, Internal ] { do %code.WriteLine($char(9)_"set pVars(""CURRENTCLASS"")="""_%classname_"""") do %code.WriteLine($char(9)_"set pVars(""CURRENTNS"")="""_$namespace_"""") #; Let our XGL document generate code for this method. Quit ##class(%Installer.Manifest).%Generate(%compiledclass, %code, "setup") } } In this example, Ensemble distributive will be downloaded directly from the WRC. to build this image docker build -t ensemble --build-arg WRC_USERNAME=******* --build-arg WRC_PASSWORD=******* . and to run the container from this image docker run -p 57772:57772 ensemble
go to post Dmitry Maslennikov · Dec 3, 2016 You can do it even with Caché, but you have to implement it by yourself. I think, the client for FHIR exists only in HealtShare products. But FHIR it is just a REST server, and you can do some connections quite easy, with latest versions of Caché, where JSON was appeared.
go to post Dmitry Maslennikov · Dec 3, 2016 Most companies doing their backup over the network. It depends on how big your database, and you should estimate, how quickly it will be in your case theoretical and in practice. Unfortunately, on some old versions of Caché, in some cases there are some lack of performance and backup may work not so fast as expected. We had such issue with 2012.2.And a little hint, to do backup over the network, Caché instance should have an access. And if your Caché works on Windows, you should change user in settings for Caché Service, to some domain user, which will have access to write.