netcup: In alten Tarifen aktuelle PHP-Versionen benutzen

Dieser Blog ist schon seit längerer Zeit bei netcup gehostet, womit ich auch eigentlich sehr zufrieden bin. Seit einiger Zeit war im Backend von WordPress jedoch immer einen Warnung sehen, dass meine PHP (7.2) veraltet sei. Das ist korrekt, die Version wird schon seid dem 30.11.2020 nicht mehr unterstützt. Ich hatte in dem Zuge im den Einstellungen des Webhosting nachgeschaut, dort war aber leider 7.2 die aktuellste Version die ich auswählen konnte. Da mein Tarif vor 4 Jahren ein Sonderangebot war (Expert Spezial 2018), war ich davon ausgegangen das netcup diesen Tarif langsam loswerden möchte und daher keine Updates mehr ausspielt. Das stimmt allerdings gar nicht, aktuelle PHP-Versionen sind möglich!

Weiterlesen

SteamAutoStarter: Steam automatisch über den SteamLink starten

Seit einiger Zeit bin ich der stolze Besitzer eines (gebrauchten) SteamLinks. Das ist ein kleine Hardware-Box (oder alternativ eine Software für den Raspberry Pi o.ä.), mit der sich Steam-Spiele über Netzwerk an einen Fernseher streamen lassen. Das funktioniert erstaunlich gut (vor allem für eher „langsame“ Spiele, bei mir aktuell vor allem „The Witness„). Logischerweise funktioniert das ganze aber natürlich nur, wenn Steam auf dem Computer schon läuft. Wenn man sich also nicht erst an den Computer setzen will, um Steam zu starten, muss Steam also im Autostart sein. Für reine Gaming-PCs dürfte das kein großes Problem sein, da ich meinen Rechner auf vor allem für die Arbeit benutze, kam das für mich eigentlich nicht in Frage.

Weiterlesen

Informatik mit den „Legenden von Andor“ und Python

Die Legenden von Andor“ ist schon seit einiger Zeit eines meiner Lieblingsspiele. Vor kurzem haben wir das Spiel jetzt auch einer Freundin zum Geburtstag geschenkt. Brettspiele sind ja dank Corona voll im Trend 🙂

Wie es sich seit einiger Zeit bei uns eingebürgert hatte, musste es natürlich auch ein passendes Rätsel dazu geben. Mit ein bisschen Überlegung sind mir ein paar spannende Rätsel mit steigender Schwierigkeit eingefallen. Das erste lässt sich noch im Kopf lösen, aber für die anderen kann ein bisschen Computer-Unterstützung nicht schaden.

Weiterlesen

Dekodieren der Gameboy-CPU Instruktionen

Ich habe vor ein paar Tagen angefangen, einen einfachen Emulator für den GameBoy zu schreiben. Einfach so zum Spaß, und weil ich schon immer mal einen Emulator schreiben wollte 🙂

Der erste Schritt ist nun, einen CPU-Emulator zu bauen. Die CPU des Gameboy (LR35902) basiert auf dem Intel 8080 und dem Zilog Z80, kann aber nicht alle Instruktionen, dafür aber ein paar extra… Glücklicherweise gibt es aber unglaublich viele Ressourcen zum Gameboy im Netz, wie zum Beispiel diese tolle Tabelle mit allen Instruktionen.

Weiterlesen

Softcore CPU NEO430 mit GHDL simulieren

Für meine Masterarbeit beschäftige ich mich gerade mit Softcore-Prozessoren auf FPGAs. Dabei kommt für meine Arbeit der NEO430 zum Einsatz, ein sehr kleiner aber feiner Prozessor der an meinem Institut entwickelt wurde (von Stephan Nolting). Da ich aktuell noch nicht in einem Stadium bin, wo ich den Prozessor wirklich auf einem FPGA implementiere (auch wenn das der nächste Schritt ist) arbeite ich aktuell sehr viel mit Simulation, und da vor allem mit ModelSim. Ein bisschen was dazu hatte ich ja hier im Blog schon mal da zu geschrieben.

