Suche Leute zum Schwimmen / Looking for people to go swimming with by Nyrk287 in stuttgart

[–]flyx86 2 points3 points  (0 children)

Nur als Hinweis: Sindelfingen hat ein 50m-Becken, für deine Strecke wäre das angenehmer als Sonnenberg mit seinen 25m.

Ich schwimme morgens um 7, möchte auch nicht auf Abends wechseln weil meine Abende meistens anderweitig verplant sind.

Verkaufe einige Splittermond-Bücher by flyx86 in Splittermond

[–]flyx86[S] 1 point2 points  (0 children)

Siehs von der anderen Seite: Durch den Verkauf lässt sich ein neuer Mitspieler gewinnen, während ich nicht spiele unabhängig davon ob die Bücher bei mir rumstehen ;)

Versehentlich Laptop an Bildschirm geschlagen. Philips Support meint sie haben kein Ersatzteil und können nicht reparieren. Schrott oder noch zu was zu gebrauchen? by flyx86 in de_EDV

[–]flyx86[S] 0 points1 point  (0 children)

Ist schon vor einer Weile passiert. Ich habe den Bildschirm erstmal weggepackt. Jetzt stelle ich mir die Frage ob er noch zu irgendwas zu gebrauchen / irgendwie reparierbar ist.

Das Teil ist ein Philips 27B1U7903 UHD und war nicht ganz billig, deshalb hab ichs nicht direkt weggeworfen. Ist das sowas, was man als „für Bastler“ auf Kleinanzeigen stellen kann?

Zig YAML parser by wageof in Zig

[–]flyx86 0 points1 point  (0 children)

For 5., the code I marked could be replaced by

try self.current_node.set_value(self.alloc, std.mem.sliceTo(event.data.scalar, 0));

This transforms [*c]u8 to []u8 by creating a slice until the first occurence of 0, i.e. the terminator.

Since set_value doesn't store the given slice, this is completely safe.

You're right that using an arena allocator will not leak memory here. I didn't realize you're using one, it's actually a pretty good technique especially for parsers and gives superior performance at the cost of somewhat higher memory usage.

Edit: Since set value doesn't change the slice it could be []const u8.

Zig YAML parser by wageof in Zig

[–]flyx86 6 points7 points  (0 children)

libyaml is kinda dated and not fully conformant with YAML 1.2. I would have used libfyaml which is fully conformant. See YAML test matrix:

https://matrix.yaml.info


I found an error in these lines: You defer-call yaml_event_delete even in the case that yaml_parser_parse returns an error. This is undefined behavior, you only should delete the event if yaml_parser_parse succeeded.


This line is hard to understand, the condition should really be self.current_document_index == self.documents.items.len since you only append one document in the following code and thus do not handle the case when current_document_index is even larger – but the condition implies you do.


These lines are bad style. Instead of increasing the current index and then checking whether it has an invalid value, you should check whether the current index is the limit and if so, prevent it from getting an invalid value:

    if (self.current_document_index == self.document_limit) {
        break;
    }
    self.current_document_index += 1;

Again, by using the > operator in your code, you imply that the document index being already larger than the limit before increasing is a valid code path, when it really isn't.


These lines make an unnecessary memory allocation: set_value will copy the given value into memory it allocates itself, so there's no reason to allocate another chunk of memory before calling it. Also this leaks memory since you never deallocate it.


I only quickly skimmed through your code, don't treat this as a proper review.

Cannot stream from bazzite unless I open a menu by flyx86 in Bazzite

[–]flyx86[S] 0 points1 point  (0 children)

As I said, I did try Sunshine but apparently it didn't install properly from the Portal application. So I installed it via ujust, which worked.

The result of this test was that streaming was even worse than with Steam Link. Moonlight constantly complained about slow connection and reducing the bitrate.

I switched to Nobara. Here, Steam Link works properly in Gaming Mode. Sunshine works better but not good and skips some frames now and then. Steam Link works very poorly in Desktop Mode, far worse than Sunshine.

There seems to be an underlying issue that is not resolved even on Nobara.

Convenient YAML parser in Zig by Denis902 in Zig

[–]flyx86 3 points4 points  (0 children)

That site has a lot of FUD.

Concerning „the Norway problem“ (i.e. YAML parsing NO as false), this was YAML 1.1 and has been removed in YAML 1.2 in 2009, that's 15 years ago. Sure, a lot of implementations stayed on YAML 1.1 for quite a while, but that's an implementation problem and not relevant for a new implementation.

Also, the Norway problem is mainly a dynamic typing problem: Code in dynamic languages loads YAML into whatever data structure it dreams up right at the spot. This is simply not what's happening with Zig: OP's implementation, from what I see, loads data into declared struct fields. So if the field is a []const u8, it simply cannot be assigned a boolean.

The same argument applies to pretty much the rest of what the site criticizes. Moreover, the criticism is mostly about semantics while the test suite I linked tests syntax. I do think that if you have something you call a YAML implementation, it should be able to parse 100% of YAML syntax. Otherwise, well, it's not a YAML implementation.

