Ronnys Blog Die Antwort lautet immer noch 42

Überschriften, Clickbait, Heise...

31 Mai, 2018

Wenn selbst der Spiegel einen weniger reißerischen Artikel hinbekommt als Heise, wird es mal wieder Zeit, über seinen Konsum von Heise nachzudenken.

Heise, was ist nur aus dir geworden?

Seite Mitte 2003 bin ich nun regelmäßig in deinem Portal unterwegs und habe bei dir immer einen guten Überblick über die gegenwärtig wichtigen Themen im IT-Umfeld gefunden. Auch habe ich oft erst durch euch über neue Technologien erfahren, die für meine tägliche Arbeit relevant sein könnten.

Seit einem öffentlich ausgetragenen Streit mit einem eurer Redakteure, bei dem es um das korrekte Zitieren aus Quellen geht, habe ich ein Stück weit meinen zuvor blinden Glauben an euer Portal verloren. Ich habe mir eine Weile lang danach die weiteren Artikel des gleichen Autors angesehen und habe für mich den Eindruck gewonnen, das dieser schlicht nur eine Abneigung gegen Ubuntu hat und daher einfach nicht unvoreingenommen über dieses Thema schreiben kann. Das wird dieser Mensch auch von sich selbst wissen, auch wenn er das in der Öffentlichkeit wahrscheinlich nicht zugeben würde. Aber warum darf er dann Artikel in eurem News-Portal darüber schreiben? Das er Ubuntu nicht leiden kann, sollte doch zwischenzeitlich mal aufgefallen sein, oder?

Seitdem wünsche ich mir, dass man schon in der News-Übersicht erkennen kann, von wem ein Artikel stammt. Dann könnte man mit sowas wie Greasemonkey und ähnlichen Werkzeugen einfach den problematischen Redakteur ausblenden. Die Redaktion von Heise wird seine guten Gründe haben, genau das nicht anzubieten.

Immer öfter sehe ich seitdem in den Foren den Vorwurf des Clickbaits. Selbst Fefe hat inzwischen so seine Schwierigkeiten mit euch.

Euer Printmagazin habe ich mir seit über einem Jahr nicht mehr gekauft. Und zu meiner Überraschung musste ich feststellen: Es fehlt mir nix! Ich fühle mich nicht uninformierter und habe zugleich eine schöne Menge Geld eingespart.

Deshalb mein Apell an euch: Werft nicht die Flinte ins Korn und fangt endlich wieder damit an, ordentlich recherchierte Artikel zu liefern. Ich brauche euch nicht als Transportunternehmen für eure Meinungen, sondern als Lieferant für Fakten und Neuigkeiten. Meine Meinung möchte ich mir ohne Vorgabe selbst bilden können.

Noch gibt es Hoffnung, an der solltet ihr anknüpfen. Dann könnt ihr wieder zu dem werden, was ich als Leser jahrelang an euch geschätzt habe.

DSGVO

29 Mai, 2018

Die letzten zwei, drei Wochen waren ja alle ein klein wenig panisch, dass mit der neuen DSGVO sich alle möglichen Webseitenbetreiber einer Millionenstrafe aussetzen.

Zumindest für kleine, private Seitenbetreiber dürfte das Risiko überschaubar bleiben - Golem hat dazu einen relativ guten Artikel veröffentlicht. Wer natürlich versucht, seine Webseite mit Hilfe von Werbebannern zu unterstützen, oder Social-Interaction-Schaltflächer oder gar Kommentare bei sich zulässt, der hat jetzt natürlich ein wenig Aufwand zu betreiben.

Ich war selber sowieso nie ein großer Freund vom Datensammeln - diese Sammlungen verbrauchen Speicherplatz und andererseits wüsste ich damit nicht mal etwas anzufangen. Verkaufen käme für mich nicht in Frage und großartig Analysen betreibe ich auch nicht. Dieser Blog soll lediglcih ein Portal für meine Meinung darstellen und evtl. noch Gegenstimmen zu Wort kommen lassen. Auch wenn bisher keine Gegenstimme kam ;).

