Technik

Sublime Text: aktuelles Datum einfügen

12. April 2018 · Anwendungen · andreas · Kein Kommentar

Den Codeschnippsel einfach in “Packages/User” als “timestamp.py” anlegen:

import datetime
import sublime, sublime_plugin

class TimestampCommand(sublime_plugin.TextCommand):
  def run(self, edit):
    timestamp = "%s" % (datetime.datetime.now().strftime("%Y-%m-%d"))
    for region in self.view.sel():
      if region.empty():
        self.view.insert(edit, region.begin(), timestamp)
      else:
        self.view.replace(edit, region, timestamp)

Um per Tastendruck aktiviert zu werden, die Key Bindings noch um folgende Zeile ergänzen:

{ "keys": ["ctrl+shift+t"], "command": "timestamp" }

Sofern Text markiert ist, wird dieser durch den Datumstempel “YYYY-MM-DD” ersetzt, ansonsten wird das Datum an der Cursorpositon eingefügt.


Automatischer Redirect bei Firefox

10. März 2018 · Anwendungen · andreas · Kein Kommentar

Im lokalen Netz werkelt eine virutelle Linux-Spielkiste, welche auf Grund ihres Einsatzzwecks auf den Namen “sandbox” hört. Der auf dieser Maschine laufende Webserver ist aus dem lokalen Netz über die Adresse “http://sandbox” erreichbar.

Wenn die Kiste ausgeschaltet ist, führt ein Versuch, die URL in Google Chrome zu öffnen wie erwartet zu einer Fehlerseite mit dem Hinweis

Die Server-IP-Adresse von sandbox wurde nicht gefunden.

Firefox hingegen versucht ebenfalls - logischerweise ergebnislos - die URL zu öffnen und führt den verdutzten Anwender letztendlich zur Adresse “http://www.rotoworld.com/?ref=sandbox”, eine Vorgehensweise, welche auf den ersten Blick unschöne Methoden wie DNS-Hijacking (oder Schlimmeres) als Ursache vermuten lässt, letztendlich aber einen trivialen Grund hat, welcher bereits vor rund 7 Jahren Thema des Beitrags “Firefox fügt automatisch ‘www.’ und ‘.com’ an” war:

Wenn Firefox zu einer eingegebenen URL keine Verbindung bekommt, beginnt ein Verwirrspiel durch Anhängen einer Domainendung - in diesem Fall der Endung .“com”, die aus der ursprünglichen Adresse “http://sandbox” dann “http://sandbox.com” macht - welche zum gleichen Betreiber wie “http://www.rotoworld.com” gehört und letztendlich den Redirect erklärt.

Manchmal frage ich mich ernsthaft, was sich ein Programmierer bei der Implementierung solch sinnbefreiter Automatismen denkt: Wegen jedem Krimskrams wird irgendwo eine Leiste eingeblendet, die darauf hinweist, daß Firefox dieses, jenes oder noch was ganz viel tolleres könnte. Und bei sowas? Da wäre ein Hinweis “Address not found - redirecting to potentially unwanted site” wirklich hilfreich.


UltraEdit-Alternativen

29. Januar 2018 · Anwendungen · andreas · 1 Kommentar

Nachdem es bei UltraEdit zu einer für den Kunden alles andere als vorteilhaften Umstellung des Lizenzmodells kam, stellt sich die Frage, welche Alternative(n) in Frage kommen. Die Wahl eines Editors hängt hierbei extrem vom jeweiligen Anforderungsprofil ab, den richtigen Editor für jedermann kann und wird es nicht geben.

Wer die Anwendung morgens einmal startet, um den ganzen Tag kontinuierlich an einem Projekt zu arbeiten, für den spielen andere Kriterien eine Rolle wie für einen Systemadministrator, der öfter ein paar Änderungen an einem Skript oder einer Konfigurationsdatei vornehmen muss - das vielfältige Spektrum möglicher Vor- und Nachteile erstreckt sich von der reinen Startzeit über integrierte Funktionalitäten wie GitHub oder einen Debugger.

Neben der Wikipedia-Liste der Texteditoren bieten sich insbesondere die Developer Survey Results 2017 von stackoverflow als Grundlage für die Auswahl der Testkandidaten an.

Weiterlesen


UAC-Aufforderung in Abhängigkeit vom Dateinamen

18. Januar 2018 · Betriebssysteme · andreas · Kein Kommentar

Bei der Anpassung von Quake II auf Full-HD-Auflösung bin ich über Folgendes gestolpert:

Wird die Datei “quake2.exe” im Explorer mit Rechtsklick als “quake2 - Kopie.exe” kopiert, so wird die Datei ganz normal dargestellt und ist auch ausführbar, ohne daß die Benutzerkontensteuerung aktiv wird.

Wird die Datei in “quake2patched.exe” umbenannt, wird das Dateisymbol mit einem Schild dargestellt und es erscheint beim Start eine Anfrage der Benutzerkontensteuerung.

Die Dateien sind identisch:

>fc /b quake2.exe quake2patched.exe
Vergleichen der Dateien quake2.exe und QUAKE2PATCHED.EXE
FC: Keine Unterschiede gefunden

Wird die “quake2patched.exe” in z.B. “quake2test.exe” umbenannt, verschwindet das Schild-Symbol wieder.

Wie der MSDN-Artikel “UAC: Five most common Install failure Scenarios and workarounds” nahelegt, liegt das Verhalten tatsächlich am Dateinamen:

How the detection happen:

Before a 32bit process is created, following attributes are checked:

  1. FileName includes: “install”, “setup” “update” etc.

Dann fällt “patched” wohl unter etc.


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);