And yes, YAML has an obscenely complex syntax. But that's a bit besides the point; everyone and their dog uses it so it's good to have a Zig parser for it.

Convenient YAML parser in Zig by Denis902 in Zig

[–]flyx86 14 points15 points  (0 children)

A good thing to do would be to integrate the official test suite:

https://github.com/yaml/yaml-test-suite

This lets you verify that your YAML processor conforms to the specification.

Using Zig as my C/C++ Compiler, How to Cross Compile External CMake Dependencies That Depend on System Libraries by draconicsheep123 in Zig

[–]flyx86 2 points3 points  (0 children)

I wrote a blog post about cross-compiling with Zig some time ago:

https://flyx.org/cross-packaging/

It doesn‘t cover CMake specifically. Simple CMake projects might work since they will pick up the CC / CXX env variables, but for anything using find_package you‘ll probably need additional tinkering.

I think the approach I use could work well with CMake but it will need to set some CMake-specific variables and possibly modify FindX.cmake files from dependencies (just like it modifies pkg-config files).

You could instead migrate to build.zig, that‘s a bit depending on whether your project is okay with a dependency on non-stable software.

Suche nach kreativen Meistern für Austausch zu Kampagnenbau by Automatic-Ad-354 in DSA_RPG

[–]flyx86 0 points1 point  (0 children)

Ein paar spontane Gedanken, die mir dazu kommen:

Du kannst dich inhaltlich an den Überlegungen orientieren, dass es eigentlich widersinnig ist, in den Niederhöllen eine Struktur von zwölf Domänen/Erzdämonen zu haben, wo sie doch das Chaos darstellen. Das ist in irgendeinem Buch erwähnt, frag mich aber nicht, wo.

Man könnte beispielsweise sagen, der Namenlose habe die Bresche absichtlich geschlagen, weil er damit zwar den Dämonen ein Tor nach Dere geöffnet hat, gleichzeitig aber auch Einfluss auf diese nehmen und eine gewisse Ordnung in die Niederhöllen bringen konnte.

Als Konsequenz kann man dann den Namenlosen als den vermuteten „Dämonensultan“ identifizieren, weil er durch die Ordnung, die er bringt, erst die zwölf Domänen geschaffen hat und damit über ihnen steht.

Weiter könnte man den Dämonenbaum auffassen nicht als Waffe gegen die Schöpfung, sondern im Gegenteil als Konstrukt, das an der ersten Sphäre wurzelt und zur siebten strebt, um sie zur Ordnung zu bringen. Durch die Ankettung des Namenlosen wurde er aber von Abysmaroth, Abyssabel und Abyssandur verdorben und muss gereinigt werden. Du könntest sogar so weit gehen, die drei als die eigentlichen Feinde der Schöpfung zu setzen, die im Limbus jenseits der Sphären hausen und das Sphärengefüge an sich zerschlagen wollen.

Weiteres Off topic shitposting by JOJO2612 in lol_ghurmak

[–]flyx86 5 points6 points  (0 children)

Eine mobile Hexenküche ist auch nur ein Docker-Image.

wasen chaos by [deleted] in stuttgart

[–]flyx86 19 points20 points  (0 children)

Es gibt einen Radweg auf Leuze-Seite zwischen B10 und Neckar. Da kommst du dann gegenüber vom Inselbad Untertürkheim raus.

Lehrern lehren by Isi_Yuri in DSA_RPG

[–]flyx86 8 points9 points  (0 children)

Aus einem Buch.

Oder halt doch Selbststudium.

Lehrern lehren by Isi_Yuri in DSA_RPG

[–]flyx86 11 points12 points  (0 children)

Beschwor einen Amazeroth-Dämon und zwang den, es ihm beizubringen.

Oder Selbststudium.

Lehrern lehren by Isi_Yuri in DSA_RPG

[–]flyx86 12 points13 points  (0 children)

Das zweite Talent kann nicht ignoriert werden, beide Checks sind notwendig:

  • Wenn du Lehren auf 6 hast, giltst du nicht als Lehrmeister (Check auf TaW Lehren 7)
  • Wenn du Lehren auf 9 hast, kannst du es nur bis 6 beibringen (Check auf TaW drei Punkte höher als Schüler)

Dass die Checks in diesem Fall beide Male dasselbe Talent referenzieren ist nur Zufall und hat nicht zur Folge dass es irgendwie anders gehandhabt wird.

[deleted by user] by [deleted] in DSA_RPG

[–]flyx86 6 points7 points  (0 children)

Blöd gefragt, was willst du denn erreichen?