Was bleibt ist die Datenerhebung, die Hetzner zwecks Analysen vornimmt. Nach eigenem Bekunden werden mir als Seitenbetreiber die Daten aber auch nur ohne Personenbezug (pseudonymisiert) zur Verfügung gestellt.

Von daher werde ich diesen Blog online lassen, habe jedoch eine Datenschutzerklärung hinzugefügt, die auf den Hetzner-Teil hinweist.

$VerbosePreference korrekt neu setzen

14 Mai, 2018

Wenn man öfter Scripte in Powershell schreiben muss, dann wünscht man sich gelegentlich einen dynamischeren Umgang mit der Darstellung von Infonachrichten.

Powershell bietet von Haus an, Verbose-Nachrichten zu erzeugen. Dies geschieht mittels des Cmdlets:

Write-Verbose "Insert $Message here!"

damit Verbose-Benachrichtigungen bei der Ausführung eines Scriptes angezeigt werden, gibt es mehrere Möglichkeiten:

Die erste Variante ist die, dass wir dem Cmdlet selbst den Verbose-Parameter mitgeben:

Write-Verbose "Insert $Message here!" -Verbose

Dies ist natürlich ein Stück weit sinnbefreit. Deshalb ergibt es Sinn, zu Beginn eines Scriptes folgende Definitionen zu setzen (analog zu einer Powershell-Funktion)

[CmdletBinding()]
param()

Anschließend lässt das Script beim Aufruf den Verbose-Parameter zu:

script-test.ps1 -Verbose

Die Powershell setzt für die Laufzeit des Scripts den Variable $VerbosePreference auf "Continue" (falls der Parameter übergeben wird) oder auf "SilentlyContinue" (falls der Parameter fehlt).

Dies kann man innerhalb des Scripts ausnutzen und unbeliebte Teile des Scripts (zum Beispiel beim Import von Powershell-Modulen) ausblenden

$VerbosePreferenceOLD = $VerbosePreference
$VerbosePreference = [System.Management.Automation.ActionPreference]::SilentlyContinue

Import-Module ActiveDirectory
Import-Module SomeOtherModule
.
.
.

$VerbosePreference = $VerbosePreferenceOLD

Man kann zwar auch

$VerbosePreference = "Continue"

schreiben (und bis heute hat das auch fast immer bei mir geklappt), jedoch die Variable sauber zu definieren stellt sicher, dass das Script auch in späteren Powershellversionen funktionieren wird.

Brückentag Masters...

11 Mai, 2018

Das tolle an Brückentagen ist ja, dass man relativ entspannt Dinge erledigen kann, die sonst immer im Büro liegen bleiben.

Die letzten Tage habe ich daran gearbeitet, das Logging von Powershell-Scripten zu erweitern, bzw. zu dynamisieren. Das Problem, auf dass ich in meinen Scripten gestoßen bin, ist kurz gesagt, dass ich zum Zeitpunkt des Erstellens eines Scriptes noch nicht sicher sagen kann, wo und wie Dinge zu loggen sind.

Wird mein Script direkt in der Konsole ausgeführt? Dann würde es ausreichen, den Log-Krempel in den Verbose-Stream zu werfen. Falls das Script jedoch als geplanter Task oder indirekt über ein drittes Script ausgeführt wird, hilft mir der Verbose-Channel relativ wenig. Ich kann ein Script zwar durch ein zweites ummanteln, die Verbose-Benachrichtigungen auffangen und mir wiederrum in eine Datei oder Datenbank schreiben, aber dann habe ich nur die Nachrichten ohne Zeitstempel.

Letzteres ist oft zwar kein Problem, aber so manches Mal eben doch noch ein Stück weit relevant.

