Technik

Google stellt Stadia ein

01. Oktober 2022 · Anwendungen · andreas · Kein Kommentar

Eigentlich hatte ich mit dem Ende des Google Readers beschlossen, zukünftig auf Dienste des Unternehmens zu verzichten. Ich wollte nicht noch einmal die Erfahrung machen, daß ein Dienst, den ich gerne verwendet habe, einfach so eigestellt wird und auf dem Friedhof der Google Dienste landet.

Nachdem ich das Thema Streaming von Spielen lange Zeit ignoriert habe, habe ich rund um den letzten Jahreswechsel dann doch den kostenlosen Probemonat genutzt und Google Stadia ausprobiert. Die ersten Runden in Control waren vielversprechend - egal, ob am PC mit Chromium, auf dem Android Tablet oder der Nvidia Shield: das Versprechen jederzeit auf jedem Gerät spielen zu können wurde gehalten.

Cyberpunk 2077 Screenshot

Mitten im Probemonat kam dann das Angebot, Cyberpunkt 2077 für 29,99€ im Rahmen einer Aktion erwerben zu können, abzüglich 10€ Rabatt für den ersten Spielkauf - also unterm Strich für 19,99€ ohne anschließende Abo-Verpflichtung, sofern Full HD und Stereo-Sound ausreichend sind.

Kurz überlegt, gekauft und gespielt und während sich bei Control der Steuerungswechsel zwischen den Geräten als eher störend erwiesen hat, macht Cyberpunk 2077 je nach Mission auf unterschiedlichen Geräten sogar mehr Spaß: alles, was mit Waffen oder zielen zu tun hat, am besten mit Maus und Tastatur, während die Autorennen am Fernseher mit den analogen Sticks des Shield-Controllers deutlich angenehmer und entspannter zu fahren sind. Storylastige Missionen lassen sich ab und an auch entspannt mit dem Tablet auf der Couch spielen.

Auch das Erscheinen der beiden großen Content-Patches hat gezeigt, wie komfortabel Cloud-Gaming sein kann: kein langwieriges Herunterladen, Patchen und warten - sondern am Releasetag mit einer fertig gepatchten Version weiterspielen.

Google Stadia Screenshot

Nun hat Google angekündigt, zum 18. Januar 2023 Stadia zu schließen. Neue Spiele können bereits nicht mehr gekauft, die bereits gekauften Spiele bis zu diesem Tag aber noch gespielt werden. Eine recht kulante Lösung ist die angekündigte Rückerstattung der im Google Store gekaufen Hard- und Software, so daß zumindest kein finanzieller Verlust entsteht. Andere Firmen handhaben solche Situationen durchaus kundenunfreundlicher.

Trotzdem ist es schade: zum einen gibt es keinen vergleichbaren Dienst für Gelegenheitsspieler, der ohne Abo-Gebühren betrieben wird und leider können die Spielstände zwar aus der Cloud heruntergeladen werden, sind aber nicht immer zu anderen (Cloud-)Versionen des jeweiligen Spiels kompatibel.


Windows-Drucker mit PowerShell anhalten

23. September 2022 · Betriebssysteme · andreas · Kein Kommentar

Um einen Drucker unter Windows anzuhalten, genügt ein PowerShell-Befehl, welcher als Administrator ausgeführt werden muss:

PS C:\> (Get-WmiObject Win32_Printer -Filter "Name='Microsoft Print to PDF'").Pause()

Um den “Angehalten”-Zustand wieder aufzuheben, muß lediglich “Pause” durch “Resume” ersetzt werden:

PS C:\> (Get-WmiObject Win32_Printer -Filter "Name='Microsoft Print to PDF'").Resume()

Als Parameter benötigt wird der Name des Druckers, im Beispiel “Microsoft Print to PDF” - der interessanterweise auch im Zustand “Angehalten” weiterhin direkt PDFs erzeugt.


Perl setzt bei regulären Ausdrücken Treffer-Variablen nicht zurück

14. September 2022 · Programmierung · andreas · Kein Kommentar

Werden z.B. innerhalb einer Schleife verschiedene Elemente mit Hilfe eines regulären Ausdrucks ausgewertet, so werden im Falle eines Nicht-Treffers die Treffer-Variablen nicht zurückgesetzt.

test.pl
use strict; use warnings; my @albums = ( 'The Phantom Agony', 'Design Your Universe', 'The Holographic Principle' ); foreach my $album (@albums) { $album =~ /(Universe)/; if (defined $1) { print "match: $1 -> '$album'\n"; } }

Auf den ersten Blick wäre zu erwarten, daß lediglich eine Zeile als Ergebnis ausgegeben wird, tatsächlich sind dies aber zwei:

match: Universe -> 'Design Your Universe' match: Universe -> 'The Holographic Principle'

