Kurzmitteilung

c’t / 16 / 2020

Ich notiere mir hier einfach mal ein paar Stichpunkte aus der c’t 16/2020:

  • OX COI Messenger (Mail + Messaging – Aktuell in Beta)
  • W10 Application Guard Feature (Edge Safe Brwoser)
  • W10 Konto, OneDrive, BitLocker, Insider
    • Konto neu aufbauen, aktualisieren, einrichten, trennen
  • W10 SSH/Server/SCP => PowerShell
    • DefaultShell = PowerShell
  • Windows Terminal SSH Profile
  • WSL + GUI => Herbst 2020
  • Tool: Windows File Recovery (im Store) => Profil Backup GitHub Liste
  • iCore 10000 Chipsätze
  • xnView MP / Bilderverwaltung
  • Nextcloud/ownCloud Remote API
  • (Programmieren mit Go!)
  • (Informationen zu Qi)
  • Farben in Linux Shell (bashrc-Generator)

Vielleicht sollte ich meine Terminal Profile mal überarbeiten und auf GitHub sichern. Auch die Scripts aus profile_scripts sichern. Vielleicht sollte ich da auch mal ein Backup der GitHub Repos in Betracht ziehen (nicht alle, nach Liste!?).

Da fällt mir ein: Wann wollte Alfahosting auf Debian 10 aufrüsten? Vielleicht sollte ich da noch einmal nachhaken. Dann Backup und neu einspielen + Lokales Backup über PowerShell SSH API.

c’t PDF Download / Backup / c’t Stick.

0x%1!X! – Sprachpakete in Windows 10

Sprachpakete… Man kann nicht mit ihnen, aber ohne sie geht halt auch nicht. Vor allem, wenn man Mitarbeiter im Unternehmen hat, die kein englisch oder deutsch verstehen. Ich halte das noch immer für eine dreiste Lüge, aber was soll ich machen. Dann halt mit Sprachpaketen.

Also erst einmal das aktuelle Sprachpaket laden. Wo gab es das noch einmal? Ach was solls, wir haben doch den uupdump. Datei „microsoft-windows-client-languagepack-package_<lang>-<processor>-<lang>.esd“ laden und im SCCM einbinden. Zum Schluss noch in der aktuellen Windows 10 Task Sequenz die Sprachpakete einbinden und fertig.

Das funktioniert auch soweit, nur dass nach dem ersten Boot und dem Wechsel von der Sprache die man installieren wollte – bzw. installiert hat – in die Sprache, die auf der ISO installiert war ein „Fehler“ auftritt. Dieser ist als solches beim ersten Hinschauen nicht erkennbar, da die Meldung in den „Nein, nicht abmelden“-Dialog gestopft wird.

Kurz gesagt ist ein Fehler aufgetreten und ein paar Sprach-Funktionen konnten nicht korrekt geladen werden („you can try again later… Error code: 0x%1!X!“). Unter der Sprachauswahl steht ein ähnlicher lokalisierter Text: „Sorry, we’re having some trouble on our end. Retry?“

In diesem konkreten Fall, reicht es aus, das Windows Update anzuschmeisen und damit das letzte CU neu installieren zu lassen. Anschließend haben die installierten Sprachpakete eine andere Version, nämlich die des aktuellen Builds (beispielsweise 18363.476).

Als kleinen Nachtrag (ich bin faul): LXP sind keine vollständigen Language Packs (siehe MS TechNet, „[…] however, for full languages (aka SKU languages), we have not yet retired the legacy language packs (lp.cab) […]“). Daher sind LXPs nichts für unsere Umgebung. Sollte Microsoft hier mal etwas ändern um es den Admins „leichter“ zu machen, werde ich mich dessen annehmen… Vielleicht…

Java Threads und die Zeit

Guten Morgen meine IT-Kollegen,

gerade stieß ich wieder auf ein Problem, welches unter normalen Umständen nicht auftreten sollte: Die Uhrzeit des Hosts ändert sich. Dies sollte bei Programmen die keine Threads haben, oder Threads, die alle paar Stunden einmal ausgeführt werden sollen, in der Regel kein Problem sein. Bei Threads die wichtige Daten alle paar Minuten auswerten / verschieben / löschen sollen, kann dies aber unter Umständen zu dem Problem führen, dass der Thread erst bei der nächsten Uhrzeit ausgeführt wird (Thread.sleep(), Timer und der TimerTask sind hier so Kandidaten).

Zur Veranschaulichung folgende Situation die ich letztens hatte: Ein Programm verschiebt Daten alle X Sekunden (oder sobald eine Datei in ein C:\Pfad landet) auf einen UNC-Pfad. Jetzt wird die nächste Ausführung durch den Timer auf die aktuelle Zeit plus den eingestellten Delay gesetzt. Auf Grund eines Backup-Systems mit einer falschen Uhrzeit, wird die Zeit des Hosts mit der Zeit des Backup-Systems, ein eigenes System mit leider falsch eingestellter Uhrzeit welches von meinem Kollegen verwaltet wird, synchronisiert (sollte nicht passieren, aber das ist ein anderes Thema) und somit um 2 Stunden nachgestellt.

Der Thread wird wieder ausgeführt und setzt die Zeit wieder auf die veränderte aktuelle Zeit plus den vorher eingestellten Delay. Das Backup System wird anschließend fertig und die Zeit wird wieder auf die vorherige zurück gestellt. Jetzt hätten wir auf dem Host beispielsweise 10:00 Uhr, auf dem Backup-System 12:00 Uhr und der nächste Thread würde um 12:02 Uhr anfangen. In den zwei Stunden macht das Programm gar nichts, da der Thread geplant ist und so gesehen kein Fehler zum Auswerfen vorliegt.

