Technik

Bytefolge mit Perl ersetzen

18. Januar 2018 · Programmierung · andreas · Kein Kommentar

Die Funktionen, die Perl für das Suchen und Ersetzen innerhalb von Strings bereitstellt, lassen sich auch hervorragend dazu verwenden, Bytefolgen innerhalb von Binärdaten zu bearbeiten.

Mittels der pack-Funktion wird die zu suchende Bytefolge in einer Variable gespeichert

$source = pack("C*", 0x00, 0x40, 0x06, 0x00, 0x00, 0xB0, 0x04, 0x00);

Deren Position innerhalb der zu durchsuchenden Daten kann durch die Funktion index ermittelt

$pos = index($data, $source);

und ggf. auch mit einer Ziel-Bytefolge mit Hilfe der Funktion subst ersetzt werden

substr($data, $pos, length($dest), $dest);

UltraEdit-Lizenzierung

20. Dezember 2017 · Anwendungen · andreas · Kein Kommentar

Eine Neuinstallation des Betriebssystems ist in der Regel eine willkommene Möglichkeit, die täglich benutzten Werkzeuge auf aktuellen Stand zu bringen. Also kurz die im Februar verlängerte UltraEdit-Lizenz überprüft

===================================================== UltraEdit License Key ===================================================== UltraEdit Key - Your license is for version v24.x (Windows) and will work with the Windows, Mac, and Linux versions.

anschließend die aktuelle Version von UltraEdit (24.20.0.51) heruntergeladen und installiert. Leider folgte beim Klick auf “Aktivieren” eine unangenehme Überraschung:

Mit dem Lizenzschlüssel, der lt. E-Mail für die Version “v24.x” gültig ist, lässt sich die Version “v24.20” nicht aktivieren.

Eine kurze Nachfrage beim Hersteller IDM Software brachte Klarheit, daß es sich hierbei um ein Feature und nicht um einen Bug handelt:

This purchase included an upgrade to the latest version and the next release free, however it did not include 1 year of free upgrades. This license is eligible to run v24.10 of UltraEdit.

Tatsächlich hat sich wohl bei der Verlängerung der Lizenzen etwas geändert, ohne daß man als Kunde explizit darauf aufmerksam gemacht wurde. Sowohl auf der Website als auch in der Lizenzierungs-E-Mail steht neuerdings

Upgrades: 1 free upgrade to next release (standard)

wohingegen in früheren Lizenz-E-Mails

Upgrades: 1 Year (standard)

angegeben war.

Letztendlich scheint sich “next release” tatsächlich auch auf “Minor release” zu beziehen (also die Zahl nach dem Komma), wodurch aus meiner Sicht die Angabe “v24.x” zwar falsch ist, auf explizite Nachfrage vom Support aber so bestätigt wurde:

Next release means the next version that is released for the product. For example, if you purchase a license for v24.00, then the next version that was released after that would have been v24.10. A free upgrade to the next release does include major and minor releases. While the upgrade may be a minor release, all our releases include new features and enhancements that benefit the user.

Als zahlender Kunde kann man hier nur verständnislos den Kopf schütteln, hat die Lizenzverlängerung (die mit immerhin rund 50€ zu Buche schlägt) für gerade einmal 9 Monate “gereicht”.

Glücklicherweise gibt es eine große Anzahl an sinnvollen Alternativen - die Developer Survey Results 2017 von stackoverflow bieten für die Auswahl eine gute Grundlage.


FXSAPIDebugLogFile.txt löschen

10. Dezember 2017 · Betriebssysteme · andreas · 7 Kommentare

Sofern im temporären Windows-Verzeichnis eine nicht löschbare Datei “FXSAPIDebugLogFile.txt” nervt, kann diese - wenn auf dem betroffenen Rechner die “Windows-Fax und -Scan”-Funktionalität nicht benötigt wird - wie folgt entsorgt werden:

  1. In der Systemsteuerung “Programme und Funktionen” öffnen und dort in der linken Spalte auf “Windows-Funktionen aktivieren oder deaktivieren” klicken.

  2. Im Dialog “Windows-Funktionen aktivieren oder deaktivieren” den Punkt “Druck- und Dokumentendienste” aufklappen

  3. Den Haken vor “Windows-Fax und -Scan” entfernen und mit “OK” bestätigen

  4. Den Rechner neu starten

Anschließend kann die Datei gelöscht werden.


Creating default object from empty value bei der Verwendung von chained Properties

04. Dezember 2017 · Programmierung · andreas · Kein Kommentar

Erstellt man in PHP eine neue Instanz der vordefinierten Klasse StdClass, so können dieser anschließend beliebige Eigenschaften zugewiesen werden:

$test = new StdClass(); $test->property = 1;

Versucht man allerdings mehrere Eigenschaften ohne vorherige (Teil-)Initialisierung zu verketten, wird dies von PHP mit einer entsprechenden Warnung kommentiert:

$test->anotherproperty->propertytoo = 7; Warning: Creating default object from empty value in ... on line ..

Um diese Warnung zu vermeiden (und richtig zu initialisieren), kann eine kleine Erweiterung der Klasse StdClass vorgenommen werden, welche beim Zugriff auf jede Eigenschaft prüft, ob diese bereits existiert und ggf. das Anlegen der Instanz nachholt:

class myData extends StdClass { public function __get($name) { if (!isset($this->{$name})) { $this->{$name} = new myData(); } return $this->{$name}; } }

Anschließend können in Instanzen dieser Klasse beliebige verkettete Eigenschaften definiert werden, ohne daß PHP eine Warnung ausspuckt:

$test = new myData(); $test->property = 5; $test->anotherproperty->property = 7;

Die neue Klasse hat keine Nachteile bzg. der Verwendung gegenüber der unmodifizierten Klasse “StdClass”, auch Funktionen wie z.B. “json_encode()” funktionieren weiter problemlos.


NVIDIA Telemetrie-Dienste unter Windows 7

28. November 2017 · Hardware · andreas · Kein Kommentar

Bei der Aktualisierung des NVIDIA-Treibers auf die aktuelle Version “388.31-desktop-win8-win7-64bit-international-whql” blitzte, obwohl lediglich die Treiber aus- und GeForce Experience und NVIDIA 3D Vision als Installationsoptionen abgewählt wurden, kurz der Hinweis auf, daß ungefragt irgendwelche NVIDIA Telemetrie-Dienste installiert wurden.

Ein Blick in die aktuell laufenden Prozesse zeigte einen entsprechenden Dienst, der sich in der Diensteverwaltung aber problemlos beenden und deaktivieren ließ.

Eine Recherche im Internet brachte die Erkenntnis, daß die Sammlung von Telemetriedaten neuerdings wohl Teil des Treibers ist und nicht wie früher Teil der Experience. Die im Tool “Disable Nvidia Telemetry” angegebenen Tasks wurden bei der Installation aber nicht eingeplant.