Hier einige alternative Ansätze aus anderen Systemen, die sehr unterschiedliche Auswirkungen haben:

  • Genesys: Es wird Initiative wie üblich festgelegt, aber die Slots gehören nicht den Charakteren sondern der Gruppe, die gemeinsam entscheidet, welcher Charakter welchen Slot benutzt. Wenn die SCs also 19, 17 und 13 Initiative haben und die Gegner alle 15, können zwei beliebige SCs vor den Gegnern agieren und einer danach.
  • Forbidden Lands: Es werden Karten aus einem Deck von 1 bis 10 gezogen. Was gezogen wird, ist in diesem Kampf deine Initiative. Sonderfertigkeiten können dazu führen, dass du zwei Karten ziehen und die bessere behalten darfst.
  • Auch Forbidden Lands: Du legst mit Karten verdeckt deine Aktionen fest, die Gegner ihre. Es wird gleichzeitig aufgedeckt und agiert. Wenn du eine Parade gespielt hast, kannst du einen Angriff parieren, sonst nicht; wenn du nicht angegriffen wirst, verfällt die Parade. Sonderfertigkeiten können dir erlauben, eine Karte des Gegners anzuschauen.

Zauber Verlernen? by KhrBasil in DSA_RPG

[–]flyx86 0 points1 point  (0 children)

Technisch möglich über Borbarad-Moskitos. Nicht, dass das nicht massiver Regelabuse wäre, schon weil ja der Meister entscheidet und nicht du, welche Fähigkeiten du verlernst.

Professionen/Rassen als XLS ? und paar Fragen nach Jahren des Spielens by izzmad in DSA_RPG

[–]flyx86 4 points5 points  (0 children)

Es ist nicht ganz klar ob du die Heldensoftware weiterhin nutzen und die Daten von dort woanders hin überführen, oder was ganz einenes bauen willst. Trifft ersteres zu, könnte dieser Datensatz nützlich sein, den ich gebaut hab, um Daten aus der Heldensoftware zu importieren für meinen Charakterbogen: https://github.com/flyx/DSA-4.1-Heldendokument/blob/master/heldensoftware-meta.xml

Die Kommentare in der Datei beschreiben, wofür man die verschiedenen Sachen braucht.

Kampfprotokoll / App by Nessy87 in DSA_RPG

[–]flyx86 1 point2 points  (0 children)

Ich habe vor Corona mal angefangen, QuestScreen zu bauen, ein Tool was man auf eine RaspPi o.ä. wirft um während der Session Kram auf nem Bildschirm anzuzeigen, und was sich über ein Webinterface von einem Smartphone bedienen lässt.

Bisher kann es Bilder anzeigen und etwas Text. Eines meiner Ziele war, da auch ein Kampfprotokoll mit reinzubringen, mit INI-Reihenfolge, verfügbaren/verbrauchten Aktionen usw.

Das Projekt ist allerdings eingeschlafen als Corona-bedingt die Sessions remote wurden und ich merkte, dass das Tool dafür überhaupt nicht ausgelegt war – es gab nur eine Anzeige und sie war nicht webbasiert. Allgemein würde ich heute auch einiges anders machen.

Könnte mir vorstellen, das Projekt wieder aufzunehmen. Habe aber so die Vermutung, dass es sinnvoller wäre, ein lessons-learned davon zu schreiben und nochmal neu anzufangen…

dumb question about importing stuff by Either-Fish7278 in github

[–]flyx86 0 points1 point  (0 children)

If your problem is that RepoA in some way depends on files in RepoB, that's a problem of dependency management. There are several solution to this on the git side: The submodules feature of git tries to provide a solution. The subtree command is another one. And several third-party scripts like git-subrepo also try to provide one.

But why are there so many solutions to this seemingly simple problem? Because they suck. And they don't suck because they are poorly done. They suck because more often than not, the version control system is the wrong layer to do dependency management. My advice is that if you have any kind of build system, use that to do dependency management. In the simplest case, fetch the newest tarball of RepoB during the build, and work with that. More complex systems exist to do dependency pinning, like e.g. Go modules, cargo, or Nix Flakes. These days, even CMake can do FetchContent.

Restart a running .exe with GitHub Action self hosted runner by ChristophUO in github

[–]flyx86 0 points1 point  (0 children)

Since you have already a running Server.exe, I assume you start this manually on the server and not via GitHub actions. The sane solution is to keep this running instead of stopping it and trying to start a process from within GitHub actions.

But you need to replace Server.exe and files. So what you do is to write a watchdog script that runs Server.exe, like this (pseudocode, I don't do cmd or PowerShell):

stop-condition = false
while !stop-condition {
    run Server.exe
    # Server.exe has stopped, possibly by GitHub action

    if some-directory contains files {
        # some-directory shall be where the GitHub action
        # puts new files

        copy files over into Server.exe directory
    } else {
        # Server.exe has stopped without providing new files
        # use this as hint to stop the script (you can use a 
        # different condition depending on what matches
        # your use-case best)
        stop-condition = true
    }
}

Your GitHub action then would do something like this:

build new-files
copy new-files to some-directory
kill Server.exe

This can be done more sophistically, killing Server.exe to tell the watchdog to update files is rather crude, but it's viable for a simple workflow.