« first day (456 days earlier)      last day (2193 days later) » 

2:18 PM
#tio alias view
 
@Adám
Command Aliases:
⍞← -> #TIO do apl-dyalog {0::⎕←⊃⎕DM⋄⎕←%args%}⍬
⎕← -> #TIO apl {0::⎕←⊃⎕DM⋄⎕←%args%}(⎕NS⍬).⍎'⎕CY''salt''⋄⎕SE.UCMD''←box on -f=on -t=tree''⊣enableSALT⋄⍬'
] -> #TIO apl {0::⎕←⊃⎕DM⋄⎕←⎕SE.UCMD'%args%'}(⎕NS⍬).⍎'⎕CY''salt''⋄⎕SE.UCMD''←box on -f=on -t=tree''⊣enableSALT⋄⍬'
⋄ -> #TIO apl {0::⎕←⊃⎕DM⋄%args%}(⎕NS⍬).⍎'⎕CY''salt''⋄⎕SE.UCMD''←box on -f=on -t=tree''⊣enableSALT⋄⍬'

Language Aliases:
apl-dyalog -> [apl]

Message Aliases:
)help -> %handle% [Dyalog APL Language Elements](help.dyalog.com/16.0/Content/Language/Introduction/…)
 
⋄ a←2 ⋄ ⎕←2×3
 
@Adám
6
 
2:42 PM
See a remarkable encoding of trees using arrays in 'High Productivity, High-Performance, Parallel-by-Construction Tree Manipulation with APL' with Aaron Hsu.
 
@Feeds this conference seems incredible. I'd love to attend the Haskell blockchain talk. Would be very useful to me right now :p
 
Ven
@J.Sallé haskellgit init . is the best way to create your own blockchain :-P
 
@Ven lol really? I know basically nothing of Haskell
 
Ven
@J.Sallé It was a git/blockchain joke; sorry.
 
Oh, I see hahahahahah
I'd like to learn that specifically because my BSc thesis is about blockchain
Now I wonder how difficult would it be to build a blockchain in APL >.>
 
Ven
3:15 PM
linked lists are easy to build
 
 
6 hours later…
9:29 PM
@Adám, 2 problems. No, 3:
 
@Stormwind Off-by-one error?
 
hehe
1) The forum search does not work at all.
2) The link to this chat is missing in dyalog.com's main page
 
@Stormwind I see.
 
3) What happened to .net's method.New? I have it in 89 functions, maybe 500 instances!!!
 
@Stormwind Community > Chat Room (Stack Exchange) and Learning > Stack Exchange Lessons.
@Stormwind What happened to it? (also, why are you not using ⎕NEW?)
 
9:32 PM
Ok, CTRL-F5 fixed that.
(was in browser cache, missing)
I have .New since years back.
More convenient, looks better...
It's gone?
 
ya..
Yes and Yes it says :-) (never visited that page b4)
@Adám i guess i can fix all those, but the code base is full of stuff like:
ref←#.Audio.New file(3≠∆1)
 
@Stormwind I've never used it. In which version did it work?
 
Iirc there was issues with enclosures, But it may be easy to fix all'em too. Will see.
14
ep←#.ByRef.New⊂#.Net.IPEndPoint.New(#.Net.IPAddress.Any)0
That'a why i found the forum search problem. Tried to search .new, then new, then and. No hits whatsoever :-)
 
@Stormwind I don't get it. Can you give me a complete example of something that works in 14.0? I.e. ⎕USING←'System' ⋄ something.New params ?
 
9:43 PM
@Adám
∇ test2;a;⎕USING
[1] #.⎕USING←,⊂'System,system.dll'
[2] a←DateTime.New ⎕TS
[3] a
@Adám (Remember to ensure you have ⎕using←0⍴⊂'' in ws root!)
 
