Welcome to MUGS ⚄♠♞🏹 (Multi-User Gaming Services)! | github.com/Raku-MUGS | v0.1.4 has been released! (github.com/Raku-MUGS/MUGS/blob/mai...v0.1.4.md) | This channel is logged for historical purposes; logs at irclogs.raku.org/mugs/index.html Set by japhb on 3 March 2024. |
|||
greenfork | I'm not sure I understand what actions I need to do to solve my problem | 06:31 | |
I replaced all the "need" things with a single `use lib 'lib';` | 06:41 | ||
And now it loads as I expect it to, with reloading the code | 06:42 | ||
Apprently `need` used cached version of my packages | |||
japhb: I wonder how much time does it take for you to run `mugs-cli adventure` and quickly quit. It takes 4 seconds on my end. Does it have to take so long? I want it to start instantenously | 06:47 | ||
japhb: Did you try profiling mugs-cli with raku --profile? It spits out 50-80 MiB html files that have dubious numbers, too big | 07:44 | ||
japhb | greenfork: `mugs-cli adventure` and then ^C takes 2 seconds here (less than 2.1 to be precise, and some of that is my reaction time to hit ^C) | 15:13 | |
Haven't run a profile in a while. | |||
(And don't have time to do so this morning; I've got some other tasks in front of me.) | 15:16 | ||
Still, can you give me an idea *which* numbers are dubious and too big? | 15:17 | ||
greenfork | 2 seconds is acceptable I think. Maybe I have too slow hardware for Raku :^) | 16:29 | |
Basically all the numbers are big enough to not fit on the screen and the entire html document scrolls to the right | 16:30 | ||
All interactivity doesn't work too, 50 MiB of data is too much for Angular to handle I guess | 16:31 | ||
Why in UI code I can't refer to `has $.app-ui;` as `$!app-ui`? I can refer to it only as `self.app-ui` and `$.app-ui` which I assume is through its public getter | 19:53 | ||
When I use `$!app-ui`, I get an error running mugs-cli rrp : Cannot launch 'rrp'; missing UI plugin. | |||
japhb | BAK ... I still think it's weird that your hardware would be "too slow", since it sounds pretty capable to me. | 20:46 | |
My laptop CPU: 12th Gen Intel i7-1280P (20) @ 4.700GHz | 20:48 | ||
Or at least that's what neofetch says. I suspect that clock rate is the max boost, which I sure wouldn't want to use on all 20 hardware threads. | |||
I'm swimming in RAM on this box though, since I originally bought it for running VMs, which is why I asked if you were limited there (but again, it sounds like you weren't). | 20:49 | ||
Ah I wonder if the profiler has gotten confused by the inter-thread data flow, or it's defaulting to giving times in nanoseconds or something like that. | 20:50 | ||
Most of the time I need performance details, I need them in very specific places, so I instrument those directly. It's hard to tune a twitch game that's running at a fraction of its normal frame rate, so I don't tend to use whole-stack profilers as often for Raku work. | 20:52 | ||
Note that if you're having trouble on one of the big browser engines, try the other one. As I recall, since Angular was written at Google, it tends to work better on Chrome/Chromium. | 20:53 | ||
And now for the final part of your questions, the bit about actual Raku code. :-) | 20:54 | ||
$!app-ui is the internal, private name of the attribute; it is only visible in its own class (and any roles that were directly mixed into that class before it was composed). | 20:56 | ||
self.app-ui is calling the auto-generated public getter method (implied by the period in `has $.app-ui` -- saying `has $!app-ui` would be saying *not* to autogenerate the getter). | 20:57 | ||
$.app-ui desugars to self.app-ui.item | |||
A class *can* declare the ability for particular other classes to see its private attributes, but this is generally considered an anti-pattern. If you have a legit reason to be looking at the private bits of other classes, it's generally better to use the metamodel facilities for that. | 20:59 | ||
Private, after all, is the freedom to change internals without changing all the dependencies, and reaching into the guts of another class and messing around violates that contract. | 21:00 | ||
There are cases where you need to have a private attribute with manually written public getter and setter, usually because you need to run extra logic at get/set time than merely assigning a data item, and I do that with some regularity. | 21:02 | ||
I know that was a lot ... hopefully it helped. :-) |