The whole point here is to move ∪ out of Key so you don't end up computing it twice (once inside Key and once to get the uniques) and so you can supply your own "alphabet".
Ah. I thought it might be more space conservative to define a single legend. Is that confusing? I could define it above the headers - or two separate ones
@PaulMansour We could add a symbol type (in fact, we already have one – it is just hidden, though a bug in old versions allowed you to access it…), but it isn't necessary for dictionaries.
We'd need a way to convert charvecs to/from symbols, of course, but it doesn't have to be a set of primitives.
@dzaima How so?
You can pretty much implement a dictionary type using a keyed default property of a class. Only real difference is that it ends up having reference semantics, afaict.
@Adám Array keys are lists of integers. Dictionary keys are arbitrary objects. But indexing functions assume keys are always lists, e.g. x≡⍬⌷x but you can't have that if ⍬ is a valid key
Hi Adam, pursuant to my last question about Conga, I'm proxying HTTP POST requests to the Conga server. I've tried controlling for all variables and I've duplicated the setup on the server on my local machine as much as possible, and the proxy system works on the local machine but not on the server.
I know the POST requests are being received on the server side because the APL interpreter prints the expected output, but rather than returning the expected output for the POST request that error appears
@phantomics that's correct... Conga maintains a hierarchy of objects, the root ('.'), the server (SRV00000000), and connections to the server (SRV00000000.CONxxxxxxxx). The invalid object means that the connection object doesn't exist. So, we need to figure out 1) did it ever exist, and if so, 2) what happened to it.
Using raw mode to process HTTP requests is less than optimal. HTTP mode has been around since Conga v3.0. But it sounds like someone else wrote the server component?
@Brian Ok, I've noticed that the POST requests take a very long time before the error message appears, they do nothing for like 5 minutes, then the interpreter prints the error and at the web browser's end a 502 error is returned
@Brian Correct, would it make sense to swap 'Http' for 'Raw'?
It's not as simple as just swapping 'http' for 'raw'...
But writing an HTTP server in Conga (using HTTP mode) is really easy.
@phantomics So, now things make a bit more sense... to process an HTTP request in raw mode you need to, receive data until you get CRLFCRLF (then you've got the headers)... then parse the headers for content-length... then listen for that many bytes and that's your payload. There's a lot of work being done, and it's easy to miss nuances, like a 0 length payload.
Ok, thing is, I know the data is being received by the server. The interpreter prints some data indicating that it has received and processed the request. The problem seems to be with returning.
@phantomics I'd really need to see the code to be able to tell what's going on... otherwise I'm just guessing at possible causes... there are lots scenarios that could be happening...
@phantomics I suspect you're not getting the entire HTTP message, and the connection is timing out and closing during the 5 minutes it's waiting and when it tries to send a response, the connection is already gone
Well, I'm happy to have learned a few things doing this. Knowing how to make something work and understanding the concepts are clearly two different things
Maybe, if they're common enough. I talked in the past about writing articles for a given subject "Reading and Writing files in Dyalog APL" and going over the related system names.
⎕ML, ⎕IO, etc. Seem important enough to highlight.
Some big crypto exchanges use kdb+, I'm guessing they found a use case where the special type speeds things up, perhaps with the special type you can very quickly process BTC address columns
@FawnLocke That looks nice, but if you want to save 1.5 lines, it wouldn't be too terrible to put ⍥ between . and ⍣, at least until I get my will with f⍥A…
Or actually, there are only 3 columns here, while the functions have 4 cols…
That's true. I like the order of ∘ ⍤ ⍥, though. And, yeah. You can make replace and f∘A their own columns but you're sacrificing order somewhere or introducing bad spacing
@Adám Perhaps. I've only looked a little into it; it's a bit intimidating as the first thing I was met with was that I had to change my keyboard layout, haha. :)