Die Ursache liegt in der überhaupt nicht durchgeführten Überprüfung des Ergebnisses des regulären Ausdrucks, die korrekt so aussehen muss:

test.pl
use strict; use warnings; my @albums = ( 'The Phantom Agony', 'Design Your Universe', 'The Holographic Principle' ); foreach my $album (@albums) { if ($album =~ /(Universe)/) { print "match: $1 -> '$album'\n"; } }

Dann erscheint auch - wie ursprünglich erwartet - als Ergebnis nur eine Zeile:

match: Universe -> 'Design Your Universe'

Notiz an mich selbst: eine korrekte Behandlung von Abfrageergebnissen erspart eine aufwendige Fehlersuche.


WordPress-Wartungsmodus manuell aktivieren

08. September 2022 · Anwendungen · andreas · Kein Kommentar

Bei einer Aktualiserung schaltet WordPress die Website automatisch in den Wartungsmodus, ein Mechanismus, den man auch für manuelle Wartungen aktivieren kann.

Zum Aktivieren wird eine Datei “.maintenance” mit folgendem Inhalt im Hauptverzeichnis der WordPress-Installation angelegt, welche den Wartungsmodus bis zum Entfernen (oder Umbenennen der Datei) aktiviert.

<?php $upgrading = time(); >

Die Erklärung der Funktionsweise findet sich im WordPress-Quellcode innerhalb der Datei load.php

... 303 function wp_is_maintenance_mode() { 304 global $upgrading; 305 306 if ( ! file_exists( ABSPATH . '.maintenance' ) || wp_installing() ) { 307 return false; 308 } 309 310 require ABSPATH . '.maintenance'; 311 // If the $upgrading timestamp is older than 10 minutes, consider maintenance over. 312 if ( ( time() - $upgrading ) >= 10 * MINUTE_IN_SECONDS ) { 313 return false; 314 } ...

Im ersten Schritt wird das Vorhandensein einer Datei “.maintenance” im Hauptverzeichnis der WordPress-Installation geprüft. Ist diese vorhanden, so wird vom aktuellen Zeitstempel der Wert der Variablen “$upgrading” subtrahiert. Ist der Rest größer oder gleich 10 Minuten, so wird der Wartungsmodus deaktiviert.

Durch das Setzen der Variable “$upgrading” auf den aktuellen Zeitstempel bleibt die Differenz immer 0, die 10 Minuten werden nie überschritten und der Wartungsmodus kann manuell gesteuert werden.


Intel Grafik, Mesa und CPU-Auslastung

25. August 2022 · Spiele · andreas · Kein Kommentar
Dieser Beitrag bezieht sich auf Debian 11 “Bullseye”.
Mit Debian 12 “Bookworm” ist das Setzen der Umgebungsvariable nicht mehr erforderlich.

Normalerweise sollte ein Intel Core i5-7300U mit eingebauter HD-Grafik 620 problemlos in der Lage sein, ein 2D-Spiel wie Space Haven darzustellen, trotzdem sorgte bereits kurz nach dem Start der Lüfter des Notebooks für eine beeindruckende Geräuschkulisse, denn die CPU-Auslastung war bei rund 300%:

Direkt beim Start von Space Haven wurden auch einige Fehler angezeigt, welche auf ein Problem mit der Graphik bzw. deren Nichterkennen hinwiesen:

com.badlogic.gdx.utils.GdxRuntimeException: OpenGL 2.0 or higher with the FBO extension is required. OpenGL version: 1.3 Mesa 20.3.5 Type: OpenGL Version: 1:3:0 Vendor: Intel Open Source Technology Center Renderer: Mesa DRI Unknown Intel Chipset

Abhilfe fand sich schließlich im archlinux Wiki, welches darauf hinweist, daß unter archlinux ab Mesa 20.0 ein neuer Treiber für neuere GPUs als Standard verwendet wird.

In Mesa 20.0, a new OpenGL driver, Iris, is promoted to be the default for Gen8+. Certain applications run faster with it. You may disable it and revert to use the old i965 driver by setting the MESA_LOADER_DRIVER_OVERRIDE=i965 environment variable before starting any OpenGL application. [Quelle]

Zwar ist der verbaute i5-7300U aus der 7. Generation, aber Debian ist auch kein archlinux und ein kurzer Test mit der vorgeschlagenen Umgebungsvariable ließ die CPU-Auslastung im normalen Rahmen und den Lüfter nach Start des Spiels unhörbar bleiben:

Leider hilft ein Blick in die Mesa 3D Dokumenation zum Verständnis nicht sonderlich viel weiter, so daß die Behebung der Symptome wohl so akzeptiert werden muss.

Die Ursache ist wahrscheinlich die Meldung “Mesa DRI Unknown Intel Chipset” dokumentiert, so daß erst mit dem über Umgebungsvariable vorgegebenem Treiber eine korrekte Initialisierung möglich ist.