ich freue mich auf den Besuch meiner Schwester und meiner beiden Neffen am 3. Advent.
Ich freue mich auch auf Weihnachten und den Jahreswechsel ![]()
Seit einigen Jahren kann ich das zum Glück wieder genießen...
Fühlst du dich manchmal allein mit deinen Fragen oder Erfahrungen rund um Schizophrenie und Psychosen?
Bei Schizophrenie-Online bist du nicht allein. Tausche dich in unserem Forum aus, lies hilfreiche Beiträge im Wiki, entdecke persönliche Blogs und chatte mit Menschen, die ähnliche Erfahrungen machen – sicher und respektvoll.
Jetzt kostenlos registrieren und Teil unserer unterstützenden Community werden. Gemeinsam ist vieles leichter!
ich freue mich auf den Besuch meiner Schwester und meiner beiden Neffen am 3. Advent.
Ich freue mich auch auf Weihnachten und den Jahreswechsel ![]()
Seit einigen Jahren kann ich das zum Glück wieder genießen...
N'abend zusammen!
Ich übersetze grad das Python-Programm Kinetix hier :
in C.
Das sind die Codebeispiele aus dem Buch "Code the Classics Vol. 2"

Leonardo : Hallo und vielen Dank für dein Lob. Eventuell können du und Ardentglow euch ja demnächst in das Tetris-Programm mit einbringen mit den jeweiligen Talenten wenn ihr Bock habt. Ich hab nämlich z.B. das Problem, dass, egal wieviel Mühe ich mir bei den Grafiken gebe, aus meiner Sicht fehlt da das gewisse etwas.
Hier sind im Verzeichnis data und Unterverzeichnisse die Grafiken glaube noch als Windows-BMP abgelegt. Nicht mehr ganz aktuell. Der aktuellste Stand arbeitet schon mit PNGs.
https://adler-auge.net/downloads/Cetris-main.zip
Aber ich habe erstmal noch was anderes auf dem Plan (im Alltag) - was ich über die Bühne bringen muss, bis ich den Kopf wieder richtig frei habe
P.S.: Ich wäre auch gern künstlerisch begabt. Kann man viel wertvolles mit machen und erreichen im Leben wenn man sich früh und viel übt.
ich code hobbymäßig ein wenig. bspw grade in rust ein bruteforce tool geschrieben. öfter kleine tools in python und publish auf streamlit..
ich merke aber wie mir bereits zu einem professionellen code noch sehr viel fehlt.
und die wirklich interessanten Sachen braucht man wirklich so tiefes know how, dass man eigentlich gleich IT studieren kann.. 😑
Einige der bekanntesten und besten Programmierer der Welt haben als Hobby-Entwickler in Kindertagen angefangen, haben nie studiert und werden auch nie studieren.
Ich war z.B. noch nie ein wirklich guter Programmierer, ganz einfach, weil ich kein wirklich guter Mathematiker bin.
Programmieren kann ich "ganz gut" (und mehr auch nicht) - auch - weil ich das 10 Jahre lang professionell für diverse Konzerne erledigt habe.
Und glaub mir : die Programmierer dort kochen auch nur mit Wasser - und insofern du nicht - nebenbei - z.B. in Open-Source-Projekten mitarbeitest oder deine eigenen Projekte betreibst, fehlt dir schlicht und einfach die Übung und die Erfahrung, um allein schon den Umfang zu stemmen.
In alle anderen noch so schwierigen Themen kann man sich nach und nach einarbeiten. Dazu muss man kein Genie sein : man muss nur ein sehr starkes Interesse dafür haben und Geduld.
Was ich dir empfehlen kann : Lerne C (nicht C++!) als erste Programmiersprache - weil kaum eine andere Sprache dich so sehr die "Denke" des Computers verinnerlichen lässt. Assembler ist da vielleicht noch besser für geeignet. Assembler nehme ich mir demnächst nebenbei vor.
Du musst verstehen : ein Prozessor kann im Grunde : gar nichts - außer :
- Speicherzellen auslesen
- Speicherzellen beschreiben
- Zahlen die aus dem Speicher in die Register geladen wurden mathematisch miteinander verknüpfen (+, -, *, geteilt im Grunde nur und die bit-Operationen natürlich)
- (bedingte) Sprünge im Programm durchführen.
Die Sprache C nimmt dir quasi nichts ab! Es gibt keine Strings als Objekte, keine "todsichere Speicherverwaltung" die dieses und jenes verhindert wie z.B. Rust, es gibt keine fertigen verketteten Listen und eigentlich kümmert sich C um : rein gar nichts.
Quasi das einzige was C kann?
- Den Wert von Variablen auslesen
- Den Wert von Speicherzellen auslesen (Pointer)
- Variablen verändern
- Speicherzellen verändern (Pointer)
- Variablen miteinander mathematisch verknüpfen (+, - *, geteilt im Grunde nur und die bitweisen Operationen natürlich)
- (bedingte) Sprünge im Programm durchführen (aufrufen von Funktionen)
In C dreht sich fast alles um Zeiger. Und Zeiger fehlen in fast allen anderen Programmiersprachen, und daher sind sie meistens deutlich weniger mächtig als C.
Zitat aus "C von A bis Z" von René Krooß : "C wird manchmal liebevoll als "High-Level-Assembler" bezeichnet. Dies resultiert daraus, dass der Betriebssystemkern (besser bekannt als Kernel) - ALLER -gängigen Betriebssysteme in C (natürlich gemischt mit Assembler) geschrieben wurde ..."
Was willst du mit dem Bruteforce @JohnDoe ?
Ist doch illegal!
Bruteforce an sich ist nicht illegal. Ich habe lokal einen md5-Passwort-Cracker geschrieben, um zu testen, wie schnell meine CPU-Kerne arbeiten. Dafür habe ich ein eigenes Passwort md5-verschlüsselt und knacken lassen und dabei die Zeit gemessen.
Illegal wäre es, wenn man ein solches Tool einsetzt um z.B. sich hier im Forum Zugang zu einem fremden Account zu verschaffen.
Es gibt auch genug Hacker, die mit solchen Tools nach Sicherheitslücken in diverser Software suchen und die dann dem Hersteller melden.
JohnDoe , wie jeder andere auch, darf Bruteforce z.B. dafür einsetzen, um eigene passwortgeschützte Archive dessen Passwort man z.B. vergessen hat, zu knacken.
Allerdings kann das je nach Länge des Passworts durchaus auch mal 300 Millionen Jahre dauern und mehr - je nach Geschwindigkeit des Prozessors, der arme, der das ausrechnen muss.
Mit 7z verschlüsselte Archive z.B. sind je nach Passwortlänge quasi nicht mehr wiederherstellbar, wenn du das Passwort vergessen hast. Mit einem Otto-Normal-Rechner brauchst du mit Brute-Force(=Rohe Gewalt übersetzt) gar nicht erst antreten.
Moin,
Ich dachte mir, bevor ich hier Millionen von IT-Threads eröffne, starte ich hier, wie schon lange geplant, mal einen eigenen Blog. Das ist zwar ein Psychose-Forum, aber das ist ja auch eine Art von Therapie für mich.
Schönen Tag euch!
Ein Buch lesen und hier nebenbei schreiben. Zwischendurch Rauchen.
Ich übe aktuell den Umgang mit dem Texteditor vim unter Linux.
(vimtutor aufrufen sobald ihr gvim installiert habt)
Aktuell entwickle ich meine C-Projekte noch mit Visual Studio Code.
Allerdings möchte ich irgendwann doch mal zu vim übergehen.
Der Editor hat's in sich, ist aber am Anfang kaum zu glauben, wie schwer bis beinahe unmöglich er für Windows-verwöhnte Mausschubser zu bedienen ist.
Wenn man das aber einmal drauf hat : siehe hier ein Beispiel wie man damit zaubern kann :
Auf lange Sicht große C-Projekte mit vim oder gvim.
Aber erstmal werde ich ein Buch mit vim abtippen. Danach sollte ich es drauf haben ...
Nova von Googles Plänen habe ich bis jetzt noch nichts gehört.
Aber : Ich habe auch schonmal an einem Chromebook gesessen und mir ernsthaft überlegt, ob ich auch eins kaufe.
Aber das Tastaturlayout und der Zwang zum Google-Konto gefällt mir nicht.
Defakto basiert ChromeOS aber auf Gentoo-Linux .
Android basiert ebenfalls auf Linux.
Kann daher sehr gut sein, dass Google das in Zukunft zusammenführen wird.
O' Reilly
Linux kurz & gut
Die wichtigen Befehle.
Ich finde das Buch ist für jeden Linux-Enthusiasten ein wahrer Schatz.
jetzt brauch ich endgültig nie wieder Windows. Läuft zwar schon lange unter Linux, aber ich hab's jetzt erst vernünftig ins System integriert :
Bin Frühaufsteher. Stehe zwischen 5, halb 6 bis maximal 6 auf. Bin aber auch abends manchmal noch sehr aktiv ...
ardentglow sorry, dass ich das github-Repository noch nicht freigeschaltet habe, aber ich habe bisher noch keinerlei Erfahrung, was das alles für Auswirkungen hat, wenn ich ein Repository öffentlich schalte.
Deswegen zögere ich derzeit noch bzw. muss noch Zeit finden, mich darüber schlau zu machen.
Deswegen habe ich einen Snapshot vom aktuellen Entwicklungsstand mal auf meinen Webspace hochgeladen.
https://adler-auge.net/downloads/Cetris-main.zip
Da ist allerdings noch keine Installationsanleitung dabei. Aber in der Zip-Datei sollte alles enthalten sein, damit man das zum Laufen bekommt. Auch die SDL3-Bibliothek in der Version 3.2 ist dort zu finden.
Mal sehen, ob das hier jemand zum Laufen bekommt.
Wäre super, wenn das jemand unter Windows kompiliert bekommt. Ich sag nur Cygwin oder MinGW.
Noch ein kurzer Bericht zu Linux Manjaro :
Ich habe mich im Post zuvor geirrt, dass die Problematik mit dem WLAN-Stick TP-Link WN823N vollständig behoben ist.
Linux Manjaro verwendet einen etwas neueren Kernel als Debian 12 Bookworm. Das ist aber auch klar, denn Manjaro ist eine Rolling-Release-Distribution.
Nichtsdestotrotz : der rtl8xxxu-Treiber für den Realtek-WLAN-Chip rtl8192eu ist stabil, die Empfangsleistung liegt aber aktuell nur bei 10% Empfangsleistung von dem was mein github-Treiber liefert.
Ich muss allerdings dazu sagen : der Router steht etwas weit weg.
Daher habe ich den selben Treiber wie unter Debian installiert. Der läuft auch hier einwandfrei. Mir ist aber durchaus klar, dass ein Linux-Neuling mit der Installation von Treibern aus Github so seine Probleme haben dürfte.
Ich werde demnächst einfach den WLAN-Stick gegen einen neuen mit einem vernünftigen Chipsatz eintauschen.
Denn : wenn man so nach rtl8192eu googelt, werden da immer nur die selben Probleme mit dem gemeldet.
Ansonsten :
Steam läuft wunderbar. Habe aber lediglich das Spiel "Grim Dawn" und "Skyrim Legendary Edition" bisher getestet. Läuft beides ebenso flüssig wie unter Windows 11. Muss aber dazu sagen :
1. Ich habe nur eine in die Intel-CPU integrierte, langsame Grafikeinheit ohne großartige Reserven.
2. Ich habe weder unter Windows 11 noch unter Linux einen Benchmark bisher gefahren.
Sieht aber genauso flüssig aus...
ardentglow: schaffe es heute nicht, auf alles oben einzugehen. Ist auch sehr lang geworden. Versuche mich kurz zu fassen.
Zum Schichtenmodell in Cetris : Ich habe einen sog. Kernel mit den wichtigsten Bestandteilen, die im Hintergrund aus technischer Sicht geschehen, hauptsächlich :
* Laden und initialisieren der SDL3-Bibliothek.
* Texture-Manager (Verwaltung der Texturen in einer Tree-Map)
* Shapes-Manager (Verwaltung der Spielfiguren in einer Tree-Map)
* Logging
Dann hat die GUI aktuell 3 Schichten :
Frontend (GUI) - alle Module, die eine render_xyz-Funktion haben.
|
V
Backend (Kernel Agent - leitet Anfragen von der GUI an den Kernel weiter)
|
V
Kernel (Aufgaben s.o.)
Einige Funktionen der GUI core_game.c werden dann später noch in sogenannte Game-Logic-Module(gal_) ausgelagert, wo Berechnungen und ähnliches für die GUI durchgeführt werden, die den Kernel nicht erfordern.
Danke für deine umfangreichen Antworten. Aber versuch vielleicht auch du, dich kürzer zu fassen. Habe da selbst ein Problem damit wie hier viele wissen
Da muss man ja mit der Machete durch ![]()
So. Ich habe mit Windows 11 auf meiner zweiten Festplatte kurzen Prozess gemacht, nachdem einige offizielle Systemupdates das System halb zerschossen hatten.
Auf meiner ehemaligen Windows-11-SSD arbeitet nun Linux Manjaro KDE Plasma Edition. Mit dieser neuen Installation bin ich auch grad hier im Forum schon!!!
Und ich bin absolut begeistert. Habe den Installationsprozess mit komplett Open-Source-Treibern gestartet und oben genanntes Problem mit dem TP-LINK 823WN WLAN-Stick scheint behoben. Bin im Internet ohne jegliches zutun und Neukompilieren von github-Treibern.
Ich habe die gesamte Windows-11-Festplatte automatisch partitionieren lassen, was bedeutet, dass Linux Manjaro die komplette Festplatte nutzt um das System in eine einzige große Partition einzuhängen. Ich habe allerdings noch eine SWAP-Partion mit Ruhezustand ausgewählt, d.h. ich habe aktuell hier eine 32 Gigabyte große SWAP-Partition.
Ich habe die Installation gestartet und ahnte es schon. Ich ging eine Rauchen, da stand der Rechner schon da und meldete : alles erledigt.
Ich bootete neu, und wie erwartet landete ich trotzdem immer noch im Debian-Grub-Bootloader, wo natürlich noch Windows 11 als Zweit-OS angezeigt wurde.
Also startete ich einmal Debian um den Grub-Loader zu aktualisieren :
sudo update-grub
sudo update-initramfs -u
Da zeigt er u.a. (natürlich) an : Manjaro Linux gefunden!
Nachdem die beiden Befehle fertig sind, Neustart.
* Manjaro wird nun im Grub-Loader angezeigt, ich boote, bin sofort Online, noch anderes Hintergrundbild ausgewählt und so sieht mein Desktop aktuell aus :
Jetzt habe ich also auf meiner 2 TB Festplatte (noch?) Debian Linux.
Und auf meiner kleinen Zweitfestplatte Linux Manjaro.
Jetzt werde ich gleich mal Steam installieren und testen.
Falls ihr das nachmacht, bitte vorher eure wichtigen Daten sichern nicht vergessen! UND : Wichtige Passwörter aus Passwortmanagern sollten ihr zu Papier bringen vorher!
Schönen Abend euch allen!
ardentglow heute abend schaffe ich nicht mehr darauf einzugehen. Habe die letzten Stunden das Projekt noch ein wenig aufgeräumt, damit ich es hoffentlich demnächst mal freischalten kann.
Ich werde jetzt erstmal Diablo3 spielen ![]()
Wie gesagt, mein Tetris ist - eigentlich - nur zur Übung gedacht. Ich übe damit z.B., wie man mittelgroße Programme in C strukturiert, damit man eben nicht den Überblick verliert.
Hier ist z.B. eine Aufstellung aller Quellcode-Dateien des Projektes und ihre Größe in Anzahl der Zeilen Code :
./count-lines.sh :
160 ../source/impl/game_manager/gm_main_menu.c
254 ../source/impl/game_manager/gm_game_meta.c
278 ../source/impl/resources/resources.c
174 ../source/impl/resources/manager_shapes.c
135 ../source/impl/resources/manager_textures.c
27 ../source/impl/resources/quit.c
38 ../source/impl/logging/logging.c
340 ../source/impl/mm_Manager/mmm_SDL3.c
26 ../source/impl/main.c
868 ../source/impl/core_game/core_game.c
589 ../source/impl/core_game/gobs.c
72 ../source/impl/core_game/hof.c
25 ../source/headers/include/manager_textures.h
30 ../source/headers/include/gm_main_menu.h
20 ../source/headers/include/gm_game_meta.h
14 ../source/headers/include/logging.h
25 ../source/headers/include/core_game.h
31 ../source/headers/include/mmm_SDL3.h
8 ../source/headers/include/fonts.h
6 ../source/headers/include/hof.h
91 ../source/headers/include/gobs.h
175 ../source/headers/include/common.h
7 ../source/headers/include/quit.h
15 ../source/headers/include/resources.h
21 ../source/headers/include/manager_shapes.h
3429 insgesamt
Alles anzeigen
die core_game.c ist wie du siehst mit 868 Zeilen Quellcode derzeit noch ein bisschen groß geraten. Da kann ich jetzt in C ganz einfach bei gehen und sämtliche Funktionen die zusammengehören, in ein weiteres C-Modul auslagern. Das sind pro Modul ca. 10 Minuten Aufwand - und man kann ziemlich sicher sein, dass alles noch genauso läuft wie zuvor.
In C++ dagegen (den ersten Prototyp von meinem Tetris habe ich in C++ geschrieben wie oben schon steht) hatte ich schon öfter folgendes Problem : Ich erkannte irgendwann im laufenden Prozess der Entwicklung, dass diese oder jene Methode und/oder Eigenschaft besser in eine andere Klasse gehört.
Der Umzug von Eigenschaften in andere Klassen kann aber enorme Probleme bereiten, wenn z.B. das eigene Design strikt verlangt, dass einige Klassen absolut nichts von anderen Klassen wissen dürfen.
Z.B. darf die SDL3-Wrapper-Klasse absolut nichts von seiner Verwendung in Tetris "wissen", denn sobald ich die Klasse mit Tetris "verstricke", wird der SDL3-Wrapper in eventuellen weiteren Spielen ohne Anpassung unbrauchbar.
Ich habe manchmal 2-3 Tage gebraucht um manche Umzüge von Methoden und Eigenschaften ohne unerlaubte Koppelung zu vollziehen.
Beispiel : Meine Klasse "Piece"(das herabfallende Teil in Tetris) kapselt eine andere Klasse "Shape", welches die Form des Teils vorgibt. Einst hatte ich den Farbwert in der Klasse "Shape"(deutsch Form) angelegt. Irgendwann stolper ich drüber und da fällt es mir erst auf :
Eine Silhouette kennt keine Farbe - die Farbe des Pieces gehört natürlich in die Klasse "Piece", allein schon weil man sagt "es ist die Farbe des Pieces".
Ja - ich geb zu - das war dann vor dem Coden eben "schlechtes Design" auf Papier. Aber du musst bedenken : spätestens ab 1000 Zeilen Quellcode ist ein Programm schon so groß, dass man unmöglich jeden Aspekt davon schon vorher durchplanen könnte.
Entwicklung ist ein Prozess wo vieles im Fluss der Arbeit erst hochkommt.
Mein Cetris dagegen ist so simpel wie nur möglich gestaltet :
Eine ganz einfaches, klassisches Schichtenmodell. Jede Schicht hat keinerlei Ahnung davon, dass es über ihr noch weitere Schichten gibt. Eine Schicht kann nur auf die Schicht direkt darunter zugreifen.
Eine Schicht ist hier stets ein Serviceanbieter für die Schicht darüber, ohne davon jedoch zu wissen.
Warum ich das so mache, wirst du sicher wissen.
Nach Cetris? Einen Raumschiffshooter wie Hybris damals. Simpler von der reinen Spiellogik, dafür aber deutlich umfangreicher das Tatsache umzusetzen - vor allem die Grafiken/Sprites selbst anzulegen wird lange dauern :