Evgeny Shvarov · Jun 16, 2017 go to post

We can change the email in Global Masters to make it compatible with DC to let us count points in GM for your DC contributions. Would it work?

Evgeny Shvarov · Jun 15, 2017 go to post

At least you can have the benefits of Caché Web terminal itself: 

Code completion (methods, classes, properties, etc), code highlighting, nice SQL shell, endless history, etc.

Evgeny Shvarov · Jun 15, 2017 go to post

I think it would be a great thing. 

So in case you have open ssh port, you would be able to work in a handy, good looking, fool functional terminal with class code completion, code highlighting and SQL shell.

Definitely, makes sense to me. 

Evgeny Shvarov · Jun 14, 2017 go to post

Hi, Francisco!

I'm not sure we can modify the email.

But you can register as a new member with another email. Would it work for you?

Evgeny Shvarov · Jun 14, 2017 go to post

Iterating over indexed value can be very helpful. 

We have IndexOpen and IndexExists autogenerated methods (article on autogenerated methods) for persistent classes. I'm using these very handy methods a lot.

It would be great if somebody introduce Next/Prev autogenerated methods too e.g. via some NavigationAdapter class to derive from.

Evgeny Shvarov · Jun 10, 2017 go to post

HI, Mike!

You don't have to. DC Telegram Channel is introduced for those who loves Telegram  mobile app as a way to communicate.

It is yet another channel to deliver DC content which is already posted on DC or DC YouTube.

But, we plan to introduce DC bot which can be interesting and unique for DC Telegram Channel.

Evgeny Shvarov · Jun 9, 2017 go to post

Thanks, Vitaly!

That looks exactly like what I want. I'll give it a try. Except with not very clear magic with SQLStorage. 

Is there any way to "generate" compatible storage? And why SQLStorage? Why not default CachéStorage, but copy-pasted from Class A?

Evgeny Shvarov · Jun 9, 2017 go to post

VIews work for SQL access. I really need a kind of view, but for classes paradigm: so I could have access to Class B property P2 with Caché object access.

Evgeny Shvarov · May 31, 2017 go to post

When I've seen "ORM javascript" in the feature list I remembered yet another very interesting approach which is in fact the result of Hachathon took place in  Moscow two years ago: CNDO (Caché Node Data Object), project made by [@Nikita Savchenko], Anton Gnibeda and [@Irene.Mikhaylova].

Evgeny Shvarov · May 26, 2017 go to post

Thanks, Dan!

That definitely makes sense.

What I like about object callbacks is the code readability. Compare:

Method %OnBeforeSave(insert as %Boolean) As %Status [ Private, ServerOnly = 1 ]

{

if insert s ..CreationDate=$H

q $$$OK }

And 

Property CreationDate As %TimeStamp [ SqlComputeCode = { set {*}=$zdt($h,3) }, SqlComputed, SqlComputeOnChange = %%INSERT ];

What if I would need to refer to other properties in

{*)=expression() 

Or the expression would be complex and if I want to debug it?

Is there a way to keep callbacks readability and have the callback methods  be fired for object and SQL access both?

Something like:

Property CreationDate As %TimeStamp [ SqlComputeCode = { set {*}=..%OnBeforeSave(1) }, SqlComputed, SqlComputeOnChange = %%INSERT ];

Evgeny Shvarov · May 26, 2017 go to post

Thank you, Rubens, Fabian, Sean.

Agreed, that Initial expression is the best option here. And thanks for the explanations on the callbacks!

Evgeny Shvarov · May 26, 2017 go to post

Thanks, Sean!

JSON-RPC library

Would be great to look into this if you want to expose it some day.

Evgeny Shvarov · May 25, 2017 go to post

Hi, Vineeth!

See the sample of exporting and importing global to zip file on the fly from @Eduard Lebedyuk post:

set ^dbg=123
set s=##class(%Stream.FileBinaryGzip).%New()
do s.LinkToFile("1.xml")
do $System.OBJ.ExportToStream("dbg*.GBL", s)
do s.%Save()
kill
kill ^dbg
set s=##class(%Stream.FileBinaryGzip).%New()
do s.LinkToFile("1.xml")
do $System.OBJ.LoadStream(s)
write ^dbg
>123

Hope that helps.

Evgeny Shvarov · May 25, 2017 go to post

Yes, you are right and I agree. George, thank you very much for thorough explanations.