Nun hatte ich heute Abend die Idee, man könnte ja mal einen anderen Simulator ausprobieren. Mir hat es dabei GHDL angetan, vor allem, da er OpenSource ist, aber auch weil er einen interessanten Ansatz verfolgt: Der VHDL-Code wird mit einem umgebauten Compiler (GCC oder LLVM) direkt in Maschinencode kompiliert, und dieser Code dann ausgeführt. Dadurch soll der Simulator extrem schnell sein. Auf Windows ist das ganze etwas eingeschränkt, hier wird ein interner Codegenerator verwendet. Weiterlesen

Null coalescing in PHP

Heute habe ein neuen Feature von PHP kennengelernt, das wirklich praktisch ist: Null coalesing mit dem tenären Operator. (Ok, das klingt für ungeübte Ohren vielleicht ein bisschen seltsam :))

Null coalescing ist ein Feature dass viele Programmiersprachen haben, meistens mit Hilfe des Operators „??“ (Zwei Fragezeichen). Der Ausdruck gibt den linken Wert zurück, wenn dieser nicht null ist, ansonsten den rechten. Also z.B. so:


action = getAction() ?? 'save';

Weiterlesen

CakePHP – Ein Review

Heute fragte mich jemand, ob ich eigentlich etwas kennen würde, um mit PHP „schöner“ zu programmieren. Ich dachte zugegebener Maßen erst an einen Editor (da würde ich PhpStorm (gibt’s für Studenten umsonst!) empfehlen), es wurde dann aber relativ schnell klar, das es eher um sowas wie ein PHP-Framework geht. Um es gleich mal klar zu sagen: Ohne irgendein Framework würde ich nichts in PHP schreiben, was länger als 100 Zeilen ist. Man muss das Rad ja nicht immer neu erfinden, und dabei die gleichen Sicherheitslücken wieder einbauen 🙂

Nun entwickele ich für meinen Hiwi-Job schon rund 4 Jahre in PHP. Dabei habe ich die erste Zeit eine Anwendung weiter gepflegt, die ohne ein Framework geschrieben war. Nach einiger Zeit war klar, das es so nicht weitergehen konnte, die Anwendung war, auch durch ihr Alter und die Weiterentwicklung von PHP, unwartbar geworden und lief mit schnellen Schritten auf das End-Of-Life „ihrer“ PHP-Version zu. (Mehr sage ich jetzt nicht, der Autor ließt hier mit 🙂 ). Es musste also eine Neuentwicklung her, natürlich auf Basis eines Frameworks. Damals wurde mir CakePHP empfohlen (damals noch Version 2), was ich dann relativ unreflektiert übernommen habe. Jetzt nähert sich die Anwendung langsam der Fertigstellung, inzwischen basierend auf CakePHP 3. Im Laufe der Entwicklung hat sich eine gewisse Hassliebe zu Cake entwickelt…

Weiterlesen

ftRoboExt: Software

Nach einiger Pause gibt es mal wieder etwas neues zu meinem selbstgebauten Erweiterungsmodul „ftRoboExt“. Hardware und Gehäuse waren ja schon fertig, nun fehlte eine finale Version der Software. Inzwischen ist das ganze Projekt übrigens auf GitHub zu finden.

Das Protokoll für die Kommunikation zwischen Interface und Extension ist recht einfach, es ist im Prinzip ein SPI-Bus mit einem zusätzlichen Bestätigungssignal und einer Adresse. Über drei Adressleitungen wählt das Interface aus, mit welcher Extension es sprechen möchte. Die originalen Extensions lassen sich verketten, dabei wird das Signal aber nicht ganz unverändert durchgeschleift, sondern die Adresse wird von jedem Modul um ein verringert. Auf diese Weise ist jedes Modul adressiert, wenn es Adresse 0 sieht (das erste direkt, das zweite weil es 1-1=0 sieht). Eine sehr intelligente Lösung, denn dadurch wird die Adresse des Moduls einfach durch die Verkabelung bestimmt.

Wenn das Modul die Adresse 0 sieht, zieht es EM-ACK (die Bestätigungsleitung) auf Low. Nun beginnt das Interface 6 Bytes zu senden, die Extension gibt nach jedem Byte einen kurzen High-Puls auf der EM-ACK Leitung aus. Die originale Extension scheint recht langsam zu sein, so braucht sie etwa 700µs um die Adressierung zu bestätigen. Das Interface hat aber scheinbar auch kein Problem damit, wenn man schneller ist. Die 6 Bytes übertragenen Bytes enthalten die Nutzdaten, genaueres bei thkais.

Weiterlesen