Meine Idee ist, anstatt jetzt in jedem Script fest vorzugeben, was wohin geloggt wird, überlasse ich das dem Ausführenden des Script.

Der Befehl zum Schreiben eines Logs wird dabei in der Art wie diese Zeile aufgerufen:

Write-LogMessage -Message "Hello World!" -Type "Information"

Denkbar einfach und ohne großen Stress. Wenn ich das Ziel dynamisieren will, muss ich dem Write-LogMessage noch mitgeben, wohin die Nachricht gespeichert werden soll. Ich habe mir dafür eine Powershell-Klasse konstruiert:

class LogProfileData{
    [string]$BasePath
    [int]$MaxSize
    [switch]$FileRotation
    [int]$MaxFiles
    [string]$Mode
}

Das kann man wahrscheinlich noch wunderschön optimieren, aber für meine Zwecke reicht es zunächst.

Die Variable $Mode soll verschiedene Möglichkeiten repräsentieren, wohin eine Logzeile geschrieben werden soll. Für den Anfang reichen mir hier zwei Werte: "Verbose" und "File". Die anderen Werte in der Klasse beschreiben genauer, wo Logfiles abzulegen sind (Falls als $Mode der Wert "File" übergeben wird.

Die Funktion Write-LogMessage habe ich um einen weiteren Parameter erweitert:

Write-LogMessage -Message "Hello World2!" -Type "Informational" -LogProfile $Log

Die Parameterfunktionalität ValueFromPipeline und der foreach-Block in dem process-Teil der Funktion ermöglichen mir jetzt, sowohl ein einzelnes Logprofil zu übergeben, oder ein Array von mehreren Profilen. Bei jeder Nachricht wird geprüft, von welchem Typ die Nachricht sein soll und entsprechend verfahren.

Bei einem Logprofil mit $Mode = "Verbose" wird zum Beispiel einfach eine Logzeile an den Verbosestream ausgegeben.

Das PS-Modul hat noch ein wenig Feinschliff nötig, macht aber bereits einen guten Job. Zudem ist das Modul beliebig um weitere LogProfil-Varianten erweiterbar: Du willst einen Splunk-Server mit Nachrichten beglücken? Dann erweitern wir das LogProfil um einen weiteren Modus. Wichtig ist lediglich, dass man von Powershell oder .NET aus die Nachricht absetzen kann.

Eine erste Version des Moduls findet ihr hier:

https://gitlab.com/rldml/PowershellLogging

An dem Teil muss ich noch einiges an Krempel erledigen, bevor es wirklich spruchreif ist, aber diese Version lässt sich bereits verwenden

Unitymedia-Störung braucht wohl Zeit

04 Mai, 2018

Seit gestern Abend haben wir zuhause kein Internet mehr. Die Fritzbox startet zwar grundsätzlich noch, scheint aber auf ein Signal zu warten und startet immer wieder neu. Auch ein Austausch des Anschlusskabels zur Kabeldose hat keine Veränderung gebracht, von den obligatorischen Neustartversuchen (60 Sekunden warten, mal mit und mal ohne die ganzen angeschlossenen Geräte). Ich kann die Fritzbox weder anpingen, noch erhalten neue Netzwerkgeräte IP-Adressen.

Deshalb habe ich gestern Abend den Kontakt zu Unitymedia gesucht und musste etwa eine halbe Stunde in der Warteschleife sitzen. Die Dame hat dann auch mein Ticket aufgenommen und mir zugesichert, dass die Entstörung innerhalb von 24 Stunden stattfindet.

Weil ich bis heute Mittag noch nichts neues von den Leuten gehört habe, habe ich den Chat mit Unitymedia gestartet - dort erfuhr ich, dass die wohl einen Techniker rausschicken wollen, aber aufgrund von Personalmangel könne man mir noch keinen Termin mitteilen. Diese Woche würde es jedoch nix mehr werden.

Versteht mich nicht verkehrt, der Chat-Mensch hat seinen Job super gemacht, aber nicht mal zu wissen, wie lange man jetzt auf seinen Anschluss zum Internet warten muss, ist schon ein Stück weit eine Katastrophe.

Hoffentlich kriegen die Techniker von Unitymedia das Thema doch noch schneller erledigt als bisher angedroht...

Update: Heute Abend auf dem Nachhauseweg wurde ich vom Unitymedia-Support angerufen - mir wird jetzt eine Ersatz-Fritzbox zugesendet. Möglicherweise hat es geholfen, im Chat darauf hinzuweisen, dass falls nur die Fritzbox getauscht werden müsse, ich das im Zweifel selbst angeschlossen bekäme.

Update 07.05.2018: Da ich bis heute keine weitere Rückmeldung erhalten habe, habe ich noch mal Kontakt mit Unitymedia aufgenommen. Im Chat erklärte mir die Dame, dass die Provisionierung des Ersatzgeräts etwa zwei bis drei Tage brauche und es anschließend in die Post ginge. Basierend auf den gegenwärtigen Ticketstatus wird die Box mit etwas Glück morgen in die Post gehen. Wenn man dann noch ein paar Tage Lieferzeit mit dazu rechnet, dann lilegt der Ausfall bei über einer Woche. Sorry, aber das ist echt unter aller Sau - dass das Ersatzgerät nicht "mal eben" zu mir geflogen kommt, ist mir ja bewusst. Aber eine komplette Woche Offline, nur weil ein Gerät ein Defekt hat? Hier sollte es für den Störfall einen beschleunigten Prozess geben, um die Wartezeit als Kunde zu reduzieren.

Das eigentlich tragische ist ja, dass ich am Wochenende an Lidl-Connect verzweifelt bin. Die Überlegung war, wenigstens meiner Frau ein klein wenig Internet zur Verfügung zu stellen, aber selbst das war aufgrund des Postident-Verfahrens einfach nicht möglich. Die wollen nämlich in einem stabilen Stream eine möglichst gute Aufnahme von dem Personalausweis machen. Meine 720p-Webcam ist nicht gut genug dafür und für mein einziges Smartphone gibt es keine passende App. Da ich Anfangs (naiv wie ich nunmal bin) mich nicht für das Identverfahren in einer Postfilliale entschieden habe, habe ich auch keine Auftragsnummer, die ich einem Postangestellten geben könnte, um das Verfahren doch noch in einer Filliale abzuschließen.

Kurz: Lidl-Connect ist scheiße, ich habe Geld ausgegeben und kann den Prepaid-Tarif nicht nutzen.

Das ist sogar ein noch größeres Armutszeugnis als die Leistung von Unitymedia, denn die haben wenigstens sauber definierte Prozesse...

Update 09.05.2018, ca. 9:00 Uhr: Ich habe gerade die Mitteilung erhalten, dass die Fritzbox heute ankommen soll. Natürlich kann ich genau jetzt niemanden zuhause erreichen, damit jemand zur Tür gehen kann... *frust*

Update 09.05.2018, ca. 21:00 Uhr: Internet geht wieder. Vielen Dank an dieser Stelle an die Supporter und Techniker von Unitymedia, die anders als ich, stets einen kühlen Kopf bewahrt haben.

Klassen in Powershell (ab Version 5)

02 Mai, 2018

Ich habe ein neues Feature in der Powershell entdeckt, dass mir bei meinem Scripting-Alltag das Leben deutlich erleichtert: Klassen.

Analog zu anderen Sprachen kann man in der Powershell Datenkonstrukte definieren und diese an vorhandene Cmdlets oder selbst geschriebene Funktionen weiter reichen. Für gewöhnlich nimmt man dazu entweder ein Array, eine Hashtable oder (in manchen Fällen) fragt die erforderlichen Einzelwerte eines Datensets in Form von Parametern ab.

Möchte man jedoch sicherstellen, dass man ein definiertes Set an Daten übergeben wird, kann man dieses Ziel bisher nur schwer erreichen:

  • Ein Array kann beliebige Daten enthalten, oder auch die benötigten Daten in der falschen Reihenfolge. Es gibt keine Möglichkeit, zuverlässig zu überprüfen, ob ein übergebenes Array die angeforderten Daten enthält, dass die Funktion zum Arbeiten benötigt.
  • Eine Hashtable kann beliebig definiert werden. Schränkt man den Funktionsparameter so ein, dass er nur noch eine Hashtable entgegen nimmt, hat man dennoch keine Garantie, dass die übergebene Hashtable die korrekten Datenfelder beinhaltet.
  • Jeden abzurufenden Wert in einen eigenen Parameter zu hüllen, ist zwar eine valide Möglichkeit, aber in manchen Situationen dennoch unpraktisch, da die Korrektheit der Daten in jeder Funktion separat geprüft werden muss (Das kann man zwar ebenfalls wieder in eine Funktion extrahieren, aber irgendwann wird es dann auch unübersichtlich)

Mit Klassen in Powershell (Version 5) kann man diese Probleme umgehen und sie sind denkbar einfach geschrieben:

class MyClass{
  [string]$Name
  [int]$Age
}

Dies erzeugt einen Datentyp mit dem Namen MyClass und den Eigenschaften Name und Age. Ein Objekt wird denkbar einfach mit folgender Zeile erzeugt:

$object = New-Object -TypeName MyClass

 Und befüllen ist ähnlich leicht:

$object.Name = "Hans"
$object.Age = 34

Wollen wir nun eine Funktion schreiben, die ein Objekt der Klasse "MyClass" entgegen nehmen soll, können wir folgenden Funktionsaufruf definieren:

function HelloPerson{
	[CmdletBinding()]
	param(
		[Parameter(Mandatory=$true)][MyClass]$Person
	)
	begin{}
	process{
		$HelloWorld = "Hello " + $Person.Name
		$HelloWorld
	}
	end{}
}

Die Funktion wird für den Parameter Person jetzt nur noch ein Objekt der Klasse MyClass entgegen nehmen.

Darüber hinaus kann man auch Methoden für die Powershell-Klassen definieren. Es steht also nichts im Wege, innerhalb der Klasse eine Methode Check() zu definieren, die überprüft, ob die Werte der Klasse valide sind.

Die Prüfung kann man dann in jeder weiteren Funktion mit

$object.check()

abhandeln und direkt mit dem Inhalt der eigentlichen Aufgabe ausführen.

Wie man Methoden in Klassen definiert, dazu schreibe ich später mehr, sobald ich mich damit befasst habe.

Der Umzug ist geschafft

02 Mai, 2018

nach sechs Jahren an der Witteringstraße haben wir jetzt einen weiteren Schritt zum Zusammenschluss der EVV/IT und des ESH vollbracht und sind jetzt mit in die Büros unserer Kollegen ans ETEC gezogen.

Es fühlt sich noch ein Stück weit komisch an, aber ich bin der festen Überzeugung, dass das völlig normal ist. Die Leute sind hier in jedem Fall alle sehr nett.

SPD rutscht trotz Nahles auf 17% ab

30 April, 2018

Wie zu erwarten war, hat auch Nahles an der Spitze nicht wirklich dazu beigetragen, die Prognosen der SPD zu stabilisieren.

Wenn die SPD wieder als ernsthafte Wahlalternative zur CDU/CSU wahrgenommen werden soll, wird dies nicht durch die Regierungsbeteiligung mit eben dieser Partei zu schaffen sein.

Das ist eigentlich sogar einem Erstklässler klar, nur die Führungskräfte der SPD faseln da etwas was "Erneuerung" - ohne Veränderung versteht sich, sonst könnte es ja kritische Stimmen beim Koalitionspartner geben.

Einziger Wermutstopfen für die SPD sind die Prognosen, die derzeit vom ZDF-Politbarometer kommen, dort liegt die Partei derzeit bei 20%. Ich möchte dennoch bezweifeln, dass das ein guter Wert ist und noch mehr zweifele ich daran, dass die SPD diese Umfragewerte auf Dauer halten kann.

Ich gebs auf...

29 April, 2018

Ich versuche jetzt seit sechs Jahren regelmäßig, mein Hauptsystem auf Linux umzustellen - jedes einzelne Mal scheitert es an irgend einer Sache.

Dieses Mal war es der Versuch, Diablo 3 über Wine zu installieren. Ich bin mit Hilfe von PlayOnLinux zwar soweit gekommen, dass ich ein Anmeldedenster hatte, allerdings wurde der Logon-Button nicht mit dargestellt. Ich habe anschließend diverse Wine-Versionen ausprobiert, aber alles ohne Erfolg.

Und last but not least stürzt Linux (anders als Windows) immer wieder mal einfach komplett ab - ohne irgendwelche Logeinträge zu hinterlassen.

Ich versuche wirklich geduldig zu sein, allerdings habe ich dieses Problem jetzt schon seit fünf Jahren mit allen möglichen Linuxversionen. Wahrscheinlich ist es eine Hardwarekomponente, die im Zusammenspiel mit Linux nicht korrekt arbeitet und den Absturz provoziert. Ich bin jedoch der Auffassung, dass das nicht in dieser Form passieren darf. Selbst Windows schafft es seit Jahren, wenigstens einen Fehlercode anzuzeigen und einen Dump zu erzeugen, der weitere Rückschlüsse auf die defekte Hardware zulässt.

Linux ist ganz nett, wenn man einen Out-of-the-Box-Rechner hat, der voll unterstützt wird und man auf dem Teil wirklich nur Sachen machen will, für die es native Software gibt.

Und nur um das Argument vorweg zu nehmen: Ja, ich habe die Erwartungshaltung, dass es für die Softwareprodukte Lösungsansätze gibt, die ich gern verwende. Für ein Photoshop kann ich unter Linux auf Gimp ausweichen, statt Microsoft Office kann ich LibreOffice verwenden. Aber wenn ich ein Hack'n'Slay spielen will, gibt es da im Moment nur Torchlight 2 - das ist zwar kein wirklich schlechtes Spiel, aber ist mir einfach viel zu bunt (das stört mich zwar auch an D3, aber da isses noch nicht ganz so extrem...)

Da weiß man einfach nicht, worüber man schreiben soll...

27 April, 2018

Jetzt habe ich den Blog bereits sein ein paar Tagen und weiß immer noch nicht so recht, wie ich anfangen soll.

Das ist frustrierend.

Geplant ist dieser Blog als Hilfe für mich, das freie Schreiben zu üben. Ich werde politische Themen, wenn überhaupt, nur in besonderen Fällen hier einbringen, die meisten Artikel werden technischer Natur sein.

Die Kommentarfunktion ist deaktiviert und das ist auch so gewollt: Wer sich genötigt fühlt, meinen Unsinn in diesem Blog zu kommentieren, der möge mir bitte eine E-Mail schreiben. Sofern es Sinn ergibt, diese zu veröffentlichen (das behalte ich mir vor), werde ich das als nachträgliche Ergänzung zum Blogeintrag tun.

In diesem Sinne!

Gruß Ronny

Allgemeines zum Anfang

19 April, 2018

Wenn man jetzt auf den Namen des Blog clickt, wird man auf die Hauptansicht zurückgeführt. Die "Home"-Page muss ich jetzt noch irgendwie weg bekommen, anschließend bin ich schon recht zufrieden...

Hallo Welt!

19 April, 2018

Mein erster Blogpost...

Das ich das noch erleben darf... *sniff*

Neuere Posts → Home