@Stormwind Hm, yeah, that works in 13.0 but not in 14.1. (I don't have 14.0 installed at the moment.) I'll email John Daintree about it and get back to you.
 
@Adám Ok, wanted to get some info. So already 14.1? I am bound to 14.0, just trying to figure out how to update the interpreter for all users...
I can update the ws code smoothly, by replacing it at startup. From a special file, using ⎕OR etc.
Ie. replace locked functions with other locked functions.
But replacing the interpreter is another business. As i donly have a passive server - i use HTTP to grab the updates.
 
@Stormwind Yes, doesn't work in 14.1. It is probably just an oversight, and I suspect it is trivial to fix.
 
Ah... surprising that nobody has talked about it.
@Adám See each stormwind.exe has a serial number baked in, that matches the one of the USB stick the proggy is delivered on. Dongle.
 
@Stormwind I guess most prefer ⎕NEW
@Stormwind I see, DRM in Dyalog APL. We should maybe have a guest blog post about that.
 
9:57 PM
@Adám, ya. Atm i survive, though having quite a few different versions out there. I can anytime update to the http server my lastest ver, and the user gets it down regardless of his version. Ie. the http provides and image, then the local .exe finds the difference between itself and the image, and creates an optimised (targeted) .bin, that subsequently gets invoked at each startup. Fast as lightning, and covers all situations. EXCEPT
changing interpreter version :-)
 
@Stormwind That sounds neat, but doesn't it require that the user run as admin?
 
nope
 
@Stormwind So where does it store the downloaded stuff?
 
the actual .exe does NOT get modified. Only the ws, when it's already started. It replaces functions at run.
In a data file
nearby.
 
@Stormwind Very nice.
 
10:00 PM
@Adám, ya it has saved me. I'd be dead by now otherwise :-)
@Adám, it's all based on that you can ⎕FX a locked function with another locked one.
Then i have a lot of encryption & mambojambo to smear it. So advanced that i don't know myself any longer how it w0rks.
Sounds familiar? :-)
 
@Stormwind Hm…
 
@Adám, i do have a thought... about http-downloading a "base exe based on APL 16"... and then loccally, during the file write to disk, re-bake it with the dongle number. Ie. dl a data file, modd it, and save locally as .exe.
Will raise an antivirus alert ...
* and rename old stormwind.exe to stormwind.exe.1.old
Actully, @Adám:
The new .exe must start in a generic state, then grab a new s/n from somewhere, and save itself. I wonder it v. 16 can do that?
... when the ws is full of data and .net objects.
ouch
 
@Stormwind Exporting a bound executable under program control… Dunno. JD's dept.
 
@Adám, i use this all time:
2 ⎕NQ'.' 'Bind'(drive,':\stormwind\Stormwind.exe')'StandaloneNativeExe'(⍕4+32)'' 'c:\stormwind\stormwind.ico' 'MAXWS=1024000'
under prog control But it includes all objects/data in the ws.
 
@Stormwind Wait, you want to save the exe without content?
 
10:11 PM
Yep, absolutely @Adám
Clear clinically. I have absolutely no redundant data included
 
@Stormwind Maybe you can use APLProcess to launch a separate interpreter and populate that one as needed, then export?
 
