Idea for contestants.

Julyter Notebooks kernel for InterSystems ObjectScript.

Recently I developed bidirectional integration for Jupyter Notebooks. It allows you to create intelligent Business Processes with Python activities. Here's the code (it uses Native API for Python and there's less than a 1000 sloc in the whole integration). Here's some screenshots:

However, as you see currently only BPLs with Python are supported.

The idea for the app is simple - to do the reverse - add the ability for Julyter Notebooks to execute InterSystems ObjectScript code.

Why? It's a great tool for quick prototyping and demos!

How? Using Native API develop a wrapper kernel for InterSystems ObjectScript. Essentially all you need to do is to execute arbitrary string of code and return result. Check WebTerminal source code (by @Nikita Savchenko) to see how a similar application works.

Docs:

There's a workaround for import:

  Set dynObj = {}.%FromJSON(jsonStream)
  Set hexStream = dynObj.%Get("hex_stream",,"stream")
  Set base64Stream = dynObj.%Get("base64_stream",,"stream")
 
  Set dynObj."hex_stream" = ""
  Set dynObj."base64_stream" = ""
  Do dynObj.%Remove("hex_stream")
  Do dynObj.%Remove("base64_stream")
 
  Set newObject = ..%New()
  Set newObject.HexStream = hexStream
  Set newObject.Base64Stream = base64Stream
 
  Set tSC = newObject.%JSONImport(dynObj)

Without reports suggested by other users there's not much I can tell you.

What are global buffer sizes on prod/dev machines?

Preheat global cache by looping over data global and compare the timings after that.

List of utilities/reports that should help you:

  • pButtons – all info you  might need, open the ticket with WRC with this info.
  • mgstat –main metrics
  • PERFMON – get most used globals/routines
  • GLOSTAT – system metrics
  • %SYS.MONLBL – line by line code profiling
  • GLOBUFF – global buffer analysis

Check this series of articles by @Murray Oldfield.

but an approach could be with one client request end it, and return a new one

What for? Ending the session means the client exited. You can add additional user supplied cookie(s) and check/modify/delete them as you wish. On every request even.

The other option as mentioned is to encript trafic and therefore the cookie can no longer be used.

Cookies absolutely can be used with encrypted traffic. HTTP/HTTPS makes no difference for cookies sent by a browser.

That is right, but as long as the cookie session timeout is valid (let's say 60 seconds) anybody that intercepts that cookie is effectively authenticated as long as the timeout is valid.

Only as long as they share the same remote address. HTTPS offers additional protection. Really if someone can decode your HTTPS traffic to get the cookie you have a bigger problem.

Isn't there any way of invalidating a sessionID manually and creating a new one?

do %session.Logout()

Ends the session. Next request starts the new session.