So weit dazu.

Dies scheint vor allem an den von Java verwendeten Funktionen zu liegen. Allen voran die Funktion System.currentTimeMillis(). Man könnte nun eigene Klassen und Funktionen schreiben, die statt dieser die Funktion System.nanoTime() verwendet, aber dann müsste man die damit zusammenhängenden Funktionen auch neu schreiben und da diese leider meist private deklariert wurden die entsprechenden Klassen gleich mit dazu.

Sowas mache ich meist eher ungern 😉

Eine gute Möglichkeit für den Ersatz von java.util.Timer (oder entsprechender anderer Klasse) ist ein ScheduledThreadPoolExecutor. Dies könnte in Verwendung in etwa wie folgt aussehen:

Ist natürlich nur ein Beispiel. Man könnte unter anderem die return Werte von scheduleAtFixedRate() in einem Future Array speichern und dann abfragen, aber das gehört in einen anderen Beitrag 😉

Viel Spaß beim Programmieren

Lukas

Netzteil Kurzschließen

Guten Morgen,

da ich die Darstellung letztens wieder gesucht habe, hier eine kleine Übersicht des Anschlusses:

Darstellung zum Kurzschließen des Netzteiles

Darstellung zum Kurzschließen des Netzteiles

Nun einfach PS_ON mit Masse verbinden (dazu könnt ihr euch einen aussuchen, ich nehme meist in 16/18, ist für mich am praktischsten). Vielleicht könnt ihr damit ja etwas anfangen.

Wünsche euch allen einen sonnigen Montag.

Lukas

Diese Veranstaltung ist geschlossen

Hach ja, programmieren ist doch etwas schönes. Alles funktioniert ohne Probleme und keiner übt Druck auf einen aus beispielsweise um etwas zu beheben, was einwandfrei funktioniert. Alles harmoniert und ich liege faul auf dem Sofa und lass die Gedanken schweifen…

Scherz beiseite 🙂

Seit neuestem kriege ich ab und an eine „ClosedByInterruptException„. Das kommt meistens daher, dass es Threads gibt die sich alle gleichzeitig für die größten halten. Fast wie so ein Kollege von mir, aber das ist ein anderes Thema. In meinem Fall tritt es bei Dateioperationen auf (beim Threading immer eine schwierige Geschichte).

Weiterlesen

Kurzmitteilung

Game Development

Moin,

habe gerade mal ein wenig im Internet gestöbert. Diese Liste auf Reddit könnte für manche zukünftige Entwickler eine gute Anlaufstelle sein. Darunter auch der Hinweis, dass man möglichst mit Pong und Super Mario Bros. als Grundlage anfangen sollte.

Daher versuche ich mich die Tage mal an diesen beiden Spielen und werde diese neben anderen Tests auf folgender Seite hochladen:

Lukas Kurth Rocks Games

Wer Lust hat, darf sich meine Fehl-Versuche – und den einen oder anderen Test – daher auch gerne einmal anschauen und mir Feedback geben. Soweit von mir…

Lukas

Matrix Prozess Monitor

Hey Leute,

lange nichts mehr von mir gegeben. Habe die letzten Monate so vor mich her programmiert. Zwischenzeitlich hatten wir hier auch einen Praktikanten, der mir bei meinem Java-Projekt weitergeholfen hat. So konnte ich meine etwas überladene Swing-GUI beiseite legen und mit dem Spring Framework eine Seite gestalten (ist bei Applikationen die auf dem Server laufen eh zu empfehlen 🙂 ).

Jetzt nachdem der Praktikant nicht mehr da ist gäbe es zwar noch ein paar Sachen die angepasst werden müssten, aber ich komme klar 😉

Die Tage gab es dann mal wieder eine rege Diskussion zu Matrix (dem Film), was denn möglich ist und was überhaupt mit Matrix gemeint ist (es ist wirklich nur ein Film Leute 😉 ). Allerdings finde ich die Idee mit dem, wie soll man ich sonst nennen, „Matrix-Regen“ gar nicht mal schlecht. Richtig angeordnet und richtig gelesen, könnte er viele Informationen enthalten. Diese Informationen lassen sich dann auch schneller wiedergeben als nur simpler Text.

Ein Programm habe ich ja, fehlt also nur der Regen. Als Basis habe ich mal den Code von Kenai zu Grunde genommen. Hier wird allerdings nur 40 mal der addDrop() ausgeführt und dann so lange selbst aufgerufen bis man das Programm beendet.

Um mit dem Programm zu arbeiten also erst einmal eine Interface-Klasse gebastelt, bei mir sieht diese in etwa so aus:

Weiterlesen

Kurzmitteilung

Boot-Records

Guten Morgen,

habe es letztens auf der Arbeit geschafft meine Boot-Selektion abzuschießen. Lange ist es her, dass ich das mal neu aufsetzen durfte. Es wollte nur noch das alte XP starten und nicht mehr meine Linux Partition. Das Reparieren funktioniert aber nicht, wenn man die die Live-CD hat, mit der es aufgesetzt wurde.

Hatte nur noch die CD von 12.04, Kali und den Secure Remix x64 12.10. Bei letzterem wurde allerdings an die Boot-Reparatur gedacht, zum Glück für mich. Habe Ubuntu seit langem wieder gestartet. Updates laufen schon den halben Tag…

Ich glaube ich brauche endlich mal Urlaub 🙂