@Adám maybe... i'll consider. Another Q is whether APL file-locks the .exe while executing it. Must check.
(If it's locked, i cannot rename it away and replace with a new one)
 
@Stormwind In worst case, APL can launch an OS script that waits for APL to close, does the renaming, then relaunches.
 
@Adám looks bad:
'c:\stormwind\stormwind.exe' ⎕ntie ¯1
FILE NAME ERROR: Unable to open file ("Det går inte att hitta filen.")
'c:\stormwind\stormwind.exe'⎕NTIE ¯1
... during CTRL-BREAK
Says it cannot find the file, which isn't true. Error anyway...
 
@Stormwind The Swedish error message is misleading.
 
10:17 PM
ya
damn!
Means i cannot replace the .exe when running it.
 
@Stormwind That does make sense, somehow.
 
WHY WHY WHY does it have to keep it locked @Adám
true
@Adám, hm - claccic? My bad? Hehe
*classic
hold
 
@Stormwind Actually, while the file may be locked for editing, you should be able to rename it. Maybe try with ⎕NRENAME?
2
A: How can a C++ binary replace itself?

Remus RusanuOn Windows at least an application running is locking its own .exe file and all statically linked .dll files. This prevents an application from updating itself directly, at leads if it desires to prevent a re-boot (if re-boot is OK the app can pass in the MOVEFILE_DELAY_UNTIL_REBOOT flag to MoveF...

@Stormwind ^
 
@Adám, i don't think rename is allowed if it's locked...
@Adám I could no test the lock situation yet, so unconfirmed. But your finding seems to tell enough.
 
@Stormwind Although this answer and this answer says renaming is OK.
 
10:25 PM
@Adám "Renaming of a running i.e. locked dll/exe is not a problem under windows"?
Hmmmm. And 36 upvotes.
@Adám i don't get this: "On Windows at least an application running is locking its own .exe file and all statically linked .dll files. This prevents an application from updating itself directly, at leads if it desires to prevent a re-boot (if re-boot is OK the app can pass in the MOVEFILE_DELAY_UNTIL_REBOOT flag to MoveFileEx and is free to 'overwrite' it's own .exe, as is delayed anyway).
This is why typically applications don't check for updates on their own .exe, but they start up a shim that checks for updates and then launches the 'real' application
re-boot... hm
 
@Stormwind What don't you get? (It should say least instead of leads.)
 
@Adám Ya, heh that confused my swenglish. Ok, they claim MoveFileEx is allowed on a running .exe, from within the exe.
@adOk. Move itself away, write a new with same name. Simple.
 
@Stormwind Isn't that Finnish Swenglish? (finnsk svengelska)
 
heh
Finns + english = contradiction
Swedish talking finns (6 % of us) have it much easier
 
@Stormwind Finnglish.
 
10:36 PM
hehe
huh what is that? "worse - You can perform this action again in 1 second. - retry / edit / cancel"
 
@Stormwind It prevents spamming chat.
 
"hehe" and "worse" triggers?
(bad grammar ofc :-))
@Adám, this all started by me discovering that i can now get AIS data in JSON format, from a server.
Unfortunately, 14.0 does not have the JSON i-beam
which forces me into v.16 - which is good anyway.
(AIS is what marinetraffic.com provides)
 
@Stormwind Why not go for 17.0 when you're at it? It extends the native file functions introduced in 15.0 to handle multiple files at a time.
 
@adt's availaböe already??,
 
@Stormwind Neither do the newest version. Those i-beams were transient. Now we have ⎕JSON.
 
10:44 PM
Absolutely, and it seems to work nicely!
 
@Stormwind No, but very soon. Some customers already have betas.
 
Ok
@Adám, if u're still awake, ⎕NEW makes it a bit more clumsy. This one:
refV2←#.ByRef.New⊂#.TV.Glob.TV_2DVECTOR.New 2⍴0
goes into:
⎕NEW #.ByRef(⊂⎕NEW #.TV.Glob.TV_2DVECTOR(2⍴0))
- parenthesis added twice
 
@Stormwind ⎕NEW #.ByRef,⎕NEW #.TV.Glob.TV_2DVECTOR(2⍴0) because refs are scalars.
 
True @Adám, goodf
 
@Stormwind I very much dislike parens, so I would even prefer: ⎕NEW #.ByRef,⎕NEW #.TV.Glob.TV_2DVECTOR,⊂2⍴0
@Stormwind You know you can edit your messages for half a minute?
 
10:57 PM
() vs ⊂ ... lol i dislike both.
Hm i've seen it happening, but haven't tried
aye :-)
 
@Stormwind The sandbox is a good place to go experiment with such.
 
Invitation accepted. I'll come when i have time!
I am totally dumb at chatting. And very experienced.
(if experience = having done that for a long time, that is)
 

« first day (456 days earlier)      last day (2193 days later) »