go to post Jon Willeke · Aug 8, 2018 Compared to a delimited string, lists have the overhead of storing the length of each element, typically one extra byte. Numbers and Unicode characters are also stored differently, sometimes more efficiently, sometimes less. Otherwise, there is no difference between fetching a delimited string or a list. The DataBlkRd and DataBlkBuf columns shows that ^StringGlobal was read entirely from global buffers, whereas ^ListGlobal had to read over 9,000 blocks. In each case, it seems that the global occupies about 17,000 blocks; about 136 MB, assuming 8 KB blocks. I suggest that you do the following: configure 256 MB or more of global buffers restart the instance run one of the tests twice restart the instance run the other test twice Based on your numbers, the first runs will be cold, and should take a minute or two. The second runs should be essentially instantaneous.
go to post Jon Willeke · Jul 23, 2018 When you call %ToJSON() in a DO context, it writes to the current device, which should not cause a MAXSTRING error. However, due to an interaction with I/O redirection, you should preface the call with WRITE "": write "" do specimenArray.%ToJSON() This may be fixed in recent versions.
go to post Jon Willeke · Jul 17, 2018 Yes. Use the SYS.Database class to create a .DAT file, Config.Databases to create a database definition (what we used to call a dataset), and Config.Namespaces to create a namespace. These are all in %SYS, so you'll need the appropriate privileges.
go to post Jon Willeke · Jul 16, 2018 You should create properties for keys that you want to query. Take a look at this section in the online documentation: https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls... Also, there is a brief description in the reference for the %DocDB.Database class: http://localhost:52773/csp/documatic/%25CSP.Documatic.cls For example: USER>s db=$system.DocDB.CreateDatabase("Fitabase1") USER>w db.%CreateProperty("TotalSteps","%Integer","$.TotalSteps") 2@%DocDB.Database Now the ISC.DM.Fitabase1 class (or whatever your generated class is) has a TotalSteps property. If you already have data, you need to populate the associated index. A quick and dirty way to do this is an SQL query like the following: update ISC_DM.Fitabase1 set %Doc = %Doc I'm not that familiar with DeepSee / Analytics, but the output of %CreateDatabase() and %CreateProperty() is a standard persistent class.
go to post Jon Willeke · Jun 6, 2018 Yes, if you're getting errors about print in Python 3, I second Iain's suggestion to look for the setup3.py script. I just did this successfully using an Anaconda 4.4 install of Python 3.6.1.
go to post Jon Willeke · Jun 5, 2018 I encourage you to get in touch with the WRC, but if you post more information, we might be able to make some progress. For starters, what version of Caché and Python, and what kind of errors are you seeing? I successfully built the binding using the following: macOS 10.12.6 (Sierra) Python 2.7.10 (built-in version) command line tools for Xcode 8.3.3 Cache 2017.2.1 build 801U It looks like I got a total of eleven compiler warnings. As described here, it's a bit tricky to actually use the binding with the system version of Python due to Apple's System Integrity Protection (SIP): https://community.intersystems.com/post/installing-intersystems-python-b... This may be fixable with some install_name_tool surgery, but a separate installation is recommended.
go to post Jon Willeke · Mar 13, 2018 You can use the $ziswide intrinsic function to check whether a global is portable to an eight-bit instance.
go to post Jon Willeke · Mar 13, 2018 The statement in your post is not well formed. The value for the description field starts with a single quote, contains a couple of double quotes, but is not terminated with a single quote.
go to post Jon Willeke · Feb 21, 2018 $double and dynamic objects also poke holes in the idea that everything is a string: USER>w [1,"2"].%ToJSON() [1,"2"] USER>s d=1,b=$double(d) w d," ",d/3,!,b," ",b/3 1 .3333333333333333333 1 .33333333333333331482
go to post Jon Willeke · Feb 1, 2018 Argumentless DO is still the simplest way to introduce a scope to NEW a variable, including $namespace or $roles. Yes, you can extract that out to another procedure or method, but I often prefer to do it inline.
go to post Jon Willeke · Jan 11, 2018 That's precisely the intended meaning of orthogonal in this context. All four combinations of public/private and class/instance are distinctly meaningful and useful in their own right. The concepts are separate, independent.
go to post Jon Willeke · Jan 11, 2018 The two concepts are orthogonal. A class method doesn't need an instance; a private method is only visible from within the class. As a contrived example, consider a public hello() class method that calls a private greet() class method. Is it safe to change a class method from private to public? In the immediate term, sure, but now it's a public part of the class's interface with all the maintenance responsibilities that entails. I don't see how that's obviously any different than an instance method.
go to post Jon Willeke · Dec 21, 2017 See this announcement about changes to JSON support late in the 2016.2 field test: https://community.intersystems.com/post/cach%C3%A9-20162-and-20163-field... See this post for more details: https://community.intersystems.com/post/json-changes-cach%C3%A9-20162 As for %ToJSON() on registered objects, that too was removed in 2016.2, pending a redesign.
go to post Jon Willeke · Dec 20, 2017 The main change for 10.11 (El Capitan) and 10.12 (Sierra) is that /usr/lib is not writable, due to System Integrity Protection (SIP). You'll have to put the ODBC modules into /usr/local, and tell php.ini where you put them; e.g., extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/odbc.so extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/pdo_odbc.so
go to post Jon Willeke · Sep 15, 2017 Take a look at the WebServer setting in the portal at Configuration > Additional Settings > Startup: http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=... This changes the WebServer entry in the [Startup] section of cache.cpf.
go to post Jon Willeke · Sep 11, 2017 If you're connecting to the local system, you don't need to use Telnet. Use the cn_ap option described in the link that Peter posted.
go to post Jon Willeke · Aug 23, 2017 Tim's comment demonstrates that $get leaks an OREF when $this is used as a subscript of an array that doesn't exist. That's a bug. An OREF as a number is unique within a process, so +$this is more compact, and potentially faster than ""_$this. You should never see, e.g., 1@foo and 1@bar at the same time.
go to post Jon Willeke · Aug 14, 2017 I notice two things: The C# ciphertext is 64 bytes, which is twice as long as I'd expect for a 31-byte input. In the first sixteen bytes of the C# ciphertext, alternating bytes are NUL. I thought maybe C# is using UTF-16, but I I haven't managed to replicate its output using $zconvert with "UnicodeLittle" or "UnicodeBig". Edit: the first sixteen bytes of the output appear to be the first eight bytes of the initialization vector converted to Base-64, then UTF-16.
go to post Jon Willeke · Aug 14, 2017 "Escaped hex sequence too large" means that a hexadecimal escape sequence couldn't be decoded. I suspect that you've encountered a Unicode character that can't be handled on your eight-bit instance.