Normale Ansicht

Es gibt neue verfügbare Artikel. Klicken Sie, um die Seite zu aktualisieren.
Ältere BeiträgeBlogs

📚 Python (2. Aufl.) erschienen

23. November 2021 um 14:12

Die zweite Auflage von »Python — Der Grundkurs« ist erschienen. Für die Neuauflage habe ich dieses äußerst erfolgreiche Buch im Hinblick auf die aktuelle Python-Version 3.10 vollständig aktualisiert und in vielen Details verbessert:

  • Assignment Expressions (Zuweisung und Vergleich kombinieren)
  • Neue Formatierungssyntax `f'{varname}‘
  • Vereinigung von Dictionaries
  • Pattern Matching (Tupel, Listen und Sets mit Mustern auswerten)
  • Stärkere Berücksichtigung von VSCode als Python-Editor

Am Grundkonzept des Buchs hat sich nicht geändert: Der kostengünstige Grundkurs richtet sich an Einsteiger, die parallel zum Buch Python in der Schule, im Studium oder in der Arbeit lernen, sowie an Umsteiger von anderen Programmiersprachen, die rasch die Eigenheiten von Python erlernen wollen.

Viele Beispiele aus der Praxis sowie Übungsaufgaben helfen dabei, Python ohne allzu viel Theorie kennenzulernen. Im handlichen Taschenbuchformat ist das Buch auch unterwegs ein idealer Begleiter. Mehr Details zum Buch gibt es hier:

https://kofler.info/buecher/python/

Kotlin-Updates: Kotlin 1.6

21. November 2021 um 17:20

Seit einigen Tagen ist Kotlin 1.6 verfügbar. Dieser Beitrag geht auf die wichtigsten Neuerungen im Vergleich zu Version 1.5 ein. Die Kurzfassung: Kotlin 1.6 ist ein »kleines« Release, für die meisten Entwickler gibt es keine wirklich dramatische Änderungen. Auch die Verbesserungen in der Standardbibliothek sind eher Kleinigkeiten.

Dieser Text bezieht sich auf die folgenden Versionsnummern:

IntelliJ: 2021.2.3
Kotlin: 1.6.0
JDK: 17

Weitere Kotlin-Update-Artikel auf meiner Website finden Sie hier:

https://kofler.info/tag/kotlin-updates

Exhaustive »when«

In Kotlin 1.6 beklagt sich der Compiler, wenn eine when-Konstruktion für Enumerationen, boolesche Werte oder für Datentypen nicht alle möglichen Fälle erfasst, also nicht »exhaustive« ist. Aktuell können Sie diese Warnung noch ignorieren, aber in Kotlin 1.7 wird daraus ein Fehler. Spätestens dann müssen Sie die when-Konstruktion so formulieren, dass sämtliche Fälle erfasst werden (am einfachsten durch einen else-Block).

enum class Days {
    Monday, Tuesday, Wednesday, Thursday, 
    Friday, Saturday, Sunday
}

val day = Days.Friday
when(day) {
    Days.Monday, Days.Tuesday -> println("Wochenanfang")
    Days.Wednesday, Days.Thursday -> println("Wochenmitte")
    Days.Friday -> println("Fast geschafft")
    // Warnung:  Non exhaustive 'when' statements on enum will be prohibited 
    // in 1.7, add 'Saturday', 'Sunday' branches or 'else' branch instead
}

Standardbibliothek

readln: Wenn Sie mit readLine() eine Datei zeilenweise auslesen, liefert die Funktion entweder die nächste Zeile oder null. Nunmehr gibt es zwei Varianten zu readline, die die ursprüngliche Form längerfristig ablösen sollen:

  • readlnOrNull() verhält sich wie ehemals readLine(), ist aber klarer benannt und hat mehr Ähnlichkeiten mit println.
  • readln() löst dagegen einen Fehler aus, wenn das Ende der Datei erreicht ist, und kann statt dem wenig eleganten readLine()!! verwendet werden.

readLine() bleibt uns vorerst erhalten, soll aber in kommenden Kotlin-Versionen deprecated werden.

typeOf: typeOf<Typ> liefert ein KClass-Objekt, das Typ beschreibt. Die Funktion stand zwar schon seit Kotlin 1.3.40 zur Verfügung, ursprünglich aber nur für die JVM-Variante. Nunmehr kann typeOf in allen drei Kotlin-Varianten (also auch JS und Native) verwendet werden.

Duration-API: Die Duration API (beschrieben in Abschnitt 7.3 meines Kotlin-Buchs) gilt nun als stabil. Das gilt allerdings nicht für andere kotlin.time-Klassen zur Zeitmessung. Die in Kotlin 1.5 abgeschaffte Notation

val myDur = 2.minutes + 3.seconds - 10.milliseconds * 0.66

ist erfreulicherweise wieder eingeführt worden, erfordert nun aber Importe der betreffenden Companion-Eigenschaften, hier also:

import kotlin.time.Duration.Companion.minutes
import kotlin.time.Duration.Companion.seconds
import kotlin.time.Duration.Companion.milliseconds

Unsupported class file major version 61

Meine ersten Tests mit Kotlin scheiterten an Java 17. Auf meinem Rechner ist auch die JDK 17 installiert. Anscheinend ist das Build-System dazu nicht kompatibel. IntelliJ war nicht in der Lage, das minimalistische Console Template zu kompilieren und zeigte eine wenig hilfreiche Fehlermeldung an:

Could not open init generic class cache for initialization script '/tmp/wrapper_init4.gradle' (/crypt/home/kofler/.gradle/caches/7.1/scripts/954mesz5ux7usmane6uzpuni1).
> BUG! exception in phase 'semantic analysis' in source 
> unit '_BuildScript_' Unsupported class file major version 61

Eine kurze Suche in stackoverflow ergab, dass Kompatiblitätsprobleme zwischen Gradle und der JDK 17 die Ursache sein könnten. Ich habe dann die JDK-Version für das Build-System auf 11 zurückgesetzt, und alles funktionierte. Merkwürdig. (Es geht hier nicht um die JDK für das eigentliche Projekt, die darf sehr wohl 17 sein.)

Die von JVM eingesetzte JVM sollte nicht allzu aktuell sein …

Quellen/Links

Sonstiges:

SWAP des Raspberry Pi vergrößern

03. November 2021 um 17:39

Neulich hatte ich Bedarf den SWAP eines Raspberry Pi, auf dem ein Raspberry Pi OS läuft, zu erweitern, da dieser ständig überlief. Hier sind per Standard 100MB eingerichtet. Diesen Wert galt es nun auf 1000MB anzuheben.

Diese Änderung kann ganz einfach wie folgt umgesetzt werden. Dazu ruft man mit dem Editor Nano die Datei  /etc/dphys-swapfile auf

sudo nano /etc/dphys-swapfile

sucht den entsprechenden Eintrag und ändert den Wert, wie im Beispiel auf 1000.

CONF_SWAPSIZE=1000

Nach dem Abspeichern via Ctrl + o, dem Verlassen des Editors mit Ctrl + x und einem anschließenden Reboot, steht die neue Größe des SWAP-Speichers zur Verfügung.

sudo reboot

SONOFF Zigbee 3.0 USB Dongle Plus: Z-Stack 3.x.0 Firmware unter Linux aktualisieren

02. November 2021 um 05:25

Ich habe mir vor kurzem den „SONOFF Zigbee 3.0 USB Dongle Plus“ gekauft. Dieser wird standardmäßig mit der Z-Stack 3.x.0 Firmware Version „20210120“ ausgeliefert, die (Stand November 2021) aktuelle Z-Stack Firmware Version ist „20210708“....

realpath zeigt absolute Pfade an

31. Oktober 2021 um 17:42

Kurz notiert: es gibt Situationen, in denen man Pfade auflösen, also relative Pfade in absolute umwandeln möchte. Für Anwender, die dabei Konstruktionen mit pwd und kompliziertes Parsing umgehen wollen, bietet sich realpath aus den GNU Coreutils an.

Die Bedienung ist denkbar einfach: realpath nimmt beliebig viele Pfade als Argumente auf und gibt die absoluten Pfade zeilenweise aus. Dabei werden standardmäßig auch Symlinks aufgelöst, sodass der „wahre“ Pfad, im Programmkontext auch physischer Pfad genannt, angezeigt wird.

Mit einigen Zusatzoptionen, die sich in der Manpage realpath(1) finden lassen, kann weiterhin das Verhalten angepasst werden. Hier sei zum Beispiel -e erwähnt, das einen strikteren Modus aktiviert und überprüft, ob das letzte Element im Pfad überhaupt existiert – stanardmäßig ist dies nicht der Fall. Mit -s kann die bereits beschriebene Auflösung von Symlinks deaktiviert werden.

Alles in allem, ein hilfreiches Werkzeug, besonders für Shellscripte. Der Quelltext von realpath ist auch überschaubar und beispielsweise auf GitHub zu finden.

Ein Hauch von Code für den Darkmode

24. Oktober 2021 um 20:38

Es hat ja nun ein wenig gedauert bis ich mich bewegt habe.Ich selbst genieße den Darkmode jeden Abend an meinen Rechnern und sehe Ihn als Standard an.Erzwingen muss ich Ihn via Firefoxplugin bei manchen Seiten, aber sind wir ehrlich, ich bin eigentlich auch nicht besser. So wenig Zeilen Script, so eine positive Änderung für die ... Weiterlesen

Der Beitrag Ein Hauch von Code für den Darkmode erschien zuerst auf Got tty.

Kooperationen um AG KRITIS erweitert

23. Oktober 2021 um 20:39

Do-FOSS bettet sich weiter in bestehende gesellschaftliche Strukturen ein. Nachdem bereits die Free Software Foundation Europe, die FOSS-AG, das Offene Kommunen.NRW Institut (OK.NRW), der ver.di Bezirk Westfalen, die Document Foundation, digitalcourage, die Open Source Business Alliance, Pauluskirche und Kultur und das Klimabündnis Dortmund als Kooperationen aufgeführt sind, erweitern wir unser Wissens- und Handlungsnetzwerk um die AG KRITIS.

Die AG KRITIS ist vollständig unabhängig von Staat oder Wirtschaft und vertritt als Ziel einzig und allein, die Versorgungssicherheit der Bevölkerung zu erhöhen. Die Mitglieder der AG KRITIS sind Fachleute und Expert*innen, die sich täglich mit Kritischen Infrastrukturen (KRITIS) beschäftigen. Die AG KRITIS ist der Auffassung, dass die Ressourcen der Bundesrepublik zur Reaktion auf Großschadenslagen durch Cyber-Vorfälle im Bereich der Kritischen Infrastrukturen nicht ausreichen, um die Auswirkungen der dadurch verursachten Krisen und Katastrophen zu bewältigen. Eine wesentliche politische Position der AG KRITIS lautet, dass im KRITIS-Umfeld eingesetzte Software grundsätzlich quelloffen gestaltet sein soll.

CC0
Soweit im gesetzlichen Rahmen möglich verzichtet der Autor auf alle Urheber- und damit verwandten Rechte an diesem Werk.
Es kann beliebig genutzt, kopiert, verändert und veröffentlicht werden.
Für weitere Informationen zur Lizenz, siehe hier.

The post Kooperationen um AG KRITIS erweitert appeared first on Do-FOSS.

Eine komplette Sitzung in der Shell aufnehmen

23. Oktober 2021 um 08:34

Ein Abschnitt, welcher gute Dienste leisten kann. Ich hatte den Abschnitt vorübergehend immer in die Datei /etc/bash.bashrc hinzugefügt. Ich fand Ihn perfekt, wenn ein Drittanbieter auf dem Server via SSH arbeiten verrichten musste. Vorher sollte der Drittanbieter informiert werden, dass seine Arbeit überwacht wird . Funktioniert natürlich nicht, wenn mit ansible und ähnlichen gearbeitet wird ... Weiterlesen

Der Beitrag Eine komplette Sitzung in der Shell aufnehmen erschien zuerst auf Got tty.

Nach 5 Jahren, raus aus dem Homeoffice

02. Mai 2021 um 15:28

Ich habe nun über 5 Jahre im Homeoffice gearbeitet. Hier habe ich die vielen Vorteile, sowie aber auch die Nachteile genossen. Fasziniert habe ich die Empfehlungen der letzten zwei Jahre für die Arbeit im Homeoffice verfolgt, aber mich aus dem Thema herausgehalten. Vieles war für uns nicht so umsetzbar und hätte auch nicht so zu ... Weiterlesen

Der Beitrag Nach 5 Jahren, raus aus dem Homeoffice erschien zuerst auf Got tty.

Fehlermeldung nach Nextcloud-Upgrade auf Version 21.0.3

12. August 2021 um 05:05

Beim Upgrade auf die Version 21.0.3 meiner Nextcloud erhielt ich folgende Fehlermeldung:

Letzte Cron-Job-Ausführung: Vor 5 Stunden. Check the background job settings.

Die Hintergrund-Aufgaben via CronDen System-Cron-Dienst verwenden, um die Datei cron.php alle 5 Minuten aufzurufen. Die cron.php muss durch den Systemnutzer „www-data“ ausgeführt werden.„, konnten nicht mehr ausgeführt werden.

Normalerweise kommt es i.d.R. zu solchen Meldungen eher beim Upgrade auf die nächste Major-Version. Da ich diesen Fehler nun auf zwei betreuten Nextcloud-Instanzen feststellen musste, konnte es nur etwas mit der Konfiguration der Server zu tun haben.

Nach ein wenig Recherche im Netz fand ich die Lösung. Das Command Line Interface des PHP Cache musste explizit nachträglich aktiviert werden. Wenn ich das richtig deute, ist dies aber nur in meiner älteren PHP 7.3 nötig.

Hierzu öffnet man im Editor nun die Config /etc/php/7.3/mods-available/apcu.ini mit

sudo nano /etc/php/7.3/mods-available/apcu.ini

trägt folgende Zeile am Ende ein

apc.enable_cli=1

und speichert diese ab. Bei Verwendung von FPM startet man das Ganze neu.

sudo /etc/init.d/php7.3-fpm restart

Wer kein FPM aktiviert hat, führt einen Restart des Webservers durch.

❌
❌