Kategorie: Technik

Windows-Drucker mit PowerShell anhalten

· · · 0 Kommentare

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

· · · 0 Kommentare

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.

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:

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

· · · 0 Kommentare

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

· · · 0 Kommentare

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.


Nextcloud Geräte & Sitzungen aufräumen

· · · 0 Kommentare

Im Bereich "Geräte & Sitzungen" der Nextcloud-Sicherheitseinstellungen sammeln sich im Laufe der Zeit jede Menge Einträge, auch von Geräten oder Sitzungen, die schon lange nicht mehr im Einsatz sind.

Zwar kann man einzelne Einträge durch Klick auf die drei Punkte und "Widerrufen" manuell entfernen, eine Möglichkeit zum gleichzeitigen Löschen mehrerer veralteter Einträge ist aber nicht vorgesehen.

Was über die Oberfläche nicht funktioniert, kann aber oft an der Anwendung vorbei über eine direkte Änderung der Datenbank erledigt werden. Zum Aufräumen reicht ein

DELETE FROM oc_authtoken WHERE last_activity <= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 60 day));

welches z.B. alle Einträge löscht, deren letzer Zugriff länger als 60 Tage her ist.