planet.debianforum.de

der Planet der debianforum.de-Benutzer

Zum Inhalt


 
 
 

17.05.2025

Christoph Langner (Chrissss)

Umzug auf eine AVM Fritzbox 5690 Pro: Von Fritzbox zu Fritzbox

Meine bisherige Fritzbox 7580 hat zuletzt immer häufiger Probleme gemacht. Das WLAN wurde instabil, Smartphones, Tablets und andere auf das drahtlose Netz angewiesene Geräte im Haus verloren mehrmals täglich die Verbindung und wechselten (so vorhanden) ohne Vorwarnung ins Mobilfunknetz. Nach ein paar Minuten tauchte das WLAN wieder auf – nur um wenig später erneut abzubrechen.

Trotz aller Tipps aus der AVM-Wissensdatenbank und unzähliger Anpassungen in den Einstellungen änderte sich daran nichts. Ich vermute ein thermisches Problem: Nach Abschalten und einer Abkühlphase funktioniert das WLAN zunächst stabil, doch je länger die Fritzbox wieder in Betrieb war, desto häufiger traten die Aussetzer erneut auf.

Modernes Design, aktuelle Technik: Die Fritzbox 5690 Pro ist für DSL und Glasfaser ausgelegt und bringt mit Wi-Fi 7 sowie Zigbee zukunftstaugliche Standards direkt mit.Modernes Design, aktuelle Technik: Die FRITZ!Box 5690 Pro ist für DSL und Glasfaser ausgelegt und bringt mit Wi-Fi 7 sowie Zigbee zukunftstaugliche Standards direkt mit.

Warum die Wahl auf die Fritzbox 5690 Pro fiel

Ein kompletter Neustart war also nötig. Allzu sehr hat mich das nicht gestört – die 7580 war ohnehin ein eher enttäuschendes Modell. Zwar ursprünglich von AVM als Flaggschiff gedacht, blieb sie in Sachen Software-Updates und Funktionen schnell auf der Strecke. WireGuard als moderne VPN-Lösung wurde zum Beispiel nie integriert. Das war für mich ein echter Minuspunkt, da ich mir nach der Ankündigung seitens AVM einen wesentlich vereinfachten und verbesserten VPN-Zugang zur Fritzbox von Linux-Systemen aus versprochen hatte.

Da bei mir – eventuell – in unbestimmter Zukunft ein Wechsel auf Glasfaser ansteht, fiel die Wahl auf die AVM Fritzbox 5690 Pro. Der Router ist für DSL und Glasfaser ausgelegt und somit bestens geeignet für den Übergang. Wer wie ich aktuell noch DSL nutzt, aber mittelfristig auf Glasfaser umsteigen will, muss so nicht erneut Geld in die Hand nehmen. Preislich liegt die neue Fritzbox bei rund 300 Euro – kein Schnäppchen, aber dank der Dual-Modem-Ausstattung irgendwie noch zu vertreten.

Links: Der Einschub für AON- und GPON-SFP-Module für Glasfaseranschlüsse. Rechts: der klassische DSL-Port. So ist die Box für beide Zugänge vorbereitet.Links: Der Einschub für AON- und GPON-SFP-Module für Glasfaseranschlüsse. Rechts: der klassische DSL-Port. So ist die Box für beide Zugänge vorbereitet.
Das Rückgrat fürs Heimnetz: Vier Gigabit-Ports plus ein schneller 2,5-Gbit/s-Anschluss. Der USB-3.1-Port eignet sich für Speicher oder Smart-Home-Erweiterungen.Das Rückgrat fürs Heimnetz: Vier Gigabit-Ports plus ein schneller 2,5-Gbit/s-Anschluss. Der USB-3.1-Port eignet sich für Speicher oder Smart-Home-Erweiterungen.

Reibungsloser Umzug von alter zu neuer Fritzbox

Der Wechsel verlief erstaunlich problemlos. Die Export- und Importfunktion der Fritzbox hat zuverlässig funktioniert: Zugangsdaten für den DSL-Anschluss wurden korrekt übernommen, ebenso meine Netzwerkkonfiguration. In meinem Netzwerk läuft ein Pi-hole zur netzweiten Werbeblockade – das funktionierte sofort wieder wie gewohnt. Auch DynDNS, Portweiterleitungen und das über Google synchronisierte Telefonbuch wurden korrekt übertragen.

Nur bei den DECT-Geräten wie dem Fritzfon C6 (nutze ich eigentlich nur noch zum Bestätigen von Einstellungen in der Fritzbox – meine Festnetznummer kennen und nutzen noch genau zwei Personen) sowie bei den Smart-Home-Komponenten wie Steckdosen und Heizkörperthermostaten musste ich einmal manuell Hand anlegen. Die Geräte ließen sich jedoch schnell wieder neu verbinden. Gruppen und Schaltpläne blieben erhalten, sodass der Aufwand minimal war.

Was die 5690 Pro kann – und was (noch) nicht

Technisch bietet die 5690 Pro vieles, was man aktuell erwarten darf. Mit Wi-Fi 7, Zigbee und DECT-ULE ist die Ausstattung zukunftssicher. Vor allem Zigbee ist interessant für alle, die smarte Geräte unterschiedlicher Hersteller direkt über die Fritzbox steuern wollen. Ich habe derzeit noch keine Zigbee-Hardware im Einsatz, bin aber gespannt, wie gut das Zusammenspiel in der Praxis funktioniert.

Etwas ernüchternd ist allerdings die Situation rund um den Smart-Home-Standard Matter. AVM hatte Matter-Support für die FRITZ!Box 5690 Pro angekündigt, doch bislang ist davon rein gar nichts zu sehen. Auf der Produktseite fehlt inzwischen sogar jede Erwähnung von Matter, und wer sich informieren will, muss sich durch ältere Pressemitteilungen klicken – zum Beispiel die von AVM zur ANGA COM 2024:

Fritzbox 5690 Pro: Triband-Fritzbox für Fiber und DSL mit Wi-Fi 7 und Zigbee … Dank der Unterstützung von Zigbee, DECT ULE und zukünftig auch Matter können zusätzlich zu den smarten FRITZ!-Produkten viele Geräte anderer Hersteller integriert werden. – AVM, 13.05.2024

Support für Matter? Großes Fragezeichen

Wer schon jetzt Matter mit AVM-Geräten in sein Smart Home einbinden möchte, ist auf das zusätzliche FRITZ!Smart Gateway angewiesen. Das kommt für mich aktuell nicht infrage – die nötige Hardware steckt ja bereits in der 5690 Pro. Es wäre wünschenswert, wenn AVM hier bald nachliefert. Irgendwie habe ich allerdings Zweifel daran: Die 5690 Pro war ewig angekündigt, aber lange nicht im Handel erhältlich. Irgendwie ist da der Wurm drin.

Ein weiteres Fragezeichen steht hinter den Labor-Firmwares. AVM hatte zwischenzeitlich eine Labor-Version für die 5690 Pro veröffentlicht, aktuell gibt es jedoch keine neue Testversion. Offenbar wurde das Programm mit dem offiziellen Release von FRITZ!OS 8.0 eingestellt. Wer also gerne neue Funktionen ausprobiert, muss sich bei den Boxen der 7x90er-Reihe umsehen. Finde ich persönlich schade, da ich aus persönlichem und beruflichem Interesse ganz gerne die Labor-Firmwares austeste.

FRITZ!OS 8.03 ist aktuell – aber ohne Labor-Firmware. Wer experimentieren möchte, muss sich derzeit mit dem offiziellen Release begnügen.FRITZ!OS 8.03 ist aktuell – aber ohne Labor-Firmware. Wer experimentieren möchte, muss sich derzeit mit dem offiziellen Release begnügen.
Matter ist bisher ein leeres Versprechen: In den Einstellungen der Fritzbox 5690 Pro fehlt Matter noch. Aktuelle Infos von AVM dazu sind rar.Matter ist bisher ein leeres Versprechen: In den Einstellungen der Fritzbox 5690 Pro fehlt Matter noch. Aktuelle Infos von AVM dazu sind rar.

Fazit nach den ersten Tagen

Die Fritzbox 5690 Pro läuft bei mir bisher stabil und zuverlässig. Der Umzug verlief erstaunlich einfach, die Konfiguration war schnell wieder einsatzbereit. Dass sich die Box für DSL und Glasfaser gleichermaßen eignet, macht sie besonders flexibel. Im Paket liegen zwei SFP-Module für AON- und GPON-Glasfaseranschlüsse. Die aktuellen Standards werden also unterstützt, doch wie immer: Nach dem Standard kommt der nächste Standard.

Wi-Fi 7 ist vorhanden, und neue Smartphones verbinden sich auch darüber. In der Praxis ist bei mir die Datenrate via WLAN allerdings gar nicht so viel höher, da ja oft durch Wände hindurch gefunkt werden muss. Da ist dann bei den hohen Frequenzen von Wi-Fi 7 schnell Schluss mit sehr hohem Datendurchsatz. Der integrierte Switch unterstützt immerhin Gigabit-Ethernet und über den kombinierten LAN-/WAN-Port einmal 2,5-Gigabit. Der USB-Anschluss arbeitet mit USB 3.1. Wer einfach nur eine externe USB-Festplatte ins Netz stellen möchte, ist damit vermutlich sogar happy.

Es gibt allerdings noch Baustellen: Die Unterstützung für Matter fehlt bislang, und experimentierfreudige Nutzer müssen auf Labor-Updates verzichten. Trotzdem bin ich unterm Strich zufrieden. Die 5690 Pro macht einen soliden Eindruck – auch wenn AVM bei Smart-Home-Standards gern etwas schneller vorankommen dürfte. Erst mit Matter wird die Box allerdings so richtig komplett. Dann lässt sich die Fritzbox auch wieder in Google Home einbinden. Etwas, das ich seit dem Ende von FRITZ! Smart Home in Alexa und Google Home wirklich vermisse.

von Christoph Langner am 17.05.2025 16:02


14.05.2025

Christoph Langner (Chrissss)

Webcam-Check unter GNOME 48: CamPeek macht’s einfach

Ich gehöre nicht zu den Leuten, die ihre Webcam dauerhaft abkleben. Aber bevor ich in eine Videokonferenz starte, werfe ich gerne kurz einen Blick darauf, was die Kamera eigentlich gerade so einfängt. Steht das Licht gut? Hängt hinter mir noch die Wäsche? Oder liegt da etwas auf dem Schreibtisch, das nicht unbedingt alle sehen müssen? Genau für solche Situationen ist die kleine GNOME-Erweiterung CamPeek gemacht. Sie erlaubt euch einen schnellen Kamera-Check direkt aus der oberen Leiste eures Desktops heraus, unkompliziert und ohne viel Drumherum.

Was ist CamPeek? Mac-User kennen Hand Mirror

CamPeek ist eine einfache Erweiterung für die GNOME-Shell, die sich unauffällig ins Panel eures GNOME-Desktops einfügt. Ein Klick auf das Icon genügt, und schon öffnet sich ein minimalistisches Vorschaufenster eurer Webcam. Ohne Rahmen, ohne Knöpfe, ohne Schnickschnack: Nur das Kamerabild in einem kleinen Fensterchen, immer im Vordergrund, solange ihr es braucht. Sobald ihr irgendwo anders auf euren Desktop klickt, verschwindet CamPeek wieder.

Die Erweiterung ist inspiriert von der macOS-App Hand Mirror, die ein ähnliches Problem löst: Wer vor einem Online-Meeting via Zoom, Teams oder den freien Alternativen Jitsi Meet und BigBlueButton checken möchte, ob alles passt, will nicht erst ein schwergewichtiges Tool wie Photo Booth öffnen – oder unter Linux eben Cheese. CamPeek macht genau das einfacher: ein schneller Blick aufs Bild, ganz ohne Umwege. Einen Haken gibt es jedoch: Die Erweiterung funktioniert nur mit dem aktuellen GNOME 48.

Warum nicht einfach GNOME Cheese?

Natürlich könntet ihr auch Cheese starten, um eure Webcam zu testen. Aber wie oft habt ihr Cheese wirklich griffbereit? Bei mir dauert es jedes Mal ein paar Sekunden, bis ich das Programm über die Suche gefunden und geöffnet habe. Das ist natürlich nicht weiter dramatisch, aber auf Dauer eben unnötig umständlich. Wenn man einfach nur einen Blick auf die Webcam werfen möchte, braucht es nicht ein extra Programm.

CamPeek ist in dieser Hinsicht deutlich effizienter: Ein Klick auf das Panel-Icon reicht, um sofort zu sehen, was sich gerade im Blickfeld der Webcam befindet. Keine Ladezeit, keine Menüführung, keine Aufnahmefunktion – einfach nur ein Livebild. Die Erweiterung ersetzt Cheese nicht, sondern bietet eine pragmatische Ergänzung für einen sehr konkreten Einsatzzweck.

Datenschutz und Ressourcenverbrauch

Ein Pluspunkt von CamPeek ist der Fokus auf Datenschutz: Die Erweiterung zeigt das Kamerabild direkt an, ohne etwas aufzuzeichnen oder zu speichern. Wer sich Gedanken um Privatsphäre macht, kann CamPeek daher mit gutem Gewissen nutzen. Das Videobild verlässt euren Rechner nicht. Eine Aufnahmefunktion in irgendeiner Art oder Form gibt es nicht.

Mit einem Klick öffnet CamPeek ein kompaktes Vorschaufenster eurer Webcam – ideal, um schnell zu prüfen, was im Bild zu sehen ist, bevor das Meeting startet.Mit einem Klick öffnet CamPeek ein kompaktes Vorschaufenster eurer Webcam – ideal, um schnell zu prüfen, was im Bild zu sehen ist, bevor das Meeting startet.

Auch beim Ressourcenverbrauch zeigt sich CamPeek genügsam. Keine aufwendige Oberfläche, keine Hintergrunddienste, keine externen Abhängigkeiten. Die Erweiterung integriert sich nahtlos in GNOME. Falls ihr einen Rechner mit mehreren Kameras nutzt, etwa eine interne und eine externe Webcam, lässt sich in den Einstellungen auswählen, welche verwendet werden soll. Klickt dazu mit der rechten Maustaste auf das CamPeek-Icon im Panel.

In den Einstellungen von CamPeek könnt ihr auswählen, welche Webcam verwendet werden soll. Wichtig bei Geräten mit mehreren Kameras, etwa einer integrierten und einer externen USB-Kamera.In den Einstellungen von CamPeek könnt ihr auswählen, welche Webcam verwendet werden soll. Wichtig bei Geräten mit mehreren Kameras, etwa einer integrierten und einer externen USB-Kamera.

Installation und Quellcode

Ihr findet CamPeek direkt auf der GNOME Extensions Website. Voraussetzung ist, dass ihr GNOME Shell nutzt und die Integration für Browser-Erweiterungen eingerichtet habt. Dann reicht ein Klick auf Installieren, und die Erweiterung ist aktiv. Den Quellcode gibt’s auf GitHub – wie bei freier Software üblich, offen zur Einsicht und Weiterentwicklung.

CamPeek ist ein schönes Beispiel dafür, wie kleine Werkzeuge den Alltag mit Linux verbessern können. Es ersetzt keine vollwertige Kamera-App, will das aber auch gar nicht. Stattdessen fokussiert sich die Erweiterung auf eine einzige Aufgabe – und erledigt diese schnell und elegant. Wenn ihr häufiger in Video-Meetings unterwegs seid, lohnt sich daher ein Blick auf CamPeek.

von Christoph Langner am 14.05.2025 06:15


12.05.2025

Joerg Kastning (Tronde)

Codeberg.org mit Forgejo Actions, Runner, Workflows und ich

In diesem Artikel halte ich fest, was es mit den genannten Begriffen auf sich hat und was ich in den vergangenen Tagen mit ihnen angestellt habe. Dabei gehe ich auch auf das Warum ein, während Fragen nach dem Wie vorwiegend in den Verweisen im Text beantwortet werden.

Der Artikel dient mir als Dokumentation und meinen Leser:innen zur Unterhaltung und zum Wissenstransfer.

Codeberg.org

Codeberg ist eine demokratische, gemeinschaftsgetriebene, gemeinnützige Softwareentwicklungsplattform, die von Codeberg e.V. betrieben wird und sich um Codeberg.org, eine auf Forgejo basierende Software, dreht. Der Sitz des Vereins ist in Berlin. Hier wird Codeberg.org auch gehosted.

Auf Codeberg könnt ihr eure eigenen Freie Software-Projekte entwickeln, zu anderen Projekten beitragen, inspirierende und nützliche Freie Software durchstöbern, euer Wissen teilen oder euren Projekten mit Codeberg Pages ein Zuhause im Web geben, um nur einige Beispiele zu nennen.

Die beiden vorstehenden Abschnitte wurden übersetzt mit DeepL.com (kostenlose Version) und anschließend leicht angepasst und mit Links angereichert.

Mit Codeberg.org werden keine kommerziellen Interessen verfolgt. Man ist hier (nur) Nutzer und/oder Unterstützer, jedoch nicht selbst ein Produkt. Mir gefällt die Mission des Projekts. Daher bin ich dazu übergegangen, einen Teil meiner Repositories hier zu verwalten. Zwar bin ich kein Mitglied des Vereins, unterstütze diesen jedoch durch gelegentliche Spenden.

Actions, Runner und Workflows

Plattformen wie Codeberg.org, GitHub und GitLab unterstützen Softwareentwicklungsprozesse durch CI/CD-Funktionalität.

Ein Forgejo-Runner ist ein Dienst, der Workflows von einer Forgejo-Instanz abruft, sie ausführt, mit den Protokollen zurücksendet und schließlich den Erfolg oder Misserfolg meldet.

Dabei ist ein Workflow in der Forgejo-Terminologie eine YAML-Datei im Verzeichnis .forgejo/workflows eines Repositories. Workflows umfassen einen oder mehrere Jobs, die wiederum aus einem oder mehreren Steps bestehen. Eine Action ist eine Funktion zur Erfüllung häufig benötigter Aufgaben, bspw. Quelltext auschecken, oder sich bei einer Container-Registry einloggen etc. Siehe für weitere Informationen Abschnitt Hierarchy ff. im Forgejo Actions user guide.

Motiviert, meinen eigenen Forgejo-Runner zu installieren, haben mich zwei Blog-Artikel von meinem Arbeitskollegen Jan Wildeboer:

  • Running a runner for codeberg/forgejo on RHEL9 as user
  • Be a Builder of Decentralisation – codeberg, forgejo, runners

Durch den Betrieb eigener Forgejo-Runner kann ich bereits vorhandene Rechenkapazität nutzen. Es fallen für mich und den Verein Codeberg e.V. dadurch keine zusätzlichen Kosten an. Für die Installation auf RHEL 9 bin ich dem Forgejo Runner installation guide gefolgt, da das in Jans Artikel erwähnte Repository ne0l/forgejo offensichtlich nicht mehr gepflegt wird und nur eine veraltete Version des Runner enthält.

Ein Dankeschön geht raus an Jan für unseren kurzen und produktiven Austausch dazu auf Mastodon.

Wozu das Ganze?

Ich beschäftige mich beruflich seit einiger Zeit mit dem RHEL image mode und möchte demnächst einen meiner KVM-Hypervisor damit betreiben. Bis es soweit ist, arbeite ich eine Weile im „Jugend forscht“-Modus und baue immer wieder neue Versionen meiner Container-Images. Der Ablauf ist dabei stets derselbe:

  1. Containerfile(5) erstellen bzw. anpassen
  2. Container-Image mit podman-build erstellen
  3. Das erstellte Image mit podman-push in eine Container-Registry hochladen
  4. Das Deployment auf diversen Zielsystemen testen

Dazu verwende ich das RHEL 9 Bootc Base Image aus der Registry registry.redhat.io.

The rhel-bootc and user-created containers based on rhel-bootc container image are subject to the Red Hat Enterprise Linux end user license agreement (EULA). You are not allowed to publicly redistribute these images.

Quelle: https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/using_image_mode_for_rhel_to_build_deploy_and_manage_operating_systems/introducing-image-mode-for-rhel_using-image-mode-for-rhel-to-build-deploy-and-manage-operating-systems#introducing-image-mode-for-rhel_using-image-mode-for-rhel-to-build-deploy-and-manage-operating-systems

Um vorstehender Anforderung gerecht zu werden, speichere ich das erzeugte Container-Image in einem privaten Repository auf Quay.io. Sowohl für registry.redhat.io als auch für quay.io ist ein Login erforderlich, bevor es losgehen kann.

Für mich bot sich hier die Gelegenheit, die Nutzung von Forgejo Workflows zu lernen und damit den Ablauf zur Erstellung meines RHEL Bootc Images zu automatisieren.

Forgejo Workflow und Runner-Konfiguration

Im folgenden Codeblock findet ihr meinen Forgejo Workflow aus der Datei .forgejo/workflows/build_image.yaml, gefolgt von einer Beschreibung der einzelnen Schritte. Zur Erklärung der Begriffe name, on, env, jobs, steps, run, etc. siehe Workflow reference guide.

name: build_image

on:
  push:
    branches: main

env:
  REPO_URL: https://codeberg.org/Tronde/rhel-bootc.git
  REPO_NAME: rhel-bootc
  IMAGE_NAME: quay.io/rhn-support-jkastnin/rhel-bootc:9.5

jobs:
  build:
    runs-on: podman
    steps:
      - run: dnf -y install git
      - run: echo ${{ secrets.RH_REGISTRY_TOKEN }} | podman login -u ${{ secrets.RH_REGISTRY_USERNAME }} --password-stdin registry.redhat.io

      - run: echo ${{ secrets.QUAY_ROBOT_TOKEN }} | podman login -u ${{ secrets.QUAY_USERNAME }} --password-stdin quay.io

      - run: git clone ${{ env.REPO_URL }}
      - run: podman build -f /workspace/Tronde/rhel-bootc/rhel-bootc/Containerfile -t ${{ env.IMAGE_NAME }}
      - run: podman push ${{ env.IMAGE_NAME }}
  1. Der Workflow wird jedes Mal ausgeführt, wenn ich einen Commit in den Branch main pushe
  2. Ich definiere einige Umgebungsvariablen, um bei Änderungen nicht alle Schritte im Workflow einzeln auf notwendige Änderungen prüfen zu müssen
  3. Mit `runs-on: podman` bestimme ich, dass der Workflow auf einem Runner mit dem Label podman ausgeführt wird; der entsprechende Runner started dann einen rootless Podman-Container, in dem die folgenden Schritte innerhalb von rootful Podman ausgeführt werden (nested Podman bzw. Podman in Podman)
  4. Git wird installiert
  5. Anmeldung an registry.redhat.io erfolgt
  6. Anmeldung an quay.io erfolgt
  7. Das Git-Repository wird geklont, um es auf dem Runner verfügbar zu haben
  8. Der Runner baut ein Container-Image (Erinnerung an mich selbst: Ersetze den hardcodierten Pfad durch eine Variable)
  9. Das erstellte Image wird in die Registry gepusht

Damit mein Runner den obigen Workflow ausführen kann, existiert auf diesem die Konfigurationsdatei /etc/forgejo-runner/config.yml, welche ich mit dem Kommando forgejo-runner generate-config > config.yml erstellt und anschließend angepasst habe. Der folgende Codeblock zeigt nur die Abschnitte, die ich manuell angepasst habe.

…
  fetch_interval: 20s
…
  labels: [
    "rhel-9-ubi:docker://registry.access.redhat.com/ubi9/ubi",
    "podman:docker://registry.access.redhat.com/ubi9/podman",
    "ubuntu-latest:docker://ghcr.io/catthehacker/ubuntu:act-latest",
    "act-runner:docker://node:20-bullseye",
    "centos-stream-9:docker://quay.io/centos/centos:stream9"]
…
  privileged: true
…

Ich greife mal die Zeile podman:docker://registry.access.redhat.com/ubi9/podman heraus:

  • podman: am Beginn der Zeile beinhaltet das Label, welches im Worflow mit runs-on verwendet wird
  • Mit dem Rest der Zeile wird bestimmt, in welchem Container-Image der Workflow ausgeführt wird
  • Ich habe mich für ubi9/podman entschieden, weil
    • ich bei Red Hat arbeite und daher
    • mit den Prozessen zur Erstellung unserer Images vertraut bin,
    • wodurch sich ein gewisses Vertrauen gebildet hat.
    • Ich vertraue unseren Images mehr, als jenen, die irgendein Unbekannter gebaut hat und deren Inhalt ich nicht kenne (man kann den Inhalt aber selbstverständlich überprüfen)
    • und ich so prüfen konnte, ob sich ein Image mit „unseren“ Werkzeugen bauen läst (nicht, dass ich daran gezweifelt hätte).

Die Angabe von privileged: true ist erforderlich, wenn man innerhalb des Containers ebenfalls mit podman oder docker arbeiten möchte.

Entscheidungen

Meinem weiter oben abgebildeten Workflow ist zu entnehmen, dass ich auf die Verwendung von Forgejo Actions verzichtet habe. Das hat folgende Gründe:

  • Für die Verwendung ist node auf dem Runner erforderlich
  • node ist im Image ubi9/podman standardmäßig nicht installiert
  • Node.js ist für mich das Tor zur Hölle und ich vermeide dessen Nutzung wenn möglich
  • Die Nutzung ist keine Voraussetzung, da ich mein Ziel auch so ohne Mehraufwand erreicht habe

Sobald die Workflows länger und komplexer werden, mag sich meine Einstellung zu Actions ändern.

Zusammenfassung

Ich habe gelernt:

  • Forgejo Runner zu installieren und zu konfigurieren
  • Wie Forgejo Workflows funktionieren und auf Codeberg.org genutzt werden können
  • Wie ich mir damit zukünftig die Arbeit in anderen Projekten erleichtern kann
  • Was für großartige Open Source Projekte Codeberg.org und Forgejo sind

von Jörg Kastning am 12.05.2025 05:00


08.05.2025

Joerg Kastning (Tronde)

Was uns antreibt zu bloggen

Vorwort

Die Blogs von Benedikt, Dirk und Robert feiern dieses Jahr Geburtstag. Zu diesem Anlass haben die Drei die #BlogWochen2025 ausgerufen. Jede Bloggerin und jeder Blogger ist eingeladen, dabei mitzumachen. Details könnt ihr in den Blogs der drei nachlesen:

  • Im Mai beginnen die BlogWochen – Nur ein Blog
  • Im Mai beginnen die Blogwochen – Dirks Logbuch
  • Hilfe, unsere Blogs wer­den alt! Feiern und mit­ma­chen bei den #BlogWochen2025! – benedikt.io

Zum Thema des heutigen Tages steuere ich gerne einen Beitrag bei.

Was mich zum Bloggen antreibt

Ich verfolge mit meinem Blog drei Ziele:

  • Dinge aufschreiben, die mir hilfreich waren bzw. die ich nützlich finde und die ich in Zukunft noch einmal gebrauchen kann – Mein Blog ist mein Gedächtnis für IT-Dinge
  • Mein Wissen mit der Welt teilen, damit andere davon profitieren können
  • Meine Meinung mit der Welt teilen, um mit anderen ins Gespräch zu kommen und andere Meinungen kennenzulernen

Da es im IT-Bereich bereits sehr viele gute Blogs in englischer Sprache gibt, habe ich mich zu Beginn entschieden, in Deutsch zu bloggen, um zur deutschsprachigen Gemeinschaft beizutragen. Meine Idee war und ist, damit denen zu helfen, für die Englisch gegebenenfalls noch eine Hürde darstellt. Diesen Grundsatz behalte ich bis auf ganz wenige Ausnahmen bis heute bei. Meine Artikel in englischer Sprache veröffentliche ich an anderer Stelle.

Ich freue mich, wenn ich Rückmeldungen erhalte, dass jemand meine Texte hilfreich und nützlich fand und meine Leser Gefallen daran finden. Besonders freue ich mich, wenn darunter Perlen aus der Vergangenheit sind. Dies zeigt mir, dass selbst Artikel von vor über 10 Jahren noch eine gewisse Relevanz besitzen.

Diese Rückmeldungen sind es, die mich motivieren, nach immer neuen Themen zu suchen und diese für den Blog zu verschriftlichen.

Zudem muss ich jedes Mal schmunzeln, wenn ich im Internet die Antwort auf eine Frage suche und diese dann in meinem eigenen Blog finde. So stellt mein Blog inzwischen für mich eine wertvolle Wissensdatenbank dar, auf die ich regelmäßig und gerne zurückgreife.

Wie ist das bei euch? Lest und stöbert ihr gerne in Blogs? Favorisiert ihr andere Formate? Bloggt ihr selbst? Ich freue mich über eure Kommentare oder Blogposts zu diesem Thema.

von Jörg Kastning am 08.05.2025 06:00


05.05.2025

Lars Moelleken (voku1987)

Code Hygiene Is Not Optional

Code Hygiene Is Not Optional

Intro – Why Untested Code Breaks Clean Systems

In hospitals, people rarely die from surgery itself.
They die from something far simpler: infection.
And in most cases, the infection starts with skipped hand hygiene.

Software systems are no different.

You build on top of rock-solid layers:

  • Linux — hardened through decades of collaboration

  • PHP — mature and predictable

  • Apache, Composer packages, CI pipelines, … — forged in production fire like the Rings of Power.

And still… your application breaks.

Not because the Webserver failed. Not because Linux kernel panicked.
But because your glue code silently can break everything it touchs.

This is not a post about tooling.
It’s about ritualized code hygiene.
It’s about testing as the minimum barrier to keep fragile logic from contaminating stable systems.


Chapter 1 – The Infection Starts With You

Your code is the infection vector.

Your infrastructure isn’t the problem:

  • Debian doesn’t “just break”

  • PHP doesn’t randomly reverse logic

  • Your dependencies aren’t the ones pushing broken PRs at 18:47 on a Friday

The problem is:

  • That null check you skipped

  • The brittle integration you “hoped” would hold

  • That silent catch block swallowing errors since sprint 4

This isn’t rare. This is normal.


Small Codebase, Large Failure Surface

Custom application logic often makes up just 1–5% of the total deployed codebase.
And yet, according to a 2017 report by Contrast Security, it causes up to 93% of vulnerabilities.

Why?

Because your code is:

  • The only part that changes weekly

  • The only part no one else reviews

  • The only part tested by two people under pressure

  • The only part that encodes assumptions instead of contracts

You are the one introducing uncertainty into a system that’s otherwise stable by design.

“Standing on the shoulders of giants means nothing if you’re bleeding on them.”


Chapter 2 – Testing Isn’t Optional

“No one praises a surgeon for washing their hands. But everyone remembers when they don’t.”

Testing is not about perfection.
It’s about not infecting the patient.

In software, your “patient” is production.
And every line of untested code has the ability to infect the system.


Testing Is Hygiene, Not Heroism

You don’t test because your code is dirty.
You test because it’s about to touch something critical.

Types of hygiene:

  • Unit tests: Isolate logic. Prevent regressions in small components.

  • Integration tests: Validate assumptions between systems.

  • End-to-end tests: Simulate the messy, unpredictable real world.

If you skip tests, you’re gambling that nothing goes wrong.
That’s not engineering — that’s negligence.


CI/CD is your sink

Manual discipline breaks down under pressure.
That’s why hospitals automate hygiene compliance. You should too.

CI must:

  • Run tests for every commit

  • Fail builds with broken assumptions

  • Enforce linting, style, and type checks

“If your CI lets bugs through, it’s no better than a sink with no soap.”


Chapter 3 – Trust Is Earned Through Testing

“You wouldn’t install a library with no tests —
So why are you shipping code like that yourself?”

In open source:

  • Tests earn trust

  • CI proves maturity

  • Examples guide usage

  • Bad hygiene is a red flag

That’s the standard.
And developers follow it — because it’s visible.


Internal Code Deserves the Same Discipline

The only difference between internal and open source code is accountability.
But users don’t care where the bug came from — they care that it happened.

If your internal module:

  • Has no tests …

  • Silently swallows errors …

  • Uses side effects instead of contracts …

  • Breaks when someone breathes on it …

… it wouldn’t survive 24 hours on GitHub.

So why is that tolerated in your own work?


Make Hygiene Observable

You can’t fix what you don’t measure:

  • Display test coverage

  • Badge your CI results

  • Show failure recovery times

  • Celebrate uptime from prevention, not just firefighting

“Don’t trust code because it’s yours. Trust it because it proves itself.”


Chapter 4 – Culture Eats Checklists for Breakfast

“Most bugs aren’t caused by bad engineers. They’re caused by broken culture.”

Everyone agrees testing matters.
Yet it’s the first thing dropped when deadlines hit or pressure rises.

That’s not a failure of knowledge.
It’s a failure of engineering culture.


Tiredness Is Predictable — Build Systems That Withstand It

Hospitals learned this the hard way:

  • In high-stress environments, handwashing compliance drops

  • Posters didn’t help

  • Systems and visibility did

Your team is no different.

Relying on personal willpower won’t scale.


Testing must be:

  • Enforced through CI

  • Expected in reviews

  • Measured and surfaced publicly (internal)

“Every untested PR that merges is a cultural decision — not just a technical one.”


Reward Boring Brilliance, Not 2AM Heroism

If the engineer who prevented the outage gets ignored,
but the one who patched it at 2:30AM gets praised —
you’re glorifying firefighting over engineering.

Change what you reward:

  • Tests that caught real bugs

  • Refactors that reduced surface area

  • CI improvements that shortened feedback loops

“You don’t notice best sysadmins.
You don’t notice best developers either — until they’re gone.”


Conclusion – Trusted Code Is Tested Code

“If you wouldn’t trust a surgeon without gloves,
why should anyone trust your untested code?”

You operate in a sterile, stable system:

  • Linux: hardened by thousands

  • PHP: versioned, predictable

  • Composer: peer-reviewed libraries

  • CI tools: ready to automate safety

And then your application breaks — because of you.
Not the system.
Not the tools.
Not the third-party code.

Your glue logic.
Your assumptions.
Your missing tests.


Testing is no tech debt. It’s not extra work. It’s not for “enterprise” teams only. Or whatever people say about it.

Testing is basic hygiene.
It’s how you earn trust — trust in your own application.


Call to Action

Today

  • Write a test for the thing you just merged.

  • Turn on CI checks for the project if it’s still running on “good intentions”.

This Week

  • Audit your riskiest integration logic.

  • Wrap it in tests. Track failure rates. Start small.

This Quarter

  • Make tests part of your definition of done.

  • Enforce quality gates in your CI.

  • Treat skipped tests like skipped security reviews — unacceptable.

“Good code is boring.
Safe code is essential.
Tested code is trusted.”

 

von voku am 05.05.2025 14:47


02.05.2025

Lars Moelleken (voku1987)

AI Writes Code. You Own the ‘Why.’

AI Writes Code. You Own the ‘Why.’

Mark Zuckerberg says AI will write most of Meta’s code in the next 12–18 months. If your first reaction is dread — congratulations, you’re a developer who already maintained code.

Because the problem isn’t writing code.

It’s understanding it. Maintaining it. Refactoring it two years later without breaking production on a Friday.

AI is getting scary-good at generating code. Not just autocompleting lines — we’re talking entire service layers, test suites, and infrastructure scripts. That feels like a superpower until you realize this superpower has no memory, no system knowledge, and no architectural intuition. Just vibes. “AI tools like GPT can help accelerate this process, but they are not the solution.” – The Wild West of Coding: Why We’re Still Burning Digital Cities – SUCKUP.de

We’re now past the point of discussing whether AI can write useful code. It can. The question is what happens after it does.

And here’s the brutal truth:

AI knows how to write code. It has no idea why the code exists.

It doesn’t know about that performance fix from 2021. It doesn’t understand your team’s domain language. It doesn’t realize that “active” isn’t just a string — it’s a business-critical contract baked into legal compliance.

If we don’t separate generation from intent, we’re going to drown in beautifully structured, semantically useless garbage.

This post presents a two-part strategy:

  1. Define a blueprint format that captures the what.

  2. Encode the why directly into your codebase.

The goal isn’t to stop AI from writing code — it’s to make sure it only writes code that deserves to exist.


Abstraction Got Us Here — But It’s Breaking

Every generation of developers inherits more power and more abstraction.
That power is only useful if we don’t forget how the system underneath works.

Let’s break it down:


🧱 Layer 0: Physical Switches & Punch Cards

Total control. No productivity. Every bit was your problem.

🧠 Layer 1: Assembly

Readable by machine and sad humans. Precision required. Errors fatal.

🔤 Layer 2: High-Level Languages (C, FORTRAN)

You write logic; the compiler handles machine details. This was the first big win: abstraction that didn’t cost traceability.

🧰 Layer 3: OOP and Dynamic Languages

Java, Python, PHP, C#. We got encapsulation, interfaces, and tooling. We also got frameworks, side effects, and runtime mysteries.

🔮 Layer 4: Frameworks, ORMs, DevTools

Laravel, Doctrine, Spring, React, ESLint. Magic happened. And so did performance bugs, leaky abstractions, and ten-minute stack traces.


Now?

🎲 Layer 5: LLMs (Large Language Models)

A stochastic machine trained to guess what code probably looks like based on tokens, not truth.

It’s autocomplete on steroids.
You say “Create a REST API for orders” — it gives you ten files and a Repository that “just works.”
Until it doesn’t.

Because here’s the core issue:

  • It doesn’t understand your domain.

  • It doesn’t know your technical debt.

  • It doesn’t track business rules.

  • It doesn’t care about your security policies.

And teams are merging this output like it’s a pull request from a trusted senior engineer.

Let me be clear:

LLMs are not teammates. They’re not compilers. They’re not even junior devs.

They’re trained to emit high-probability syntax. That’s it.

Yet we’re dropping their output straight into main, bypassing all the trust boundaries we spent decades learning to respect.

Remember the golden rule?

Don’t edit generated code.

We follow it for compilers, transpilers, ORMs, and IaC tools.
But when ChatGPT writes a controller? We treat it like gospel.

That’s technical debt in disguise. And it’s scaling faster than any abstraction layer before it.


The Strategy – Separate the ‘Why’ from the ‘How’

Here’s the fundamental mismatch:

LLMs generate the how. But only humans can define the why.

Yet we’re letting the “how” flow freely into production without anchoring it to the business context, architectural rationale, or historical landmines it depends on.

This isn’t a tooling problem. It’s a systems thinking failure.

To fix it, we need to separate generation from intent, and introduce a strict boundary between code that is guessed and code that is trusted.

Here’s the strategy:


🧱 Part 1: Define a Compiler-Compatible Blueprint Format (Own the Intent)

We don’t want AI writing raw PHP, Java, or Python.
We want it writing structured blueprints that describe behavior, constraints, and flow —
not implementation.

You then build a compiler that transforms these blueprints into safe, production-ready code using your stack, your rules, and your team’s architecture patterns.


✅ Blueprint Example (YAML – Compiler-Ready)

function: getActiveUserEmail
description: Return email of an active user or fail with domain-level exceptions

inputs:
  - name: userId
    type: Domain.UserId

output:
  type: Domain.EmailAddress

rules:
  - businessRule: Only active users can access the system
  - security:
      concern: InfoDisclosure
      severity: High
      mitigation: Throw domain-specific exceptions
  - maintainability:
      smell: MagicString
      notes: Replace 'active' string with enum

steps:
  - fetch:
      from: UserRepository
      method: findById
      input: userId
      output: user
  - guard:
      if: user == null
      then: throw DomainError.UserNotFound
  - guard:
      if: user.status != ACTIVE
      then: throw DomainError.UserInactive
  - return:
      value: user.email

⚙ Why This Works:

  • Compiler-friendly: Each step maps cleanly to deterministic code generation.

  • LLM-compatible: Easy for AI to generate and validate.

  • Auditable: You can version this. You can diff it. You can reason about it.

  • Stack-agnostic: One blueprint, many possible code outputs (Laravel, Symfony, NestJS, Spring).

  • Intent-driven: You encode what needs to happen — and enforce how through rules.

Your compiler becomes the enforcement layer:

  • It checks the blueprint against your domain model.

  • It injects architecture-specific behavior (validation, DI, error handling).

  • It produces safe, maintainable, consistent code.

Blueprints are your contract with the machine.
Your compiler is the gatekeeper.
LLMs are just assistants — they don’t write production code; they write proposals.


🧩 Part 2: Embed the ‘Why’ Directly Into Your Codebase (Own the Context)

You don’t just need structure in generated code —
You need context in your existing code.

That’s where metadata comes in: structured, machine-readable, developer-accessible annotations that tell humans and LLMs why a piece of logic exists.


✅ Example (PHP Attributes)

#[BusinessRule("Only active users may access features")]
#[Security(concern: "UnauthorizedAccess", severity: "Critical")]
#[Maintainability(smell: "MagicString", notes: "Replace 'active' with enum")]
public function getActiveUserEmail(UserId $userId): EmailAddress
{
    // ...
}

These attributes:

  • Can be enforced in CI with static analysis (PHPStan, Psalm, custom Rector rules)

  • Provide structure for documentation generation

  • Are readable by future devs and future AI tools

  • Make implicit decisions explicit

Is this over-engineering?
Or is it the minimum bar if you expect maintainable AI-integrated systems?

Let’s be honest: if we’re still coding the same way five years from now — merging raw AI output without structure, rules, or traceability — it won’t be because it works.
It’ll be because we never had the discipline to build something better.

 

von voku am 02.05.2025 10:55


16.04.2025

Sabine Becker (AtariFrosch)

Spaß mit React und Browser-Plugins

Vorab: Ich habe keine Ahnung von NextJS/React. Trotzdem kann man offenbar damit „Spaß“ haben, nämlich dann, wenn es auf Websites eingesetzt wird und dann mit einer bestimmten Art von Browser-Plugins zusammenstößt. Zunächst ahnte ich aber nichts davon, sondern hatte erstmal einfach ein Bedienungsproblem auf der Website der Stadtwerke Düsseldorf.

Die Vorgeschichte

Zuletzt im Februar 2024 konnte ich deren Portal uneingeschränkt benutzen. Da hatte ich meine Jahres-Abrechnungen für Strom und Gas heruntergeladen. Im November bekam ich eine E-Mail mit der Mitteilung, es läge ein Schreiben für mich vor mit einer Änderung beim Gaspreis. Als ich diese nach Login herunterladen wollte, landete ich statt in meinem Postfach für Rechnungen und Dokumente immer wieder auf der Eingangs-Seite des Kundenportals. Wenn ich auf eins der Auswahl-Menüs klickte, wurde was geladen, und dann stand ich – wieder auf derselben Seite. Ich kam damit weder an mein Postfach noch an andere Funktionen im Account, hätte also zum Beispiel auch keinen Zählerstand melden können.

Etwa zwei Wochen zuvor hatte ich eine E-Mail bekommen, die mir sagte, daß ich mich jetzt nicht mehr mit meiner Vertragskontonummer, sondern mit einer E-Mail-Adresse als Username einloggen sollte. Offensichtlich waren da also Dinge umgestellt worden. Das Kontaktformular konnte ich immerhin aufrufen. Darin teilte ich mit, daß ich die Website nicht mehr nutzen kann, zusammen mit der Info, welches Betriebssystem und welchen Browser ich nutze. Es kam eine Antwort, daß man das weiterleiten werde, aber geändert hatte sich nichts.

Anfang Dezember erinnerte ich daran, daß das immer noch nicht funktioniert. Erst nach einer guten Woche kam Antwort:

in unserem Kundenportal gibt es derzeit keine Störung. Bitte nutzen Sie den Browser Edge oder Chrome, stellen Sie sicher, dass sie den AdobeAcrobat Reader installiert haben und versuchen sie hier den Login erneut.

Edge, Chrome, Acrobat Reader? Wer kommt denn auf so schräge Ideen? Alle haben gefälligst Windows zu benutzen und darauf Browser, die mich dazu zwingen wollen, mich tracken und mit Werbung zukleistern zu lassen? Abgesehen davon daß moderne grafische Browser mittlerweile selbst PDF darstellen können, ohne dafür noch einen separaten PDF-Reader zu benötigen und weiterhin abgesehen davon, daß der Adobe Acrobat Reader schon lange nicht mehr der einzige existierende PDF-Reader ist: Nein. Einfach nein.

Am 30. Dezember, abends um halb neun, bekam ich eine neue Mail, daß etwas in meinem Postfach liegen würde, und zwar eine „Auszugsbestätigung“. Also ja, doch, ich würde schon gerne, aber wohne leider noch hier. Nun hatte ich doch etwas Panik, daß mir in den nächsten Tagen Strom und Gas abgestellt werden könnten, weil – ja was? Jemand meinen Account aufgemacht hat? Die Stadtwerke generell aufgemacht worden waren (war ja ein recht „günstiger“ Zeitpunkt, so kurz vorm Jahreswechsel)? Jemand an meine Daten kam und mir einen üblen Streich spielen will? Ich schrieb wiederum, jetzt schon ziemlich stinkig, eine Mail über das Kontaktformular.

Am nächsten Tag hatte ich eine automatische Eingangsbestätigung zurückbekommen. Das reichte mir nicht, weil ich ja befürchten mußte, über den Jahreswechsel hinweg keinen Strom mehr zu bekommen. Also rief ich lieber mal direkt an.

Und gleich mal ein Rant: Gibt es eigentlich noch irgendwelche größeren Firmen, Behörden oder Organisationen, die einen bei Anruf nicht von einem Automaten mit Werbung zutexten lassen, um dann vielleicht irgendwann mal ein mehr oder weniger sinnvolles Auswahlmenü zu präsentieren, und die nach der Auswahl die Leute nicht unter 15 Minuten in eine nervende Warteschleife mit Dudelmusik hängen, in der wiederum immer wieder Werbegeschwalle eingespielt wird? ​

Ich probierte es nochmal eine Stunde später. Diesmal kam ich direkt an eine Ansage, die mir erklärte, daß gerade alle Leitungen dicht seien, ich mich aber zurückrufen lassen könne. Es wurde auch gleich eine mögliche Uhrzeit genannt, 20 Minuten später. Ich bestätigte umgehend.

Der Anruf kam. Ja, die Person hat sich Mühe gegeben. Ergebnisse nach 17 Minuten Gespräch:

  1. Ja, die Website ist wirklich auf Chrome und Edge „optimiert“. Da könne sie jetzt erstmal gar nichts machen, werde es aber weitergeben.
  2. Die Namensänderung (die ich eigentlich auch online machen wollte) ist nur unter Vorlage des neuen Personalausweises bzw. einer Kopie davon möglich. Sie bieten dafür keinen Upload, sondern nur unverschlüsselte Mail an.
  3. Ein neuer Nachbar hatte sich angemeldet und dabei meinen Stromzähler genannt, deshalb wurde mir eine Auszugsbestätigung geschickt. Ist rückgängig gemacht.
  4. Ich möge bitte den Vermieter darüber informieren, daß er dem neuen Mieter eine falsche Zählernummer genannt hatte. Das heißt: Brief schreiben. Anders erreiche ich den nämlich nicht.
  5. Mein Gasanschluß ist nicht davon betroffen. Da hat er wohl einen anderen Zähler genannt – ich hoffe, diesmal den richtigen.
  6. Ich habe außerdem seit 2022 einen neuen Stromzähler mit einer neuen, viel längeren Nummer. Nummer notiert.

Schließlich meinte sie noch, es wäre ja jetzt sinnvoll, meinen Account erstmal zu löschen und alles wieder auf Papier zu machen. Das habe ich abgelehnt. Ich meine … in welchem Jahrhundert leben wir nochmal?

Anfang Januar kam noch eine Reaktion per E-Mail auf das Ticket. Ich dachte ja, das sei mit dem Telefonat geschlossen worden. Es wurde nochmal schriftlich bestätigt, daß jemand anderes meinen Zähler abgemeldet hat und der jetzt wieder auf mich läuft. Außerdem heißt es jetzt:

danke, dass Sie sich gemeldet haben. Wir bedauern es sehr, dass Sie sich nicht im Kundenportal einloggen können. Bitte versuchen Sie es noch einmal mit der E-Mail-Adresse als Benutzername und Ihrem Passwort.

Das habe ich aber nie behauptet. Ich konnte mich einloggen, aber dann nichts mehr machen.

Gegen Ende Januar kamen meine Jahresabrechnungen für 2024. Gleiches Problem: Ich konnte sie nicht abrufen. Nun wurde es kritisch, denn die Jahresabrechnung für Gas muß ich ja zeitnah beim ARGE einreichen. Wenige Tage zuvor hatte ich eine „IT-Beschwerde“ per E-Mail geschickt und da schon auf die Notwendigkeit hingewiesen, daß ich die Jahresabrechnungen brauche, sobald sie verfügbar sind. Denn das ARGE bekommt ja mit, wenn die ersten „Kunden“ ihre Jahresabrechnungen einreichen, und gehen davon aus, daß alle anderen zeitnah nachziehen.

Gut zwei Wochen später hakte ich nach, weil ich abgesehen von einer Ticket-Nummer keinerlei Reaktion bekommen hatte. Nun kam eine. Kernaussage: „Es besteht ein Navigationsproblem, wir bemühen uns um eine Lösung.“ Ach schau! – Außerdem wurde mir angeboten, mir die Jahresabrechnungen per Mail zu schicken. Unverschlüsselt (bzw. maximal Transportverschlüsselung, aber eben nicht Ende-zu-Ende). Dafür bräuchten sie meine explizite Einwilligung, wegen Datenschutz. – Nein, sondern weil Ihr nicht Ende-zu-Ende verschlüsseln könnt. Ich kann das. Seit 30 Jahren. In meiner Antwort bot ich mich außerdem für Tests an. Darauf wurde erstmal nicht eingegangen.

Stattdessen bekam ich die Abrechnungen per E-Mail. Eine Dauerlösung konnte das aber natürlich nicht sein.

Mein Firefox war mittlerweile von Version 132 auf Version 135 geklettert. Auf dem Portal keine Änderung.

Im März bekam ich eine neue E-Mail: Es läge eine Mahnung für mich bereit. Auf dem Portal, das ich nicht nutzen konnte. Ich checkte meine Kontoauszüge und stellte fest, daß zwar die Jahresabrechnung durchgelaufen war, aber seitdem keine Abschläge für Strom mehr abgebucht worden waren. Ich hatte gleich den Verdacht, daß das noch mit dem Abmelde-Gedöns durch den Nachbarn zu tun hatte, fragte aber erstmal nach, und ja, ich war da schon etwas angepißt: Ich riet dazu, besser die Buchhaltung „abzumahnen“, wenn das Geld nicht geholt wird, denn Lastschriftfreigabe hatten sie ja. Außerdem dachte ich in dieser Antwort „laut“ darüber nach, daß ich vielleicht den Anbieter wechseln sollte, wenn ich das Kundenportal nicht benutzen kann und da einfach nicht drauf eingegangen wird. Schließlich kündigte ich an, zum Verbraucherschutz zu gehen.

Die einzige Reaktion darauf war, daß sie den – offenbar vergessenen – Lastschrift-Auftrag wieder aktiviert haben. Die Website blieb für mich unbenutzbar. Man wolle aber die Fachabteilung nochmal kontaktieren.

Vor einer Woche bekam ich schon wieder eine dieser Mails, daß etwas für mich im Kundenportal liegt. Da ist mir der Kragen geplatzt und ich vereinbarte einen Termin bei der Verbraucherzentrale NRW. Praktischerweise ist deren neues Büro hier in derselben Straße, nur ein Stück weiter runter, in einem nagelneuen Gebäude. Dort berichtete ich erst mündlich über das Problem und wurde dann aufgefordert, das ganze doch nochmal aufzuschreiben und per Mail zu schicken, was ich umgehend gemacht habe.

Zur Vorbereitung des Termins hatte ich mein Notebook auf den aktuellen Stand gebracht und da auch mal noch LibreWolf mit installiert; Firefox war schon drauf gewesen. Und siehe da, in diesem LibreWolf konnte ich das Portal nutzen und die Dateien herunterladen. Im Firefox ging das auch da weiterhin nicht. Das berichtete ich auch bei der Verbraucherzentrale; gebraucht habe ich das Notebook dort dann doch nicht.

Die Lösung

Direkt am nächsten Tag, Freitag nach 15:30 Uhr (!), bekam ich einen Anruf von den Stadtwerken. Der Schubs von einer anderen Seite her hatte offenbar gewirkt. Und auf einmal wollte man mich, zwei Monate nach meinem entsprechenden Angebot, doch zum Testen haben. Und zwar in einer Videokonferenz mit – MS-Teams …

Ich protestierte und hatte als Alternative mein Jitsi Meet angeboten. Da ich damit aber zuletzt Probleme gehabt hatte und am Wochenende meine Konzentration zu platt war, um diese Probleme zu beheben, klickte ich mir schließlich auf Empfehlung aus Mastodon einen Account bei Senfcall und schlug das als akzeptables Konferenzsystem vor. Der Mensch, der mich angerufen hatte, vereinbarte mit mir einen Termin zum Testen, und nach etwas Herumgeklicke und einem Browser-Wechsel auf seiner Seite (es war MS-Edge …) funktionierte alles wunschgemäß. Den eigentlichen Termin, zu dem noch weitere Leute dazukommen sollten, hatten wir dann heute. Die weiteren Leute waren eine Kollegin von den Stadtwerken selbst und drei Menschen von zwei Firmen, die das Portal auf verschiedenen Ebenen technisch betreuen.

Das Ergebnis in kurz: Da stießen zwei Programme zusammen. Eins davon ist ein Browser-Plugin bei mir, welches Inhalte von Webseiten bei der Darstellung im Browser lokal nach bestimmten Vorgaben verändert. Das andere ist eine Software auf dem Server bzw. JavaScript dazu, das in den Browser übertragen, dort ausgeführt wird und Informationen an den Server zurück überträgt. Dabei stört sich der Server-Teil an den vorgenommenen Veränderungen und blockiert das Nachladen weiterer Funktionen.

Die Langform: Auf dem Server wird ein Programmier-Framework bzw. eine Library namens NextJS/React eingesetzt. Die Seite wird damit auf dem Server in HTML (mit eingebettetem JavaScript) erzeugt, dann zum Browser übertragen, und dort wird dann über JavaScripte nachgeprüft, ob das, was der Browser anzeigt, identisch ist mit dem, was ihm geschickt wurde.

Den Sinn des Ganzen konnten mir die Leute auch in mehreren Anläufen nicht erklären, denn die Verbindung ist Ende-zu-Ende verschlüsselt (https), somit können die Daten auf dem Weg vom Server zum Browser nicht heimlich verändert werden. Was danach damit im Browser passiert, hat den Server eigentlich nicht zu interessieren. Meine ich zumindest. Sie meinten, einer möglichen Veränderung auf dem Laufweg solle damit auch gar nicht begegnet werden; eine wirkliche Begründung für diese Überprüfung habe ich aber auch nicht bekommen. Eher so … wir nutzen jetzt halt mal dieses Stück Software, und da ist das einfach so.

Nun kommt das zweite Stück Software ins Spiel: Ich habe in Firefox wie auch in LibreWolf – neben anderen Plugins – das Plugin Binnen-I-Be-Gone installiert. Das macht aus Konstruktionen wie „Politiker*innen“ oder „PolitikerInnen“ wieder für mich lesbare Wörter. Denn ich „stolpere“ sonst so dermaßen, daß ich einen Text, der so gegendert wurde, nicht mehr sinnwahrend lesen kann. Ich hörte bereits von einigen anderen Autisty, daß ihnen das Problem ebenfalls geläufig ist (das trifft nicht auf alle zu, aber Autismus ist halt ein Spektrum).

Das heißt, dieses Plugin verändert den HTML-Bereich da, wo auf diese Weise gegendert wird. Somit stimmen die Version im Browser und die, die vom Server kam, eben nicht mehr genau überein. Der Server bekommt diese Information per JavaScript zurückgeliefert und stoppt daraufhin das Nachladen weiterer Funktionen. Ergebnis: Man bleibt im Kunden-Dashboard hängen. Sobald Binnen-I-Be-Gone deaktiviert und die Seite neu geladen wird, werden alle Funktionen nachgeladen und können erwartungsgemäß genutzt werden.

Wir waren vorher andere Plugins durchgegangen – uBlock Origin und Consent-O-Matic –, ohne eine Veränderung feststellen zu können. Auf Binnen-I-Be-Gone wäre ich nie gekommen, weil die Veränderung des Seiteninhalts eben nur lokal im Browser stattfindet.

Erst während der Konferenz erfuhr ich, daß ich mit dem Problem wohl doch nicht so ganz alleine war, wie das mir gegenüber zunächst behauptet worden war. Es gibt noch mindestens einen weiteren Fall. Ob es dort auch an diesem Plugin liegt, wollen sie jetzt als nächstes überprüfen.

Ich habe in Binnen-I-Be-Gone die Website der Stadtwerke Düsseldorf als Ausnahme eingetragen, auf der es nicht aktiv werden soll. Wenn das Problem mit diesem Portal oder anderen, die NextJS/React verwenden, auftaucht, müßten alle Plugins deaktiviert werden, die den Seiteninhalt lokal verändern.

Auf der Website zu NextJS fand ich im Nachhinein noch diese Seite: Text content does not match server-rendered HTML. Darin heißt es: „React converts the pre-rendered HTML from the server into a fully interactive application by attaching event handlers.“ Und sie gehen auf diverse Situationen ein, in denen das eventuell nicht funktioniert. Das Vorhandensein eines Plugins im Browser, das den Seiteninhalt – und zwar nur den HTML-Teil! – lokal verändert, ist nicht genannt. Ich unterstelle mal, daß Binnen-I-Be-Gone sich nicht an anderen Komponenten einer Seite vergreift. Auch Links werden meiner Erfahrung nach nicht verändert.

Da sollte ich dann wohl mal noch die Leute von NextJS informieren, daß sie da ein weiteres Problem haben.

Wenigstens kann ich das Portal der Stadtwerke jetzt wieder nutzen.

[Update 2025-04-16 17:55 Uhr] Ich hab dann mal ein Issue bei NextJS aufgemacht. [/Update]

von Atari-Frosch am 16.04.2025 15:21


13.04.2025

Sabine Becker (AtariFrosch)

Spaß mit Jitsi Meet

Schon im Dezember letzten Jahres stellte ich fest, daß mein Jitsi Meet eine Macke entwickelt hatte. Ich konnte Konferenzen öffnen (die Funktion ist paßwortgeschützt), aber sobald sich ein weiterer Client verband, flogen wir beide vom Server. Die Fehlermeldung erschöpfte sich auf „Unfortunately, something went wrong …“, was jetzt nicht wirklich hilfreich ist. Für die geplante Konferenz mußten wir daher auf Google Meet ausweichen, wo für eine Gruppe, der wir beide angehören, eine Konferenz offengehalten wird. Das möchte ich aber natürlich vermeiden.

Nun hatte ich im Nachhinein erst noch einen eigenen Fehler vermutet. Ich hatte der anderen Person den Namen der Konferenz nämlich durchgehend in Kleinbuchstaben übermittelt, aber tatsächlich auch Großbuchstaben gesetzt gehabt. Nun stelle ich fest: Das war's nicht. Bei einem erneuten Test gestern flogen die Testpartnerin und ich wieder beide raus, sobald sie die Seite mit der Konferenz aufrief. Da ich das Jitsi am Mittwoch einsatzbereit brauche, ging ich auf Fehlersuche.

Dabei fiel mir erstmal auf, daß eine relevante Komponente gar nicht lief: Die Videobridge. Na gut, dann konnte das nicht gehen. Ich startete sie neu, aber es änderte nichts am Problem: Zweiter Client, beide fliegen raus.

Also ging es für mich heute in die Logfiles. Nun ist Jitsi Meet nicht ein Programm, sondern ein Konglomerat aus mindestens drei Komponenten auf dem Server: jicofo, jitsi-videobridge2 und der XMPP-Server prosody. Dazu kann man noch als Turnserver den coturn mitnehmen; der war bei mir aber zuletzt (bewußt) abgeschaltet. Und der darunterliegende Webserver schreibt natürlich auch Logs.

Es gibt also:

  • /var/log/jitsi/jicofo.log
  • /var/log/jitsi/jvb.log
  • /var/log/nginx/access.log
  • /var/log/nginx/error.log
  • /var/log/prosody/prosody.err
  • /var/log/prosody/prosody.log
  • /var/tmp/turn_12096_2025-04-13.log

Wobei ich die Position des letzteren etwas eigenartig finde. Im selben Verzeichnis findet sich auch das PID-File des Turnservers, das ja eigentlich auch woanders hingehört.

Nach einiger Suche im Netz fand ich diesen Eintrag: "Unfortunately something went wrong" when second user joins [SOLVED?] auf GitHub. Da tauchen die gleichen Logfile-Einträge im jvb.log auf wie bei mir. Ich verstehe insbesondere die Antworten so, daß beim Major Upgrade zur Version 2 wohl hier und da was schiefgelaufen ist. Tatsächlich lief hier noch eine Einser-Version, obwohl ich seit dem ersten Auftreten des Fehlers einige Updates gesehen hatte.

Ich sicherte mir also die Konfigurationsdateien aus /etc/jitsi sowie /etc/prosody und zog die genannten Anweisungen durch. Dann paßte ich die Konfigurationsdateien, die sich doch um einiges geändert haben, nach bestem Wissen an, ließ die Jitsi-Komponenten plus prosody neu starten und wollte das dann auch mit dem nginx tun. Nö, geht nicht, sagte der mir.

Bei der Neuinstallation wurde – zumindest laut Bildschirmanzeige – ein neues Let's-Encrypt-Zertifikat angefordert. Nun hat die Site bereits ein Zertifikat von Let's Encrypt und bräuchte kein neues. Diese Situation ist im Jitsi-Installer jedoch offenbar nicht vorgesehen. Nun fand ich in den Webserver-Logs keinen Eintrag zu dem mißglückten Neustart, was ich an sich schon seltsam finde. Aber auch sonst fand sich in keinem Log ein Hinweis dazu, was nginx hier nicht paßte.

Ich versuchte erstmal ohne den Webserver-Neustart. Das war allerdings gegenüber dem ursprünglichen Problem ein Rückschritt: Ich kam auf die Site, aber ich konnte nun nicht einmal mehr eine Konferenz öffnen. Eine Fehlermeldung erschien extrem kurz links unten und verschwand wieder, so schnell, daß ich sie nicht ablesen konnte. Nein, auch das ist nicht hilfreich.

Das Fediverse half, zumindest beim Webserver: Was sagt "nginx -t"? Das hier kam raus:

~ # nginx -t
2025/04/13 17:31:50 [emerg] 10323#10323: "server_names_hash_bucket_size" directive is duplicate in /etc/nginx/sites-enabled/meet.atari-frosch.de.conf:1
nginx: configuration file /etc/nginx/nginx.conf test failed

Schon besser. In /etc/nginx/sites-available fand ich eine neue Datei, die auf die Jitsi-Site zeigt, aber nicht meinem Namensschema für Site-Konfigurationen entsprach. Da jetzt beide Dateien auf dieselbe Site zeigten, gab es jetzt natürlich eine Menge doppelter Anweisungen, und bereits bei der ersten fiel nginx auf die Nase. Ich habe also meine alte Datei aus dem Jahr 2020 sicherheitshalber umbenannt, die neue Datei entsprechend meinem Namensschema umbenannt und aus /etc/nginx/sites-enabled den dazugehörigen neuen Link gelöscht. Und dann ließ sich nginx auch neustarten.

Leider kam ich damit immer noch nicht weiter. Aber die beiden Jitsi-Logs füllen sich seitdem in affenartiger Geschwindigkeit mit Meldungen. Die relevante Aussage: Da ist ein völlig veraltetes Zertifikat im Einsatz. Nur: welches?

SSLHandshakeException: PKIX path validation failed: java.security.cert.Cert

Das Let's-Encrypt-Zertifikat für die Site, das Zertifikat für Jitsi, das für Prosody oder sogar ein ganz anderes, das mit Java zu tun hat? Das verraten mir die Logs nicht. Tatsächlich sind alle internen Certs heute bei der Neuinstallation neu erzeugt worden. Das LE-Zertifikat für die Site wiederum wurde vor ein paar Tagen automatisch erneuert.

Das sieht nach Yak-Shaving aus …

Da die Logfiles jvb.log und jicofo.log in unverminderter Geschwindigkeit weiter wuchsen und eines davon schon im dreistelligen Megabyte-Bereich angekommen war, habe ich erstmal beide Dienste deaktiviert. Das belastet sonst nur unnötig den Server und das RAID1 darauf. Dann machte ich mich nochmal auf die Suche nach den Zertifikaten.

In /etc/prosody/certs wurde ich dann fündig. Dort gibt es nämlich unter anderem diese beiden Dateien:

| fullchain4.pem            │   3444│Feb 20  2021
│ privkey4.pem              │   1704│Feb 20  2021

Auf diese beiden wird in der Konfiguration aber nicht verwiesen. Trotzdem paßt das Dateidatum zu der Fehlermeldung aus den Jitsi-Logs; da heißt es, das Zertifikat sei im September 2021 abgelaufen. Um die Verwirrung noch zu vergrößern, zeigt die Konfiguration von prosody nur auf die neu angelegten Zertifikatsdateien (.key und .crt), jedoch nicht auf diese beiden .pem-Dateien.

Zunächst fand ich das hier: Certificates. Also schauen wir mal:

~ # prosodyctl check certs
Checking certificates...
[…]
certmanager         info        No certificate present in SSL/TLS configuration for jigasi.meet.jitsi. SNI will be required.
[…]

Außerdem werden alle von Jitsi angelegten internen Subdomains aufgeführt. Für diese gibt es jeweils angeblich keinerlei Zertifikate.

Oh. Also, nächster Schritt: Einstellungen für dieses SNI suchen. Ich meine zwar, das Kürzel irgendwo gesehen zu haben, aber finde es nicht wieder …

Dann vielleicht erstmal neue Zertifikate bauen. Es gibt die Möglichkeit, das mit Let's Encrypt zu machen, das hier ja schon in Form des certbot läuft:

certbot renew --deploy-hook "prosodyctl --root cert import /etc/letsencrypt/live"

Das Ergebnis ist … unerwartet. Es wurden zwei neue Zertifikatsdateien in /etc/prosody/certs angelegt, allerdings lauten die auf den Namen einer anderen Site auf meinem Server. Zum Glück funktioniert diese andere Site weiterhin, aber ich weiß nicht, ob das so bleibt, wenn das ältere, eigentliche Zertifikat abläuft. Der Bot hat sich ja gemerkt, daß er dieses heute erneuert hat. Es ist nur nicht da gelandet, wo es hingehört.

Break; der Kopf macht nicht mehr mit. Da muß ich wohl morgen weitermachen.

[Update 2025-04-14 16:00 Uhr] Die Konzentration machte nicht mit. Aber so gar nicht. Aber! Es gibt ja auch noch den Senfcall. Ich hatte davon schon öfter gelesen, aber nie mehr als den Begriff. Das ist genau das, was ich brauche. Also hab ich mir einen Account gemacht und denke jetzt darüber nach, das mit dem eigenen Jitsi erstmal bleibenzulassen. [/Update]

von Atari-Frosch am 13.04.2025 18:01


16.02.2025

Christian Imhorst (immi)

Minecraft auf dem Raspberry Pi 5 installieren

Minecraft auf dem Raspberry Pi 5 zu installieren war etwas tricky, aber dafür läuft es erstaunlich gut. Der Raspberry Pi ist das Modell mit 8GB RAM und natürlich mit einem Lüfter versehen. Statt von einer SD-Karte startet das aktuelle Raspberry Pi OS (64-bit) dabei von einer SSD. Die SSD habe ich mit einem USB3 zu SATA-Adapter an den Raspi 5 angeschlossen und dann mit „SD Card Copier“ den Inhalt der SD-Karte auf die SSD übertragen. Den Pi heruntergefahren, SD-Karte entfernt und anschließend ist er von der SSD neu gestartet. Das ist für mich erstmal ausreichend, weil beides schon vorhanden war, wobei es direkt mit einem NVMe Shield und Festplatte vermutlich noch besser läuft.

Für Minecraft habe ich dann die Pi-Apps installiert:

wget https://raw.githubusercontent.com/Botspot/pi-apps/master/install
less install # Skript überprüfen
bash ./install # Installation starten

Außerdem wird noch eine aktuelle Java-Version benötigt, die aber leider nicht in der Paketverwaltung von Raspberry Pi OS vorhanden ist und manuell installiert werden muss. Aktuell ist OpenJDK 23, benötigt wird der Build Linux/AArch64. Wenn OpenJDK 24 aktuell ist, würde ich die Version herunterladen, bei 25 dann die und so weiter.

Das heruntergeladene Archiv habe ich in das Verzeichnis /opt entpackt:

sudo tar -xzf openjdk-23.0.2_linux-aarch64_bin.tar.gz -C /opt/

Und dann die Java-Version zur aktuellen Version auf dem Pi gemacht (hier ist der gesamte Befehl wichtig, inklusive der 1 am Ende):

sudo update-alternatives --install /usr/bin/java java /opt/jdk-23.0.2/bin/java 1
sudo update-alternatives --config java

Mit einem java --version kann man dann die aktuelle Java-Version prüfen, die in diesem Fall 23.0.2 sein sollte.

Bevor wir Minecraft starten können, muss noch der Launcher installiert werden. Dazu startet man die Pi-Apps vom Desktop und wählt in der Kategorie „Games“ den Launcher. Hier habe ich den Prism Launcher genommen, weil Open Source und weil er im Gegensatz zum „GDL Launcher“ funktioniert hat. Beim „GDL Launcher hatte ich diese Fehlermeldung:

LinkageError aufgetreten javalang. UnsupportedClassVersi onError: net/minecraft/client/main/Main has been compiled by a more recent version of the Java Runtime (class file version 65.0), this version of the Java Runtime only recognizes class file versions up to 61.0

Angeblich passen die Java-Versionen nicht zusammen. Da Prism funktioniert, habe ich GDL wieder deinstalliert und mich mit dem Problem nicht weiter beschäftigt.

Nach dem Start des Launchers muss man noch seine „Microsoft Login“-Daten eingeben. Besitzt man Minecraft bereits kann man sich einfach anmelden. Wenn nicht, muss man es kaufen, da es sich um ein kostenpflichtiges Spiel handelt. Nachdem du dich angemeldet hast, klickst du auf das Pluszeichen links unten und wählst die neueste Version von Minecraft (in meinem Fall war es 1.21.4). Der Launcher beginnt jetzt mit der Installation der Spieldateien, was eine Weile dauern kann. Wenn das erledigt ist, klickst du auf den Start-Button, um das Spiel zu starten.

Happy Minecrafting! :)

von Christian Imhorst am 16.02.2025 12:48


14.02.2025

Jörg Kruse (4A4B)

DNS-Records für Domain ohne E-Mail-Empfang und -Versand

Nicht selten werden Domains nur als Web-Domain füs die eigenen Webseiten verwendet, jedoch nicht als E-Mail-Domain. Im Impressum wird dann beispielsweise die E-Mail-Adresse einer anderen Domain angegeben. Im Zonefile der Domain gibt es entsprechend keinen MX Record, welcher auf einen Server verweist, der Mails entgegennimmt. Allerdings probieren viele sendende Mailserver dann ersatzweise den Versand an den Server, welcher im A- bzw. im AAAA-Record aufgeführt ist.

Mit einem „Null MX Record“ im Zonefile kann klar zum Ausdruck gebracht werden, dass es keinen empfangenden Mailserver gibt, so dass solche überflüssigen Versuche an anderer Stelle künftig ausbleiben:

@		IN	MX	0 .

Wenn unter der betreffenden Domain keine Mails versendet werden, dann kann mit Einträgen im Zonefile auch das Absender-Spoofing durch Dritte effektiver unterbunden werden, sofern die folgenden Records von empfangenden Mailservern berücksichtigt werden. Mit einem SPF-Reford werden global alle Hosts als Sender ausgeschlossen:

@		IN	TXT	"v=spf1 -all"

Zusätzlich kann eine DMARC-Policy „reject“ klarstellen, dass Mails entsprechend dem SPF-Record und mangels DKIM-Record unbedingt zurückzuweisen sind.

_dmarc		IN	TXT	"v=DMARC1; p=reject"

von Jörg Kruse am 14.02.2025 14:20


05.02.2025

Malte Schmidt (maltris)

webh.pl VPS Review

Vergangene Woche wurde ich auf webh.pl aufmerksam, einen Internet Service Provider mit Standort Lodz, Polen. Nach kurzer Anfrage erhielt ich die Möglichkeit, eins ihrer VPS-Pakete für über eine Woche unter die Lupe zu nehmen. Generell bin ich hin und wieder auf der Suche nach kleinen, effizienten, zumeist virtuellen Systemen, auf denen unter anderem diese Webseite gespeichert und ausgeliefert werden kann. Bislang fuhr ich mit servercow.de, einem Dienst vom mailcow-Entwickler André Peters, sehr gut. Und auch weiterhin bin ich von seinem Service begeistert und werde ihm keineswegs den Rücken kehren. Dennoch schadet es sicher nicht, einmal einen Ausflug zu anderen Anbietern zu wagen und deren Benutzerfreundlichkeit und Leistungen in ein Verhältnis zu setzen.

Im weiteren Verlauf dieses Artikels werde ich die einzelnen Komponenten ausgiebig testen und versuchen, die Ergebnisse relativ mit früheren Tests vergleichen.

Sollte euch der Test gefallen haben und solltet ihr euch für webh.pl entscheiden, würde ich mich freuen, wenn ihr meinen Referral-Link oder -Code bei der Registration/Bezahlung verwenden würdet. Vorteil für euch: 20% Rabatt auf die erste Bezahlung:

Für den Referral-Link hier klicken oder den Promo-Code “PROMO46344” verwenden.

Intro

Bei dem Test-VPS handelt es sich um das Paket “KVM Standard” mit folgenden Leistungsmerkmalen:

  • 4 vCPUs
  • 8GB RAM
  • 80GB SSD Speicher (500GB/1000GB HDD Speicher für 40/80 Zloty zubuchbar)
  • keine Limitierung für Datentransfers

Der Preis liegt in dieser Ausstattung bei 90 Zloty pro Monat, derzeit sind das 19,64 Euro. Ist man mit 2 vCPUs zufrieden, drückte das den Monatspreis auf 60 Zloty pro Monat, etwa 13,09 Euro.

Zusätzliche Daten

  • Standort Polen (Lodz)
  • SLA von 99,9%
  • Root-Zugriff
  • Jederzeit Zugriff via VNC
  • Installation von individuellen ISO-Dateien
  • Skalierbarkeit (die Grundpakete können später im Webinterface beliebig skaliert werden)
  • Automatische, stündliche Snapshots
  • Snapshots werden 14 Tage rückwirkend aufbewahrt
  • Snapshots können vom vmmanager aus wiederhergestellt werden
  • Der Kunde erhält einen zusätzlichen virtuellen Server für die Wiederherstellung von Daten aus Snapshots
  • Snapshots haben keinen Einfluss auf die Performance des Servers
  • Angegebene Ressourcen werden garantiert
  • Keine Einschränkungen für Gameserver oder andere netzwerkintensive Anwendungen, keine Blockade von Torrents

Bezahlmöglichkeiten

  • EU-Banküberweisung
  • PAYU (VISA und MasterCard)
  • PayPal

Die Webinterfaces

Registration und Billing

Die Registration erfolgte unter https://ssl.webh.pro/ und war äußerst schnell und unkompliziert erledigt.

Das “ISPsystem billmanager“-basierte Interface ist übersichtlich, wirkt jedoch etwas altbacken. jedoch bietet es in übersichtlicher Form alle notwendigen Einstellungen und Übersichten. Einen sehr positiven Eindruck erhalte ich von der Geschwindigkeit des Interfaces.

VPS-Management

Die Steuerung des VPS ansich erfolgt im “ISPsystem vmmanager”-basierten Webinterface. Dieses passt designtechnisch zum Billing-Interface, dient jedoch explizit der Verwaltung von VPS.

Mein Test-VPS wurde bei Erstellung sofort mit CentOS 7 eingerichtet. Eine Neuinstallation ist über das Interface leicht zu erreichen, dabei konnte ich zwischen folgenden Presets wählen:

  • CentOS 7
  • CentOS 8
  • Debian 8
  • Debian 9
  • Debian 10
  • FreeBSD 11
  • FreeBSD 12
  • Ubuntu 16.04
  • Ubuntu 18.04

Diese wiederum bieten unterschiedliche “Recipes”, also “Rezepte”, mit denen ich automatisiert bestimmte Anwendungen vorinstallieren lassen kann:

  • Bitrix CRM
  • Django
  • ISPmanager Lite
  • LAMP
  • OpenVPN
  • Redmine
  • Teamspeak
  • Tomcat
  • VMmanager

Hier merke ich: Es wird sich Mühe gegeben, indem man aktuelle Betriebssysteme fertig zur Installation anbietet und dem Kunden so Zeit und Aufwand spart.

Zum Test entschied ich mich für ein aktuelles Ubuntu 18.04 “bionic”, da ich mir hiermit neben einem aktuellen Kernel auch aktuelle Versionen der Tools für Netzwerk- und Performancetests erhoffte. Leider stellte sich später heraus, dass diese Entscheidung einen teil meiner Netzwerk-Performancetests stören würde.

Bequeme Zusatzfunktion: Ich kann im vmmanager direkt meinen SSH-Pubkey angeben, sodass dieser direkt hinterlegt wird und ich mir somit einen lästigen Passwort-Login spare. Leider führt im Fall Ubuntu 18.04 diese Funktion dazu, dass eine Reinstallation sich aufzuhängen scheint – hier besteht noch Verbesserungsbedarf.

Nützlich: webh.pl erlaubt es dank entsprechender Virtualisierungstechnologie, Systeme mit individuellen vom Kunden hochladbaren ISO-Dateien zu installieren. Wollte ich also Fedora installieren, welches webh.pl nicht als fertiges Image anbietet, könnte ich dies über diese Funktion recht einfach tun. Mit entsprechender Konfiguration (Festplattentreiber, Netzwerktreiber) ließ sich im Test sogar ein uraltes Windows XP Pro SP3 installieren:

Um von den nützlichen Logging-Funktionen, auch dem Performance-Logging, beider Interfaces gebrauch zu machen, empfiehlt es sich, die Zeitzone im Interface korrekt zu konfigurieren. Diese stand per default auf “Afrika/Windhoek”, was einen Zeitversatz bedeutet und unter Umständen für Verwirrung sorgen könnte.

Allgemeines

Reinstallationen

Ubuntu 18.0453 Minuten (mit SSH-Key, abgebrochen)
Ubuntu 18.0434 Minuten (mit SSH-Key, abgebrochen)
Ubuntu 18.046 Minuten (ohne SSH-Key)
Ubuntu 16.045 Minuten
CentOS 75 Minuten
CentOS 85 Minuten
FreeBSD 1212 Minuten
FreeBSD 1115 Minuten
Debian 105 Minuten
Debian 94 Minuten
Debian 85 Minuten
Tabelle: Dauer von Reinstallationen unterschiedlicher Betriebssysteme

Die Reinstallationen funktionieren zuverlässig, sauber und schnell. Wird jedoch über das Webinterface ein SSH-Pubkey eingegeben, so hängt sich das System bei der Installation auf und reagiert nicht mehr. Startet man es dann manuell neu, wird man automatisch in die GRUB2-Kommandozeile eingeloggt, da GRUB nicht vollständig konfiguriert wurde.
Eine Reinstallation ohne vorher eingegebenem SSH-Key funktioniert fehlerfrei.

Nach der erfolgten Installation kann ich nun also meinen SSH-Key unter Zuhilfenahme des Passworts auf die Maschine kopieren und mit der Einrichtung meines Servers fortfahren:

ssh-copy-id root@91.205.75.239
ssh root@91.205.75.239

IP-Adressen

Eine Recherche der mir zugewiesenen IPv4 ergab, dass die IP bereits von anderen vorherigen Kunden genutzt wurde. Ein Blacklist-Check lieferte jedoch ein sauberes Ergebnis. Eine entsprechende Bereinigung und Cooldown-Periode wird von entsprechend guten Internet Service Providern nach Kündigung vorgenommen.

Support

webh.pl bietet Support unter anderem in ihrer Muttersprache Polnisch, aber auch in Englisch und Deutsch an. 4 mal habe ich den Support unvermittelt kontaktiert und die Reaktionszeit aufgezeichnet.

Die Antworten kamen zügig und man kann in diesem Preissegment und ohne zugesicherte Support-Antwortzeiten wirklich nichts bemängeln:

27.03.2020 20:32 -> 20:342 Minuten
28.03.2020 07:54 -> 09:15159 Minuten
29.03.2020 20:41 -> 20:454 Minuten
02.04.2020 08:58 -> 09:3335 Minuten
webh.pl Support-Reaktionszeiten

Hostsystem und Virtualisierungslösung

Laut dmidecode kommt ein Red Hat Enterprise Linux 7 auf dem Hostsystem zum Einsatz. Zugewiesen sind der VM wie bereits erwähnt 4 vCPU-Kerne mit Taktraten von je 2793 MHz.

/proc/cpuinfo verrät in diesem Fall nicht den konkreten Typ der CPU, jedoch lässt sich erahnen, um welchen es sich handelt (Skylake Model 85, 4 MiB L2 Cache, 2793 MHz, Stepping 4):

4112 Xeon Silver $ 473.00 11 July 2017 4 8 2.6 GHz 3 GHz 85 W 4 MiB 8.25 MiB DDR4-2400 768 GiB

CPU-Vulnerability Mitigations

root@m:~# tail /sys/devices/system/cpu/vulnerabilities/*
==> /sys/devices/system/cpu/vulnerabilities/itlb_multihit <==
KVM: Vulnerable

==> /sys/devices/system/cpu/vulnerabilities/l1tf <==
Mitigation: PTE Inversion

==> /sys/devices/system/cpu/vulnerabilities/mds <==
Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown

==> /sys/devices/system/cpu/vulnerabilities/meltdown <==
Mitigation: PTI

==> /sys/devices/system/cpu/vulnerabilities/spec_store_bypass <==
Vulnerable

==> /sys/devices/system/cpu/vulnerabilities/spectre_v1 <==
Mitigation: usercopy/swapgs barriers and __user pointer sanitization

==> /sys/devices/system/cpu/vulnerabilities/spectre_v2 <==
Mitigation: Full generic retpoline, STIBP: disabled, RSB filling

==> /sys/devices/system/cpu/vulnerabilities/tsx_async_abort <==
Not affected

Konkret ist es so, dass die potenziellen Sicherheits- und Denial of Service-Lücken itlb_multihit, MDS und spec_store_bypass laut Gastsystem nicht abgeschaltet scheinen und daher potenziell ausgenutzt werden können. Da es sich jedoch um eine virtualisierte Lösung handelt, ist es durchaus denkbar, dass diese Lücken in Wirklichkeit umgangen werden, dies aber vom Gastsystem nicht feststellbar ist.

“I have received information that we’re not showing patches in /sys/devices/system/cpu/vulnerabilities/* for security reasons.”

webh.pl Support

Besonderheit ext4 reserved space bei vergleichsweise kleinen Festplattenspeichern

Aufgrund der per Standard knapp bemessenen 40/80G an Speicherplatz, ist es sinnvoll, Speicher zu sparen wo möglich. Empfehlenswert ist hierbei unter anderem, bei ext4-Dateisystemen den “Reserved Space” (normal 5%) zu verkleinern oder, wenn möglich, sogar komplett abzuschalten.

tune2fs -m 0.5 /dev/vda2 # Reservierter Speicher auf 0,5%
tune2fs -m 0 /dev/vda2 # Reservierter Speicher deaktiviert

Besonderheit Swapfile

Im neuesten Ubuntu LTS wurde begonnen, nicht mehr länger SWAP-Partitionen zu erstellen, sondern auf Swapfiles zu setzen. So auch im Standardsetup von webh.pl: Ein 2G großes Swapfile wird erstellt, welches selbstverständlich von dem zugesicherten Festplattenspeicher abgezogen wird. Möchte man diesen Speicher freigeben, kann man das Swapfile deaktivieren und entfernen. Es ist keine Rekonfiguration der Partitionstabelle mehr notwendig.

Routing

Das Routing spielt bei einem Server meist eine wichtige Rolle, da mit jedem Hop, der nicht passiert werden muss, die Latenz sinkt, was sich wiederum auf Anwendungen und deren Kommunikation auswirkt. Daher testete ich das Routing aus den Netzen unterschiedlicher Internetanbieter und von unterschiedlichen Standorten aus.

tkchopin.pl – webh.pl

servercow.de (meerfarbig Gmbh & Co. KG) – webh.pl

hetzner FSN1-DC1 (Falkenstein) – webh.pl

Vodafone DSL (Stuttgart) – webh.pl

Die Maps wurden generiert mit dem Leaflet Traceroute Mapper von Peter Thomson, welcher wiederum auf dem Traceroute Mapper von Stefan Sundin basiert, die Kartendaten stammen von OpenStreetMap.

Zumindest im Fall des Endkunden-Zugangs über tkchopin.pl, einem lokalen Internet- und Kabel-TV-Anbieter, erhielt man zum Zeitpunkt des Tests ein vergleichsweise direktes Routing. Für den Zugriff aus Deutschland war zweimal das Routing über Warschau und Stettin unumgänglich.

Das Routing von hetzner in Falkenstein nach webh.pl in Lodz war absurder, der fünfte Hop erfolgte über Großbritannien, was jedoch auch auf einen Fehler in der Datenbank von ipinfo.io zurückzuführen sein kann.

Netzwerkkonfiguration

Es handelt sich auf dem Server um eine statische Netzwerk-Konfiguration, welche im Fall von Ubuntu 18.04 nicht netplan/networkd-basierend ist, sondern auf die ältere ifupdown-Konfigurationsmethode in /etc/network/interfaces setzt.

auto ens3
iface ens3 inet static
address 91.205.75.239/24
gateway 91.205.75.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 1.1.1.1 8.8.4.4
dns-search webh.me

DNS

Ein Blick in die /etc/resolv.conf zeigt, da es sich um Ubuntu 18.04 handelt, dass systemd-resolved zum Einsatz kommt. Das war zu erwarten. Um also die wirklich genutzten DNS-Resolver herauszufinden, ist es notwendig, “systemd-resolve –status” auszuführen oder die /etc/systemd/resolved.conf oder die /etc/network/interfaces zu konsultieren.

Per default sind auf dem Testsystem die DNS-Resolver 1.1.1.1 (Cloudflare) und 8.8.4.4 (Google Public DNS Secondary) hinterlegt.

IPv6

Während des Tests fiel mir auf, dass das Testsystem über keine IPv6 verfügte. Auch der Versuch, eine solche über den vmmanager aufzuschalten schlug fehl. Eine Nachfrage bei webh.pl sorgte dann für Klarheit:

“We’re not offering ipv6 for now, but we’re going to offer it in the future.”

webh.pl Support

Demnach wird webh.pl IPv6 in Zukunft anbieten, was meiner Meinung nach im Jahre 2020 auch ein Muss darstellt.

Reverse-DNS

Im Test wurde nicht klar, wie Reverse-DNS-Einträge zu ändern sind. Zwar bietet der vmmanager eine solche Funktion, jedoch sorgte eine Anpassung dort nicht für das gewünschte Ergebnis. Auf Anfrage teilte der Support mit

“We’re using different IP subnets for our clients. For some of them, clients can change revdns using control panel, for rest we can change it upon request.”

webh.pl Support

Es handelt sich hierbei also offenbar um eine IP aus einem der Subnetze, für die eine Änderung der Reverse-DNS-Einträge nur aufschließlich über den webh.pl-Support erfolgen kann.

Performancetests

Netzwerk-Datentransferraten

Für die Datentransfers nutzte ich weiterhin speedtest-cli und wählte daher folgende Peers gewählt:

  • 30907) Deutsche Telekom Technik GmbH (Berlin, Germany) [394.94 km]
  • 4886) Stadtwerke Neumünster GmbH (Neumunster, Germany) [538.44 km]
  • 18667) meerfarbig GmbH & Co. KG (Frankfurt, Germany) [818.46 km]
  • 21514) Contabo GmbH (Munich, Germany) [855.26 km]

Diese werden im Abstand von 20 Minuten jeweils doppelt sequenziell getestet und die Ergebnisse mittels –csv Parameter und entsprechender Ausgabeumleitung als CSV in eine Tabelle zur späteren Verarbeitung geschrieben, etwa so:

30907,Deutsche Telekom Technik GmbH,Berlin,2020-03-28T07:17:20.127799Z,422.89016707081726,27.723,189797326.6667173,4150220.759736613,,91.205.75.239
30907,Deutsche Telekom Technik GmbH,Berlin,2020-03-28T07:17:41.287859Z,422.89016707081726,23.271,188071670.36669397,4150181.2915712413,,91.205.75.239
20478,Contabo GmbH,Nuremberg,2020-03-28T07:18:02.505737Z,646.0977991623539,35.526,182002432.52288514,4067378.244187205,,91.205.75.239

Leider birgt die von Ubuntu paketierte speedtest-cli einen Bug, welcher hier dokumentiert ist und dafür sorgt, dass Upload-Tests bei etwa 4 Mbit/s limitiert werden. Unglücklicherweise wurde ich auf diesen Umstand erst nach dem Test von einer Woche Testdauer aufmerksam. Aus diesem Grund beinhalten die folgenden Graphen lediglich Download-Datenpunkte.

Downloadraten aus Richtung der 4 unterschiedlichen Peers, Angaben in Mbit/s

Die Transferraten sind relativ stabil zwischen 192 und 177 Mbit/s jenach Peer. Vereinzelt gab es Streuung nach unten in den Abendstunden und einigen Ausreißern, welche hauptsächlich auf die Gegenstellen zurückzuführen sind.

Zuvorkommend: Bereits nach dem Testzeitraum bot mir webh.pl auf Nachfrage an, den Server zwei weitere Tage testen zu können, um zumindest einige Ergebnisse zu den Uploadraten zu sammeln.

RAM-Benchmark

Für den RAM-Benchmark mache ich mir wieder sysbench und dessen memory-Modul zunutze. Ich teste den Datendurchsatz von Schreib- als auch den von Lesevorgängen.

sysbench --threads=4 memory run

Pro Testdurchlauf erhalte ich damit folgenden Output:

Total operations: 39587238 (3958095.14 per second)
38659.41 MiB transferred (3865.33 MiB/sec)
Durchsatzraten lesend und schreibend (Datenpunkte “lesend” wurden seltener und erst später gesammelt)

Im Test zeigte sich, dass die Durchsatzraten lesend zwischen 16000 MiB/s und 18000 MiB/s lagen und nur sehr selten unter 16000 MiB/s fielen.
Die Durchsatzraten schreibend hingegen lagen meist bei 5000 MiB/s und fielen nur selten unter 4500 MiB/s.

Im Ranking liegt das Testsystem von webh.pl damit hinter meinem in die Jahre gekommenen ThinkPad T420 (wenn ausgestattet mit zwei DDR3-1333-Riegeln) und dem performantesten meiner Servercow-vServer. Absolut betrachtet bietet webh.pl jedoch trotzdem vernünftige und auch über längere Zeiträume stabile RAM-Durchsatzraten.

“All servers have ddr4 ecc ram bands.”

webh.pl Support

CPU-Benchmark

sysbench CPU Benchmark über die gesamte Testdauer

Der CPU-Test fiel kleiner aus, da ich hierzu diesmal nur die “events per second” aufnahm. Hier zeigte sich, dass dieser Wert über den gesamten Testzeitraum hinweg zwischen 3600 und 4400 Events lag. Während dieser Wert ansich keine Aussage über die absolute CPU-Leistung zulässt, zeigt er doch die Abweichungen in bestimmten Lastsituationen (beispielsweise nachts, wenn CPU-intensive Anwendungen wie zur Kompression von Logs laufen).

Da ich zu dieser Metrik derzeit keine weiteren Vergleichswerte habe, fällt es hier schwer, die Ergebnisse ins Verhältnis zu setzen. Mein mittelmäßig ausgelasteter i5-2520M im ThinkPad T420 schaffte im Schnitt 2500 events pro Sekunde.

Bessere CPU-Tests bietet beispielsweise die Phoronix Test Suite, indem sie echte Anwendungsfälle (beispielsweise das kompilieren einer bestimmten Kernel-Version) abdeckt und die benötigte Zeit misst und aufzeichnet.

“In our infrastructure we use different processors within Intel Xeon Scalable gen 1 and gen 2 series.”

webh.pl Support

IO-Benchmark

Auch für den IO-Benchmark habe ich Daten über mehrere Tage hinweg aufgezeichnet. Im Schnitt erreichte ich hier für die folgenden Modi die folgenden Performancewerte:

seq read cached/direct5900/183
rnd read cached/direct7500/171
seq write cached/direct174/48
rnd write cached/direct111/114
Angaben in MiB/s

“We have infrastructure where our hosts and storage are on different nodes. We’re attaching our working nodes to storage nodes. We’re using both ssd and nvme drives within our storage nodes and we’re currently moving everything to nvme.”

webh.pl Support

Fazit

Für wen die Systeme von webh.pl geeignet sind

Wer auf der Suche nach einem VPS mit stabiler Internetanbindung, gutem Standort und äußerst schnellem, freundlichem und zuvorkommendem Support ist, ist mit webh.pl gut bedient. Die Angebote sind nicht die billigsten, aber das Preis/Leistungs-Verhältnis stimmt definitiv.

webh.pl kommt in meinem Fall für zukünftige Projekte definitiv in die engere Auswahl.

Anmerkungen

Derzeit wird die Webseite von webh.pl in die englische und russische Sprache übersetzt. Deutsch soll laut webh.pl anschließend auch folgen. Es zeigte sich jedoch auch, dass eine automatische Übersetzung mit Google Translator völlig ausreichend ist, da die anschließenden Webinterfaces in vielen unterschiedlichen Sprachen, darunter Deutsch, verfügbar sind.

Bis auf die hängende Installation mit vorab eingegebenen SSH-Keys, die Tatsache, dass es noch kein IPv6 gibt und in manchen Fällen die Änderung von Reverse-DNS-Einträgen nicht durch den Kunden möglich ist, bin ich positiv beeindruckt.

Während dieses Tests …

Für diesen Test wurden insgesamt circa 1810G an Daten herunter- und 90G an Daten hochgeladen. Ferner wurden 203296740 ms (~56h) CPU-Zeit verbraucht und 211.680.000 IOPS durchgeführt.

von maltris am 05.02.2025 08:00


18.01.2025

Steffen Rumberger (inne)

Autonomes Töten mit KI-Kampfrobotern

Autonomes Töten mit KI-Kampfrobotern findet heute in den aktuellen Kriegen schon statt.
Das Resultat, was man daraus ziehen kann, ist: Perfekt trainierte KI ist in Schach, Go usw. besser als der Mensch und dies übertragen auf KI-Kampfroboter bedeutet: Entweder die Verantwortung an die KI-Kampfroboter abgeben und gewinnen oder als Mensch die Verantwortung behalten und verlieren. Das haben die Militärs verstanden.

PS: Verantwortung kann eine KI nicht übernehmen, weil es bei Regelverstößen u.ä. keine Möglichkeit der Strafe gibt.

Freies Zitat ohne Einhaltung des genauen Wortlautes aus: Prof. Dr. Manfred Spitzer: Gehirn, KI, Lernen, Neurologie | Eduard Heindl Energiegespräch #078

18.01.2025 12:37


16.01.2025

Bernd Dau (whisper)

Spam-Score Auswertung

Ich weiß nicht, ob an dem dahinter liegenden Script Interesse besteht...

Einfach melden.

 

von bed (nospam@example.com) am 16.01.2025 08:56


15.01.2025

Bernd Dau (whisper)

20 Jahre Zockertown – ein kleiner Rückblick

20 Jahre Zockertown – ein kleiner Rückblick

Wahnsinn, wie schnell die Zeit vergeht: Mein Blog Zockertown.de ist tatsächlich 20 Jahre alt geworden! Am Donnerstag, den 13. Januar 2005 um 21:01 Uhr ging der allererste Artikel online. Damals hätte ich nie gedacht, dass ich zwei Jahrzehnte später immer noch hier sitzen würde, um euch an meinen Gedanken, Spielen und Erlebnissen teilhaben zu lassen.

Inzwischen sind 1626 Artikel zusammengekommen – von spontanen Ideen bis zu aufwendigeren Beiträgen. Der letzte offizielle Eintrag stammt übrigens vom Samstag, 23. November 2024 um 11:11 Uhr. Nicht immer habe ich ganz pünktlich zum Geburtstag einen Artikel verfasst, aber alle paar Jahre packt mich dann doch die Nostalgie, und ich schreibe einen kleinen Rückblick.

Ein Beispiel für einen solchen “Geburtstagsartikel” findest du hier:
Geburtstag gehabt und keiner hat's gemerkt…

Was bleibt nach 20 Jahren?

  • Viel Spaß, den ich an Spielen und am Schreiben hatte.
  • Eine Menge Erinnerungen, die in den ganzen Artikeln weiterleben.
  • Das Gefühl, eine kleine “Online-Heimat” geschaffen zu haben, zu der ich immer wieder gern zurückkehre.

Ich danke allen, die hier vorbeischauen, Kommentare dalassen oder einfach still mitlesen. Auf die nächsten Jahre voller neuer Games, Ideen und Texte – und vor allem auf viele weitere Momente, in denen wir zusammen zocken und darüber schreiben können!

Happy Blog-Geburtstag, Zockertown!

von bed (nospam@example.com) am 15.01.2025 19:31


(c3f2o)

Radikalisierung und Strategie: Der AfD-Bundesparteitag in Riesa als Zäsur

Am 11. und 12. Januar fand im sächsischen Riesa der Bundesparteitag der AfD statt, begleitet von massiven Protesten. Rund 600 Delegierte wählten unter anderem Partei- und Fraktionschefin Alice Weidel zur Kanzlerkandidatin und beschlossen die Aufnahme des Begriffs „Remigration“ ins Wahlprogramm. Weidels Rede sowie zahlreiche Anträge enthielten radikale Positionen, die öffentlich als Zeichen der weiteren Radikalisierung […]

von invia1200 am 15.01.2025 13:23


09.01.2025

(c3f2o)

Herr Merz: Schnauze halten!

Friedrich Merz will härter gegen straffallige Migrantenvorgehen. Warum? Weil ihm nichts Besseres einfällt, um in Schlagzeilen zu kommen. Der Mann, der einst „mehr Porsche wagen“ wollte, entdeckt plötzlich seine Liebe zum Polizeistaat – zumindest, wenn es um die anderen geht. Deutsche Täter? Steuerhinterzieher?Wirtschaftskriminelle? Keine Erwähnung. Aber der „kriminelle Ausländer“ – das zieht immer. Merz, der […]

von invia1200 am 09.01.2025 12:30


09.12.2024

Steffen Rumberger (inne)

9. Dezember, Weltantikorruptionstag

Lobbyismus […] wenn Sie Benito Mussolini zuhören, der ein oder zwei Dinge über Faschismus wusste, dann wissen Sie, dass er folgendes sagte:

Der Faschismus ist die Verschmelzung von staatlicher und unternehmerischer Macht

Jetzt werden die Leute das bestreiten und sagen, dass es nicht genau das ist, was er gesagt hat. Aber wenn man sich wirklich damit beschäftigt, ist es das.

Was ist Lobbyismus? Nun ganz einfach gesagt: Lobbyismus ist die Beeinflussung von Entscheidungen, die von Gesetzgebern und Behörden getroffen werden, eben den Leuten, welche die Regeln machen. Und die Leute, die diesen Einfluss ausüben, nennt man Lobbyisten. Gut vernetzte Fachleute. Lobbyisten sind in der Regel Experten in ihren Bereichen. Sie beraten die Gesetzgeber, wie sie sicherstellen können, dass das Volk den größten möglichen Nutzen aus den Gesetzen zieht. Während sie gleichzeitig möglichen Schaden begrenzen. Das ist eine Gute Idee. Warum sollte man einen Expertenrat nicht wollen und genau hier wird es problematisch: Manchmal beschließen die Gesetzgeber, dass der Job auf der Seite der Unternehmen besser ist und werden selbst Lobbyisten, sie verlassen die Regierung und gehen zu einem privaten Unternehmen, wobei sie ihre Verbindungen und ihren Einfluss mitnehmen. Dieses Phänomen wird als Drehtür bezeichnet. Die Leute wechseln von der Regulierung einer Branche, zur Arbeit in derselben Branche und manchmal auch mehrmals hin und her. Unternehmen lieben es, mächtige Leute auf ihrer Gehaltsliste zu haben und tun alles, um sie anzulocken. Die Regulierungsbehörden helfen ihrer Seitz, in dem sie ein paar Gesetze erlassen, die ihren künftigen Arbeitgeber zugutekommen und mit dem Drehen der Tür, kommen eine Vielzahl neuer Gesetze. Die einigen Unternehmen zugutekommen und andere behindern. Aber das Geschäft läuft weiter …

09.12.2024 00:00


15.09.2024

Dominik Kupschke (bommi)

Protect against Display Name Spoofing with Rspamd

Email security is an ever-evolving field, and one of the persistent threats is display name spoofing. This attack involves forging the display name in an email to trick recipients into thinking the message is from a trusted source. While Rspamd is a powerful tool for combating spam and improving email security, it can be fine-tuned […]

von Dominik Kupschke am 15.09.2024 18:08


21.08.2024

Daniel Gestl (mcdaniels)

Wiki für Linuxinteressierte und Einsteiger – wiki.techgamegeek.com

In den letzten Wochen habe ich mich dazu entschieden, ein WIKI für Linuxinteressierte und Linuxanfänger zu bauen. Mittlerweile denke ich, dass ich die bisher eingepflegten Inhalte online stellen kann. Ich hoffe, dass ich damit dem einen oder anderen Umstiegswilligen etwas Starthilfe geben kann. Ihr könnt mir gerne hier oder auch auf Youtube eure Meinung, aber ... Weiterlesen

von Daniel am 21.08.2024 17:54


26.07.2024

Dominik Kupschke (bommi)

New Quad9 SSL Certificate – Mikrotik Devices Must Import New Root Certificate by July 29th

The DNS Provider Quad9 will change the certificates used by its „DNS over HTTPS“ service, those new certificates are signed from a different DigiCert Root CA as the one used before. For most systems and devices it will not be a problem, except for systems using Mikrotiks RouterOS. As Mikrotik RouterOS doesn’t ship a root […]

von Dominik Kupschke am 26.07.2024 07:07


18.07.2024

Daniel Gestl (mcdaniels)

Headtracking mit einer Webcam unter Linux – Opentrack / Neuralnet-Tracker (DEB-File / DEB-Installer Opentrack)

Ich habe mich in letzter Zeit, nicht zuletzt wegen Xplane 12, recht intensiv mit dem Thema Headtracking unter Linux beschäftigt. Leider ist es ja noch immer so, dass Naturalpoint (Thema TrackIR) Linux nicht berücksichtigt und somit Track IR meines Wissen nicht ohne Weiteres unter Linux in Betrieb zu nehmen ist und der „Linuxer“ deshalb eine ... Weiterlesen

von Daniel am 18.07.2024 17:48


10.07.2024

Jörg Kruse (4A4B)

Datumsformat ISO 8601 in Thunderbird einstellen

Das Datumsformat ISO 8601 lässt sich unter Linux Debian global einrichten, indem zuerst mit dpkg-reconfigure locales als zusätzliche Lokale en_DK.UTF-8 hinzugefügt wird, welche anschließend mit localectl als Zeitformat definiert wird:

localectl set-locale LC_TIME=en_DK.UTF-8

Bei en_DK handelt es sich mitnichten um dänisches Englisch. Vielmehr wurde diese Lokale erstellt, damit Datumsangaben in einer ansonsten englischen Lokale im ISO 8601 Form YYYY-MM-DD angezeigt werden können, anstelle des verquirlten US-amerikanischen MM/DD/YYYY.

Leider stellt sich das E-Mail-Programm Mozilla Thunderbird hier etwas quer: selbst wenn in den Einstellungen von Thunderbird die Option „Regional settings locale: English (Denmark)“ ausgewählt ist, wird eigentümlicherweise das Format DD/MM/YYYY angezeigt. Es gibt hierzu auch einen sieben Jahre alten Bug-Report mit dem Status „wontfix“ und verschiedenen Workarounds, die einige Zeit später aber auch schon nicht mehr funktionierten.

Das ISO-Format kann aber recht einfach im Config-Editor von Thunderbird eingestellt werden, wie auf support.mozilla.org im Artikel Customize Date and Time formats in Thunderbird beschrieben.

Thunderbird Config-Editor

Ich füge solche Einstellungen gerne der Datei user.js hinzu, die im Thunderbird-Profil-Verzeichnis ~/.thunderbird/[…].default-default/ gespeichert wird. Diese lassen sich so dann leichter auf andere Profile und Rechner übertragen und aus dem Backup wiederherstellen:

// iso date and time formats
user_pref("intl.date_time.pattern_override.date_short", "yyyy-MM-dd");
user_pref("intl.date_time.pattern_override.time_short", "HH:mm");

von Jörg Kruse am 10.07.2024 14:01


16.12.2023

Stephan Tetzel (zefanja)

Einführung in Anki 23.10

Anki ist eine Karteikarten-App mit einem sehr sehr guten Algorithmus, der einem hilft, das Gelernte nicht mehr zu vergessen. Wie man lernt ohne zu Vergessen habe ich bereits in meinem letzten Artikel kurz beschrieben. Vor kurzem habe ich den Schülern meiner Schule eine Einführung in Anki gegeben. Dazu habe ich auch einige Videos und Tutorials aufgenommen.

Anki 23.10

Vor kurzem wurde eine neue Version von Anki veröffentlicht, die mindestens zwei tolle Features enthält.

Das eine ist ein neuer Algorithmus (FSRS), der aktuell einer der besten Spaced-Repetition-Algorithmen ist. Im Prinzip ist dieser Algorithmus das Herzstück von Anki, da er dafür verantwortlich ist, mir genau die Karten zu zeigen, die ich am vergessen bin. Je genauer eine App diesen Zeitpunkt berechnen kann, umso länger kann ich Dinge in meinem Gedächtnis behalten, ohne das ich sie vergesse.

Ein weiteres tolles Feature ist der neue Notiztyp „Bildverdeckung“, der jetzt nativ integriert wurde. Damit kann ich Teile von von Zeichnungen, Tabellen, Vorlesungsfolien etc. einfach abdecken und damit lernen. Auf die 3 wichtigsten Typen gehe ich in folgenden Video ein:

Einführung in Anki

Anki hat eine etwas steile Lernkurve, d.h. es dauert ein bisschen, bis man die App verstanden und durchdrungen hat. Auf der einen Seite ist sie sehr simpel aufgebaut, auf der anderen gleichzeitig sehr flexibel und erweiterbar. Daher ist es hilfreich, wenn man sich zu Beginn die ersten 5 Kapitel der Dokumentation durchliest.

Für meine Schüler habe ich ein paar einleitende Videos erstellt, die die Schritte von der Installation bis zur ersten Benutzung beschreiben. Weitere folgen noch in den nächsten Wochen und Monaten.

Fazit

Anki ist eine tolle App, die das Lernen sehr effektiv und effizient macht. Es liegt nicht so sehr an der App an sich, sondern eher daran, dass sie auf einer wissenschaftlich sehr gut untersuchte Lerntechnik basiert. Die Meta-Studie von John Dunlosky vergleicht verschiedene beliebte Lerntechniken und kommt ganz klar zu dem Ergebnis, dass verteiltes Wiederholen und Selbsttests die Lerntechniken sind, die den größten Effekt habe.

Ich möchte jeden ermutigen, egal welchen Alters, sich einmal mit dieser App auseinanderzusetzen und den sogenannten „spacing effect“ an sich selbst zu erfahren. Lernen (fast) ohne zu vergessen ist möglich 🙂

Der Beitrag Einführung in Anki 23.10 erschien zuerst auf zefanjas.

von zefanja am 16.12.2023 07:37


09.10.2023

Stephan Tetzel (zefanja)

Lernen ohne zu vergessen mit Anki

In den letzten Jahren habe ich mich immer wieder mit Erkenntnissen aus der Lernforschung auseinandergesetzt, um mein persönliches Lernen aber auch das Lernen an unserer Schule stetig zu verbessern. Ein Begriff, der mir dabei immer wieder begegnete, ist „Spaced Repetition“. Was das mit „Lernen ohne zu vergessen“ und mit Anki zu tun, möchte ich in diesem Artikel kurz beschreiben.

Was ist „Spaced Repetion“?

Spaced Repetition kann man am besten mit „zeitlich verteilte Wiederholung“ oder „verteilte Wiederholung“ übersetzen. Im Grunde geht es darum, dass ich Lerninhalte idealerweise dann wiederhole, kurz bevor ich sie vergessen habe. Wenn man Lernen als einen Kampf gegen das Vergessen bezeichnet, ist genau das wichtig: Wiederholen bevor mein Gedächtnis das Gelernte vergessen hat.

Immer dann, wenn ich Gelerntes wiederhole und mich daran erinnern kann, verlängert sich die „Speicherdauer“ in meinem Gedächtnis.

Wir alle kennen diesen Effekt. Wenn ich in meiner Schulzeit für einen Vokabeltest gelernt habe (meist am Tag davor 🙂 ), habe ich die meisten Vokabeln nach 3 Tagen wieder vergessen. Dass ist auch der Grund, warum ich mich nur noch an ganz wenige Französischvokabeln erinnern kann, obwohl ich 5 Jahre Sprachunterricht hatte. Hätte ich jedoch jeden Tag eine kleine Menge an Vokabeln gelernt und wiederholt, hätte ich mich wesentlich länger an sie erinnern können. Hier mal eine Grafik, die das Prinzip veranschaulicht:

Zusammenfassung: Wenn ich etwas Gelerntes im richtigen Moment wiederhole, kann ich die „Speicherdauer“ im Langzeitgedächtnis deutlich verlängern.

Doch woher weiß ich, wann der richtige Zeitpunkt ist, um etwas zu wiederholen? Ich möchte ja nur die Dinge wiederholen, die ich gerade am Vergessen bin und nicht die, die ich noch weiß. Das ist eine sehr wichtige Frage. Wenn ich zu viele Dinge wiederhole (v.a. Lerninhalte, die ich noch weiß), steigt mein zeitlicher Aufwand für die Wiederholungen. Wenn ich zu wenige Lerninhalte wiederhole, steigt die Chance, dass ich Dinge vergesse und ich sie letztendlich neu lernen muss.

Anki

Genau an diesem Punkt kommt Anki ins Spiel. Anki ist eine Open Source Karteikartensoftware, die mir die Arbeit der Berechnung der richtigen Intervalle abnimmt, sodass ich nur noch das wiederhole, was ich kurz vor dem Vergessen bin. Das genau ist es, was diese Lernmethode so effizient macht, denn nun kann ich Dinge in weniger Zeit lernen bzw. mehr in der gleichen Zeit, die ich bisher zum Lernen aufgewendet habe.

Anki ist eine sehr mächtige und flexible Anwendung, die sich durch viele Erweiterungen anpassen lässt. Das sorgt auch dafür, dass die Lernkurve für diese App etwas steiler ist. Deshalb empfehle ich, dass man sich am besten ein paar einführende Videos anschaut.

Karteikarten kann man sich entweder selbst erstellen oder nutzt eines der fertigen Lernpakete.

Lernen ohne zu vergessen – eine Utopie?

Persönlich nutze ich Anki seit ca. 1 Jahr. Hauptsächlich lerne ich damit Vokabeln (ja, auch wieder Französisch…), Bibelverse / -texte, Markierungen / Zitate aus Büchern, die ich gelesen habe und alles, was mich sonst noch so interessiert. Ich bin total begeistert von den Ergebnissen. Ich hätte nicht gedacht, dass es so leicht ist, sich Dinge langfristig im Gedächtnis zu behalten.

Wo ist der Haken? Damit das mit den Wiederholen zum richtigen Zeitpunkt auch klappt, muss ich meine Wiederholungen jeden Tag machen. Je nachdem wie viele Karten man lernt, können das 5 Minuten am Tag sein oder auch 2 Stunden. Der Schlüssel zum Erfolg ist die tägliche Wiederholung. Es dauert vielleicht ein paar Wochen bis man diese neue Gewohnheit in seinen Alltag integriert hat, aber man wird belohnt mit der Erfahrung, dass dieses Prinzip der verteilten Wiederholung wirklich funktioniert und unser Gedächtnis sich viele (sehr viele) Dinge merken kann.

Der Beitrag Lernen ohne zu vergessen mit Anki erschien zuerst auf zefanjas.

von zefanja am 09.10.2023 05:00


06.05.2023

Martin Dosch (Dogge)

System-Mails von Linux über XMPP empfangen (v2)

2017 beschrieb ich wie man System-Mails von Linux über XMPP empfangen kann. Da ich mittlerweile sendxmpp nicht mehr nutze, weil ich damit viele Probleme hatte und mir selbst die Alternative go-sendxmpp geschrieben habe möchte ich mein neues Setup vorstellen.

⚠️ Warnung ⚠️
Auch 2023 gilt: Es könnte sein, dass wichtige oder sensible Informationen in den Systemmails enthalten sind. Deshalb würde ich davon abraten diese über fremde Server zu senden.
Außerdem speichere ich das Passwort des XMPP-Kontos im Script, weshalb ich dazu rate einen dezidierten XMPP account dafür zu nutzen und nicht etwa den eigenen privaten account.

Diese Anleitung geht von einem Debiansystem aus, kann aber sicherlich auch für andere Distributionen adaptiert werden. Ich selbst habe dieses Setup mit Debian bookworm eingerichtet.

Go-sendxmpp kann man entweder selbst bauen, als binary herunterladen oder aus den repos einiger distros installieren. Ich habe es aus den Debian repos installiert, da go-sendxmpp ab bookworm in den Debian repos vorhanden ist.

Nun wird das script /usr/local/bin/mail2xmpp mit folgendem Inhalt angelegt:

#!/bin/bash                   
go-sendxmpp -u $user -p $password recipient@example.org

Dabei sind $user und $password durch Benutzer und Passwort des Kontos, das zum Versand verwendet wird, zu ersetzen und recipient@example.org durch die eigene Adresse, auf der man die Nachrichten erhalten will. Es ist natürlich auch möglich mehrere Zieladressen anzugeben.

Danach wird exim zum Eigentümer der Datei gemacht:

# chown Debian-exim:Debian-exim /usr/local/bin/mail2xmpp

Ebenso werden die Berechtigungen angepasst:

# chmod 700 /usr/local/bin/mail2xmpp

Um zu definieren wie die Mails zugestellt werden muss die Datei /etc/aliases bearbeitet werden, wobei $user natürlich anzupassen ist (ich nutze dafür meinen Hauptbenutzer, man kann aber natürlich auch extra einen Benutzer für diesen Zweck anlegen):

# /etc/aliases
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root
root: $user
$user:,|/usr/local/bin/mail2xmpp

Damit die Systemmails per pipe weitergereicht werden können muss die Datei /etc/exim4/exim4.conf.localmacros ngelegt und diese Zeile eingetragen werden:

SYSTEM_ALIASES_PIPE_TRANSPORT = address_pipe

Anschließend werden die neuen Aliase eingelesen und exim4 neu gestartet:

# newaliases
# systemctl restart exim4.service

Abschließend wird noch getestet ob der Mailtransport über XMPP funktioniert:

$ echo "Das ist ein Test" | mail -s testmail root

Update 2023-05-06

Ein anonymer Kommentator (der Kommentar ist mittlerweile verschwunden. Wo ist er hin? Ich habe ihn wissentlich nicht gelöscht…) hat mich darauf hingewiesen, dass der Teil vor der pipe im script unnötig war und ich habe es dementsprechend angepasst.

06.05.2023 08:33


31.03.2023

Martin Dosch (Dogge)

Kurztipp: Zugriff auf WiFi captive portal bei Nutzung eines eigenen DNS (v2)

2019 habe ich hier beschrieben, wie man Zugriff auf ein captive portal bekommt wenn man einen eigenen DNS server (z.B. per DoT) nutzt. Mittlerweile habe ich ein tool gefunden, dass das deutlich komfortabler macht: captive browser.

Da ich statt Chrome Chromium aus den Debian repositories nutze, musste ich nach Ausführung der allgemeinen Installationshinweise in der Datei $(go env GOPATH)/src/github.com/FiloSottile/captive-browser/captive-browser-ubuntu-chrome.toml1 in dieser Zeile lediglich google-chrome durch chromium ersetzen. Danach folgte ich den Anweisungen für Ubuntu.

Nun genügt es captive-browser aufzurufen und es öffnet sich ein chromium Fenster mit dem captive portal zur Anmeldung im WiFi und es ist nicht nötig die Datei /etc/resolv.conf zu editieren um kurzzeitig einen anderen DNS server zu nutzen.


  1. Üblicherweise ~/go/src/github.com/FiloSottile/captive-browser/captive-browser-ubuntu-chrome.toml ↩︎

31.03.2023 10:40


24.10.2022

Christian Imhorst (immi)

PowerShell und Jupyter Notebooks unter Linux in VS Code

Jupyter Notebook ist eine Open Source-Webanwendung, mit der man Dokumente erstellen und teilen kann, die Live-Code, mathematische Gleichungen, Visualisierungen von Daten und beschreibenden Text enthalten können. Ein Jupyter Notebook ist ein praktisches Werkzeug für die interaktive Erstellung von Präsentationen, um Code, dessen Ausführung und daraus resultierende Daten darzustellen. Die meisten Jupyter Notebooks laufen mit Python, man kann aber auch andere Sprachen benutzen, z.B. aus dem .NET-Umfeld wie C# oder auch PowerShell. Jupyter Notebooks laufen im Browser, es gibt mit Jupyter eine sehr schöne Erweiterung für VS Code. Und um die Notebooks noch um die .NET-Sprachen zu erweitern, kann man auch gleich noch die Erweiterung .NET Interactive Notebooks aus dem Marketplace von VS Code installieren.

Damit man überhaupt Jupyter Noteboos erstellen kann, wird das entsprechende Python-Modul benötigt:

python3 -m pip install --upgrade pip
python3 -m pip install jupyter

Um ein Jupyter Notebook im Browser zu starten, gibt man dann einfach jupyter notebook im Terminal ein. Im VS Code reicht es dagegen, eine neue Datei mit der Endung .ipynb zu erstellen und man kann loslegen und den beschreibenden Text mit Markdown erstellen und den Code in Python. Um eine Sprache aus dem .NET-Framework zu verwenden, muss natürlich .NET unter Linux installiert sein und für PowerShell am besten die neuste Version.

Wenn das erledigt ist, und die Befehle dotnet für .NET und pwsh für die PowerShell über die Pfad-Variable erreichbar sind, wird noch das Microsoft.dotnet-interactive-Paket benötigt, ein Befehlszeilen-Tool für die interaktive Programmierung mit C# oder PowerShell, inklusive Unterstützung für Jupyter Notebooks:

dotnet tool install --global Microsoft.dotnet-interactive

Anschließend führt man den folgenden Befehl aus, um dotnet-interactive zum Jupyter Notebook hinzuzufügen:

dotnet interactive jupyter install

Jetzt kann man im VS Code Jupyter Notebooks erstellen und PowerShell Cmdlets ausführen. Allerdings muss man darauf achten, dass der Kernel des Notebooks unter .NET Interactive läuft (also nicht Python) und der Programm-Code als „PowerShell (.NET Interactive)“ ausgeführt wird, so wie in der Abbildung:

Das schöne an .NET-Interactive als Kernel für Jupyter Notebooks ist, dass noch weitere Sprachen unterstützt werden, so dass man neben PowerShell auch Code-Blöcke in C#, JacaScript oder auch SQL erstellen kann.

von Christian Imhorst am 24.10.2022 17:11


14.06.2017

Vinzenz Vietzke (vinz)

Mein XFCE Desktop im Juni 2017

Es wird Zeit, mal wieder meinen Desktop zu zeigen und wie ich ihn für mich angepasst habe. Sean hat das hier mit Xubuntu gemacht, ich übernehme die übersichtliche Struktur gerne.
Das Gerät ist ein ThinkPad x220 mit i5-2520M und 16GB RAM, einer 120GB Samsung 840 SSD, “gemoddetem” BIOS und 9-Zellen/73,3Wh Nachbauakku.

Konfiguration

  • Desktop
    • Distribution: Debian Testing (Stretch)
    • Desktopumgebung: Xfce
    • Window Manager: Xfwm4
  • Themes
    • GTK: Arc-Grey-Darker (GitHub)
    • Window Manager: Arc-Grey-Darker (GitHub)
    • Icons: Arc Limon (GitHub)
    • Cursors: Adwaita
    • Firefox: Arc-Darker (GitHub)
  • Schriften
    • Standard: Lato Regular 10
    • Window Manager: Lato Bold 10
    • Monospace: Monospace Regular 10
  • Wallpaper: Incense Stick in balinese rainforest (CC0, Artem Beliaikin)
  • Panel Plugins
    • Whisker-Menü (Homepage)
    • Benachrichtigungsfläche
    • Energieverwaltung
    • PulseAudio Plugin
    • Orage-Uhr
  • Programme im Tray
    • Audacious
    • Gajim
    • Liferea
    • Nextcloud Client (HowTo)
    • Redshift
    • Thunderbird (plus Firetray)

 

Tipps & Tricks

  • Symbol des Whisker-Menü auf debian-emblem-white setzen (siehe Screenshot)
  • Desktopsymbole deaktivieren
  • Panel: Alpha auf 85% setzen
  • Fensterknöpfe: Knopfbeschriftungen anzeigen deaktivieren, Griff anzeigen deaktivieren, Flache Knöpfe aktivieren (siehe Screenshot)
  • Super Key auf das Whiskermenu legen (ksuperkey installieren)
  • In der Fensterverwaltung unter “Anordnung der Knöpfe” alle außer Schließen entfernen.

 

Mehr Screenshots

von vinzv am 14.06.2017 00:10


04.05.2012

Thorsten Sperber (TRex)

Windows ist doof, Linux funktioniert nicht

Momentan kommen mir im debianforum [1] immer öfter Menschen unter die Nase, die fast, aber nicht ganz auf das Schema linux-ist-nicht-windows [2] passen. Sie wissen, dass Linux anders ist, sie wollen es nicht alle wie Windows bedienen, aber sie haben ihre schlechten Windowsgewohnheiten noch nicht vergessen/abgelegt. Eigentlich schade, denn sie verpassen die Hälfte. Als Hilfesuchende punkten sie auch nicht, denn sie gehen Probleme nach Windows-Art an: Beschreibe das Verhalten, hoffe, dass das jemand kennt und eine Lösung dafür hat. Unter Windows gehts halt nicht anders...hoffentlich ergiebige Fehlermeldung ("Vorgang fehlgeschlagen") mit Vorgeschichte ("Programm XY installiert", "Windows Updates durchgeführt", ..) in Google suchen oder Forum posten und auf Leidensgenossen hoffen, die das Problem gelöst haben.

In den meisten open source Programmen gibt es irgendeine Art von Logging oder (Debug-)Ausgaben. Dazu führt man das Programm auf einem Terminal aus, ruft es anders auf oder schaut in der Logging-Datei der X-Session (ausgehend davon, dass es sich um ein grafisches Programm handelt), in der Regel zu finden in ~/.xsession-errors oder für SLIM in /var/log/slim.log. Dort gibt es dann ganz viele Informationen, die zielführend für eine Lösung sind. Ich behaupte ja nicht, dass da steht "du musst noch libbanana-2.4 installieren", und wenn derjenige mit dem Problem mit den Informationen nichts anfangen kann (weil sie zu technisch sind), dann gibts andere, die es können.

Bis es sich rumgesprochen hat, werd ich wohl öfters darauf hinweisen.

Für die meisten grafischen Programme:
~/.xsession-errors
Für Serverdienste:
/var/log/syslog
Für Kernelfragen und Treiberprobleme:
/var/log/kern.log /var/log/messages

Und die meisten Programme, grafisch als auch nicht grafisch (und letztere besonders) haben eine Ausgabe auf dem Terminal, auf dem sie ausgeführt werden. Es wäre doch durchaus hilfreich, sowohl verursachendes Kommando als auch die Ausgabe dazu (abzüglich empfindlicher Daten, die sind erkennbar als solche zu zensieren) unverfälscht zu sehen.

Und diese Dateien (die in /var/log/ sind übrigens nur als root lesbar, also entweder ein root-Terminal öffnen oder sudo vor den Befehl setzen) werden am besten mit Hilfe von tail -f Datei gelesen (was die Ausgabe weiterlaufen lässt), woraufhin die fehlerverursachende Aktion wiederholt wird oder mit less komplett geöffnet. tail ohne -f zeigt einfach bloß die letzten 10 Zeilen an.

Damit wäre das hoffentlich vom Tisch. Das soll übrigens kein rant sein, sondern ein fester Schubser in die richtige Richtung, in Zukunft selbst Lösungen zu finden. Bei Windows hat man doch auch viel Durchhaltevermögen ;) Und neu installieren muss man bei $linuxdistribution auch nicht sonderlich oft.

Und ein letzter Hinweis: solange man nichts gekauft oder bezahlt hat, gibt es auch keinen "Anspruch". Das schließt auch "schließlich ist das doch ein Hilfeforum, ihr müsst mir helfen" ein. Das ist Freizeit, die wir "opfern", meist, weil es uns Spaß macht zu helfen oder wir dabei selbst noch lernen (gemeinsames Problemlösen). Entsprechend schwach ist die Motivation, eine nur schwach oder garnicht recherchierte Frage zu beantworten oder "Hausaufgaben" zu erledigen, die man wahlweise schnell zusammengesucht oder nachgelesen hat. Da hagelts dann schnell ein genervtes RTFM.

Update: falsche Datei angegeben, danke an up ausm dfde

[1]http://debianforum.de
[2]http://www.felix-schwarz.name/files/opensource/articles/Linux_ist_nicht_Windows/

von Thorsten am 04.05.2012 13:20


30.10.2016

Jürgen Braun (jaybe)

Frankfurt Marathon

Rückblick: 25.10.2015 findet der Frankfurt Marathon statt, ich sitze gespannt vom Fernseher als Arne Gabius zu einem neuen deutschen Rekord läuft und finde es sehr interessant und spannend, zugleich aber auch verrückt und unmöglich, dies selbst einmal zu absolvieren. Einige Tage später wird der Termin für 2016 auf Facebook veröffentlicht und ich klicke auf „interessiert mich“, einfach um den Termin nicht zu verpassen, absolut ohne den Hauch eines Gedankens daran, dort vielleicht selbst zu starten. Entsprechend verblüfft reagiere ich auf beim nächsten Lauftraining auch auf die Frage eines Trainingspartners „Und, schon angemeldet“? Ich? Nein, das traue ich mir nicht zu. Andere schon: „Komm, bei Deinem Training, ein paar lange Läufe noch zur Vorbereitung, ist das kein Problem“. Soll ich wirklich? Könnte das klappen? Warum eigentlich nicht. Am 06.12.2015 war ich dann so weit:

Lieber Jürgen Braun,
vielen Dank für Deine Anmeldung zum Frankfurt Marathon 2016. Hier befinden sich alle wichtigen Daten und Angaben zu Deiner Anmeldung.

Die Bestätigungsmail des Veranstalters war da. Es kann los gehen…

Die Vorbereitung ist gut gelaufen, bei Lauftipps.ch habe ich mir einen Trainingsplan erstellen lassen, an den ich mich zumindest in den letzten 7 Wochen vor dem Wettkampf zu 100% gehalten habe. Die Wochen davor fanden noch Wettkämpfe in der Hessischen Triathlon-Liga statt und ich war noch eine Woche im Urlaub, hier musste ein wenig improvisiert und lange Läufe durch schnelle 10km im Wettkampf werden.

Nach meinen Problemen im Frühjahr mit ISG und Schienbeinkante achtete ich sehr auf irgendwelche Zeichen meines Körper und tatsächlich, drei Wochen vorm Wettkampf, am Ende des längsten Laufes über 33km waren sie da, Rückenschmerzen 🙁 Wie würden wohl im Wettkampf die noch ausstehenden 9km zu bewältigen sein, lies sich der Wettkampf überhaupt erfolgreich beenden? Durch die Erfahrung aus dem Frühjahr, war eigentlich klar, dass es vermutlich das ISG bzw. die Lendenmuskulatur sein muss, also wurde in der verbleibenden Zeit noch mehr Wert auf Übungen zur Rumpfstabilisierung gelegt.

Sonntag, 30.10.2016; Es ist so weit. Der Frankfurt Marathon steht an und ich stehe am Start.

Es ist frisch, vielleicht 7 oder 8°, jedoch bei strahlend blauem Himmel. Ich fühle mich gut vorbereitet, habe vier Gels für die Verpflegung dabei, plane mit einer Zielzeit von 3:45:00 h, also einem Schnitt von 5:20 min/km. Dann geht es los, ich starte mit einem Laufpartner aus dem Verein, doch er hat sich wohl umentschieden und will doch schneller als die 3:45:00 ins Ziel, nach ca. 2,5 km verabschiede ich mich und lasse ihn laufen, suche mir selbst mein Wohlfühltempo, das sich bei ca. 5:10 min/km einpendelt. Ich genieße die Atmosphäre an der Strecke, die Zuschauer – einige erkenne ich, als sie meinen Namen rufen – Marina und André, Cornell, Wolfgang, Thomas, …

WhatsApp Image 2016-10-30 at 12.38.51

Bis km 30 fühlt es sich gut an, sehr gut sogar, ich muss mich bremsen um nicht schneller zu werden, ich brauche die Kraft noch am Ende. Dann fängt es an, etwas zäher zu werden, bei km 35 stehen meine Frau und meine beiden Töchter, Ihre Rufe spornen mich an, noch 7km, ich versuche schneller zu werden, muss den Versuch aber aufgeben, noch 6km, noch 5km, ich hangle mich von km-Schild zu km-Schild, ab wann soll ich alles geben, sind 3:40:00 noch möglich? Plötzlich kommt Frank auf die Strecke gelaufen „Jürgen, Du hast es gleich geschafft. Du siehst etwas angestrengt aus, bist Du etwa gelaufen?“ :-D, spornt mich nochmals an und wünscht mir viel Erfolg. Ich beschleunige nochmals etwas und gebe alles was geht. Dann der Einlauf in die Festhalle, die Musik, die vielen Menschen, die Lichter, ich krame das #meinerstermarathon Band aus der Tasche, recke es in die Höhe und überquere die Ziellinie. GESCHAFFT!

Ich bin völlig außer Atem, langsam bewege ich mich in den Verpflegungsbereich, dehne Oberschenkel und Waden. Dann die Finisher-Medallie, 42,195 km in einer Zeit von 3:41:10. Ich bin sehr zufrieden, die Zielzeit unterboten, komplett durchgelaufen ohne Gehpausen (außer beim Trinken) und keine Schmerzen in den Gelenken oder der Muskulatur, auch der Rücken hat problemlos mitgemacht.

Im Verpflegungsbereich dann ein paar Becher Iso-Getränke, ein paar Apfelstückchen gegessen, etwas Mohnkuchen, alkoholfreies Weizenbier, mit den Vereinskollegen getroffen und abgeklatscht, dann zur Familie die mich schon freudig und stolz erwarten. Auf dem Weg zur S-Bahn merke ich schon, dass das Gehen etwas schwer fällt, Treppen steigen unangenehm ist und das Aufstehen nach dem Sitzen etwas länger dauert als sonst. Aber wie lautet der Spruch:

„Der Schmerz vergeht, der Stolz bleibt“


von jaybe am 30.10.2016 14:45


20.06.2020

Gerrit Kruse (MrGerardCruiz)

CentOS mit unklarem Supportstatus

LTS Distributionen sind für mich das Maß der Dinge. Lange Produktlaufzeiten, wenig Wartungsaufwand und hohe Funktions- und Laufzeitstabilität sind nicht nur im Servereinsatz wichtig. Trotz hunderter Distributionen gibt es nur wenige LTS-Varianten (siehe: Linux - Eine sichere Basis). Mit CentOS steht hier ein weiteres Projekt vor dem Ausfall.

Natürlich sind Arch, Manjaro, Tumbleweed und wie sie alle heißen tolle Projekte und für den individuellen Desktopeinsatz gut geeignet. Ich glaube auch gerne, dass viele nie oder nur extrem selten Probleme bei Updates haben. Sie taugen aber kaum für den wartungsarmen Masseneinsatz, wo der Anwender nicht selbst die Administration übernehmen kann oder will.

Es braucht diese ständigen Updates eigentlich auch nicht. Linux auf dem Desktop ist im Wartungsmodus (siehe auch: Kein Ubuntu 20.04 Test). Ob ich nun GNOME Shell 3.32 oder 3.28 verwende macht weder funktional, noch von der Stabilität einen Unterschied. Das gleiche gilt für Plasma, LibreOffice und viele weitere Projekte. Relevant sind über eine lange Laufzeit lediglich neue Treiber für neue Hardware (entweder über massive Kernel-Modifikation durch den Distributor oder neue Kernel-Versionen) und neue Browser-Versionen.

Ich habe deshalb - sofern der Anwender mit GNOME klar kam - CentOS auch für den Desktop immer gemocht. 10 Jahre Ruhe am System sind einfach eine Hausnummer. Im Serverbereich dürfte CentOS neben Ubuntu LTS und Debian ebenfalls für viele eine maßgebliche Rolle spielen.

Wie Michael Kofler in seinem Blog aber zu recht thematisiert fällt CentOS 8 inzwischen für den Produktiveinsatz eigentlich aus. 71 und 48 Tage ohne Updates sind indiskutabel. Das Projekt scheint hier leider auch nicht willens oder fähig etwas zu ändern.

Im LTS Bereich wird es jetzt eng. Die sehr lange Supportdauern von 10 Jahren bietet nun nur noch SLED gegen eine - preislich allerdings vollkommen akzeptable - Subscription. Wer mit circa 3-5 Jahren leben kann hat noch Debian, openSUSE Leap und Ubuntu LTS zur Auswahl. Viel ist das nicht mehr. Gegebenenfalls muss man sich wirklich mit Oracle Linux beschäftigen, auch wenn sich dabei alle Nackenhaare aufstellen.


Bilder:
Einleitungsbild und Beitragsbild von von mohamed Hassan via pixabay

"

von Gerrit (postfach@curius.de) am 20.06.2020 11:27


09.07.2017

Bjoern Schiessle (BeS)

Welcome to my new Homepage

Finally I moved my homepage a a complete static page powered by Hugo. Here I want to document some challenges I faced during the transition and how I solved them.

Basic setup

As already said I use Hugo to generate the static sites. My theme is based on Sustain. I did some changes and uploaded my version to GitLab.

I want to have all dependencies like fonts and JavaScript libraries locally, so this was one of the largest changes to the original theme. Further I added a easy way to add some share buttons to a blog post, like you can see at the end of this article. The theme also contains a nice and easy way to add presentations or general slide shows to the webpage, some examples can be seen here. The theme contains a example site which shows all this features.

Comments

This was one of the biggest challenges. I had some quite good discussion on my old blog powered by Wordpress so I don’t want to lose this feature completely. There are some solutions for static pages but non of these are satisfying. For example Staticman looks really promising. Sadly it only works with GitHub. Please let me know if you know something similar which doesn’t depend on GitHub.

For now I decided to do two things. By default I add a short text at the end of each article to tell people to send me a e-mail if they want to share or discuss their view on the topic. Additionally I can add to the meta data of each posts a link to a Friendica post. In this case the link will be added at the end of the article, inviting people to discuss the topic on this free, decentralised and federated network. I have chosen Friendica because it allows users to interact with my blog posts not only with a Friendica account but also with a Diaspora, GNU Social, Mastodon or Hubzilla account. If you have a account on one of these networks and want to get updates about new blog posts in order to participate in conversations around it, follow this Friendica account. I also created a more detailed description for people new to the world of free social networking.

Deployment

After all the questions above where answered and a first version of the new webpage was in place, I had to find a easy way to deploy it. I host the source code of my homepage on GitLab which has a nicely integrated CI service which can be used to deploy the webpage on any server.

Therefore we need to add a CI script called .gitlab-ci.yml to the root of the repository. This script needs to contain following (please adjust the paths):

image: publysher/hugo

before_script:
  - apt-get update
  - apt-get --yes --force-yes install git ssh rsync
  - git submodule update --init --recursive

pages:
  script:
  - hugo
  - mkdir "${HOME}/.ssh"
  - echo "${SSH_HOST_KEY}" > "${HOME}/.ssh/known_hosts"
  - echo "${SSH_PRIVATE_KEY}" > "${HOME}/.ssh/id_rsa"
  - chmod 700 "${HOME}/.ssh/id_rsa"
  - rsync -hrvz --delete --exclude=_ public/ schiesbn@schiessle.org:/home/schiesbn/websites/schiessle.org/htdocs/
  artifacts:
    paths:
    - public
  only:
  - master

We need to create a ssh key-pair to deploy the webpage. For security reasons it is highly recommend to create a ssh key used only for the deployment.

The variables SSH_HOST_KEY and SSH_PRIVATE_KEY need to be set at GitLab in the CI settings. SSH_PRIVATE_KEY contains the private ssh key which is located in the ~/.ssh directory.

To get the right value for SSH_HOST_KEY, we run ssh-keyscan <our-webpage-host>. Once we executed that command, we should see something similar to schiessle.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCtwsSpeNV.... Let’s copy this to the SSH_HOST_KEY value in our GitLab settings.

Finally we need to copy the public ssh key to the .ssh/authorized_keys file on the web-server to allow GitLab to access it.

Now we are already done. The next time we push some changes to the Github repository GitLab will build the page and sync it to the web-server.

Using the private key stored in the GitLab settings allows everyone with access to the key to login to our web-server. Something we don’t want. Therefore I recommend to limit the ssh key to only this one rsync command from the .gitlab-ci.yml file. In order to do this, we need to find the exact command send to the web-server by adding -e'ssh -v' to the rsync command.

Executing the rsync command with the additional option should result in something like:

debug1: Sending command: rsync --server -vrze.iLsfxC --delete . /home/schiesbn/websites/schiessle.org/htdocs/

we copy this command to create following .ssh/authorized_keys entry:

command="rsync --server -vrze.iLsfxC --delete . /home/schiesbn/websites/schiessle.org/htdocs/",no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7Sf/PDty0d0SQPg9b+Duc18RxPGaBKMzlKR0t1Jz+0eMhTkXRDlBMrrkMIdXJFfJTcofh2nyklp9akUnKA4mRBVH6yWHI+j0aDIf5sSC5/iHutXyGZrLih/oMJdkPbzN2+6fs2iTQfI/Y6fYjbMZ+drmTVnQFxWN8D+9qTl49BmfZk6yA1Q2ECIljpcPTld7206+uaLyLDjtYgm90cSivrBTsC4jlkkwwYnCZo+mYK4mwI3On1thV96AYDgnOqCn3Ay9xiemp7jYmMT99JhKISSS2WNQt2p4fVxwJIa6gWuZsgvquP10688aN3a222EfMe25RN+x0+RoRpSW3zdBd

Now it is no longer possible to use the private key, stored at GitLab to login to the web-server or to perform any other command than this specific rsync command.

Interesting observation

I run this static webpage now for a few weeks. During this weeks I got quite some email from people interested in some topic I write about in my blog. This are not new blog articles, but posts which where already online for quite some time. Somehow it looks like more people find this articles after the transition to a static site. Maybe search engines rate the static site higher than the old Wordpress page? I don’t know, maybe it is just a coincidence… but interesting.

von Björn Schießle (bjoern@schiessle.org) am 09.07.2017 09:04


08.04.2018

Gerrit Kruse (MrGerardCruiz)

Datenabfluss bei Facebook - Eine Nachbetrachtung

Bild von geralt via pixabay / Lizenz: CC0 Creative Commons

Facebook hatte jüngst mit schlechter Presse zu kämpfen. Länder- und medienübergreifend artikulierte sich massive Kritik an der Praxis wie dort mit Daten umgegangen wird. Manche Journalisten sehen darin die größte Krise in der nicht mehr ganz so jungen Geschichte des sozialen Netzwerks. Die Aktienmärkte sahen das vergangene Woche nicht unähnlich wenn man sich die Entwicklung des Kurses von Facebook anschaut.

Viele Datenschützer konnten sich eine gewisse Häme nicht verkneifen. Gehört umfassende Kritik an Facebook doch zum Standard-Repertoire von datenschutzbewussten Menschen (und solchen, die sich dafür halten). Die empfohlene Lösung war dann natürlich wie erwartet radikal. Verlasst endlich Facebook schallte es aus allen Kommentarspalten und Blogs.

In der Printausgabe der Süddeutschen Zeitung konnte man dazu vergangene Woche einen schönen Vergleich lesen. Sinngemäß ging es darum, dass die Aufforderung Facebook zu verlassen, weil man mit der Datenhandhabung moderner IT-Unternehmen unzufrieden ist, genau so erfolgversprechend ist wie das Essen einzustellen, weil man mit der Lebensmittelindustrie unzufrieden ist. Konsequent aber letztlich aussichtslos weil es an der Lebenswirklichkeit vorbei geht.

Genau dies beschreibt den Einfluss der Datenschützer auf das Verhalten der Masse. Radikal, konsequent und weitestgehend ignoriert, da wirklichkeitsfern. Bei diesem Thema und bei vielen anderen auch.

Es ist keineswegs so, dass Facebook das Verlangen für sein Produkt erst bei den Menschen wecken musste. Etwas was man den Silicon Valley Firmen gerne nachsagt. In einer hochgradig mobilen Gesellschaft bedient Facebook einfach ein Bedürfnis. Es vereinfacht soziale Vernetzung über große Zeiträume und Distanzen einfach enorm, viele Menschen leben halt nicht mehr in einer Welt, in der man alle Freunde im Vereinslokal trifft. Ein Verlassen des sozialen Netzwerks ist daher für viele Anwender mit einem nicht unerheblichen sozialen Einschnitt verbunden. Das betrifft nicht nur die Selbstdarsteller auf der Timeline, sondern eben auch die Gruppen und den Messenger.

Außerdem ist ein großer Trugschluss, dass man Facebook einfach den Rücken kehren kann. Man muss auch alle zugehörigen Dienste, am bekanntesten darunter sind sicher WhatsApp und Instagram, verlassen und trotzdem kann Facebook über die Vernetzung mit unzähligen Internetseiten - der Like-Button macht es möglich - noch ein Profil erstellen.

Letztlich übt man sich zwar in digitaler Selbstverstümmelung, erzielt aber nicht mal den erwünschten Effekt.

Zielführender sind da sicher Maßnahmen wie der kürzlich vorgestellte Mozilla Facebook Container. Er ermöglicht Teilhabe aber kontrolliert ein bisschen besser, was Facebook außerhalb des Netzwerks noch über einen sammeln kann. Viele weitere Maßnahmen wie ein Mehr-Browser-Konzept, sinnvoll ausgewählte Addons und reflektierte Handhabung des Netzwerks können es Facebook erschweren unerwünscht Daten zu sammeln.

Keine dieser Maßnahmen hätte den Datenabfluss von Facebook an Dritte verhindern können. Es ist auch nicht die Aufgabe des Bürgers paranoid seine Aktivitäten gegenüber den IT-Giganten zu verschleiern, sondern die Politik muss die Daten der Bürger entschieden gegen Missbrauch schützen und Verstöße hart bestrafen. Dafür kann der Bürger an der Wahlurne stimmen. Einfach mal bei der Wahl den Digitalthemen mehr Priorität einräumen, anstatt in den Kommentarspalten gegen Facebook zu wettern. Die deutsche Regierung ist nämlich keineswegs so rigoros im Datenschutz, wie sie sich jetzt medial gibt.

von Cruiz (mailer@curius.de) am 08.04.2018 13:05


01.02.2009

Bjoern Schiessle (BeS)

An awesome event is over: KDE 4.2 Release Party and Fellowship Meeting at Stuttgart

At Friday, 30.Jan.09 we had a joint event between KDE and the Fellowship of the Free Software Foundation Europe (FSFE) and it was simply awesome! Beside a lot of KDE and FSFE people we had a lot of visitors and at the end we were about 40 people! All interested in KDE 4.2 and Free Software.

At the beginning Frederik started with an introduction and showed all the new and cool things in KDE 4.2. After that i gave a talk about the work of FSFE, especially in 2008, explained the role of the Fellowship for FSFE and highlighted some cool activities from our Fellows. My slides can be found here (German). I think i could attract some people and would be really happy to see some new faces at our next Fellowship meeting (probably somewhen in March). If you don’t want to miss it, subscribe to our mailing list for South Germany.

After my talk we made a small break and than Frank continued with a very interesting talk about the KDE community and how to get involved as a developer, writer, artist or user. Last but not least Sven talked about the new version of Amarok and what we can expect from the new release.

This was the official part. Now the party started and we had a lot of fun and many interesting discussions between KDE developers and users, FSFE Fellows and all the other people who joined us at this evening. We also discussed some possible activities for the Fellowship Group Stuttgart. Some Fellows seems to be quite interested in the topic “Free Software in school and education”. I also think that this is a really important topic. Remember, the pupils from today are the decision makers from tomorrow.

As it becomes later a small group of people survived. One of them was Martin Konold, a KDE Developer from the very first days of KDE. He told us a lot of interesting and funny stories about the beginning of KDE and the development of the Free Software desktop.

At 2:30 at night a great event was over. I really want to thank Frederik for his great help in organising this event and all the other KDE people who helped to make this event that awesome! It was a lot of fun and a great cooperation between KDE and FSFE people! Looking forward for the next opportunity to organise such a great event!

More pictures can be found here.

von Björn Schießle (bjoern@schiessle.org) am 01.02.2009 16:30


04.07.2018

(Meillo)

2018-07-05

2018-07-05



A new ssh login attack wave after the previous one had ended ...




http://marmaro.de/lue/        markus schnalke <meillo@marmaro.de>

04.07.2018 22:00


07.12.2019

Malte Kiefer (beLI3VeR)

Threema Lizenzen zu verschenken

Wie in den letzten Jahren werde ich auch dieses Jahr wieder Threema Android Lizenzen verschenken. Dieses Jahr werde ich 5 Lizenzen verschenken. Dazu erhalten die Gewinner oder Glücklichen von mir einen Lzenzschlüssel, mit dem sie auf der Webseite von Threema dann den Android Client nach Eingabe des Lizenzschlüssel herunterladen können.

Es ist nicht möglich, damit Threema vom PlayStore sondern nur aus dem Threema Store herunterzuladen.

Teilnahme

Die Teilnahme ist ganz einfach. Die ersten 5 Nutzer die mich via XMPP / Jabber anschreiben wird (pr3ach3r@trashserver.net) und die folgenden Fragen richtig beantworten kann:

1.) Aus welchem Land kommt Threema? 2.) Was bedeuten die 3 grünen Punkte bei einem Threema Kontakt? 3.) Was ist der Threema Safe?

Ich freue mich auf eure Einsendungen. Ich möchte festhalten ich stehe in keine Zusammenhang mit Threema. Ich kaufe die Lizenzen zum vollen Preis und dieses soll auch keine Werbaktion für mich oder Threema sein. Ich will nur einen kleinen Teil zu mehr Datenschutz und Sicherheit beitragen.

von Malte Kiefer (malte.kiefer@mailgermania.de) am 07.12.2019 00:00


18.01.2019

(thoys)

Sprachassistenten und Datenschutz

https://www.heise.de/newsticker/meldung/Datenkraken-im-Wohnzimmer-Ist-die-Privatsphaere-noch-zu-retten-4270545.html

Momentan werden sämtliche (fast) Spracheingaben an die Hersteller übermittelt und dort verarbeitet. Dieser Artikel zeigt, dass es auch anders gehen könnte.

von Timotheus am 18.01.2019 21:01


07.03.2018

(Meillo)

2018-03-08

2018-03-08



If you want PCRE on the command line but your  grep(1)  does  not
offer  `-P'  (*not* offering it is what it *should* do!), you can
use this one:

     perlgrep() {
             perl -e 'my $re = shift; print grep { /$re/ } <>;' "$@"
     }

[0]



Discovered  some interesting facts about the GIF format.  [1] You
*are* able to use more than 256 colors, just not within one block
...  but  you can use multiple blocks for building True Color GIF
images!


[0]  https://debianforum.de/forum/viewtopic.php?f=34&t=168942#p1167421
[1]  https://debianforum.de/forum/viewtopic.php?f=29&t=168943&p=1167436#p1167436


http://marmaro.de/lue/        markus schnalke <meillo@marmaro.de>

07.03.2018 23:00


18.01.2013

Vinzenz Vietzke (vinz)

Tor und Tor-Browser in Fedora 17/18 installieren

Jamie Nguyen hat Tor und Tor-Browser für Fedora paketiert. Um diese Pakete über sein Repository zu bekommen, installiert ihr euch entweder das Release-Package oder macht das von Hand:

wget https://jamielinux.com/pub/jamielinux-tor-release.noarch.rpm
yum install ./jamielinux-tor-release.noarch.rpm

Danach installiert ihr alle nötigen Pakete, aktiviert und startet Tor. Alle Pakete sind GPG-signiert.

yum install tor tor-browser tor-browser-selinux
systemctl enable tor.service
systemctl start tor.service

Optional könnt ihr mit "tor-browser-selinux" die Unterstützung für SELinux installieren.

von vinzv am 18.01.2013 09:52


25.07.2017

Christian Schmitt (slater)

WTF

16 Grad C im Juli!???!

von Slater am 25.07.2017 09:02


23.03.2020

(thoys)

Corona? Da gibts doch sicher was von Moodle

Dann folge ich doch mal dem Aufruf von Jürgen von BITBlokes und haue in die Tasten.
Ich bin Medieninformatiklehrer an einer einzügigen Privatschule und meine Coronaferien (achtung Sarkasmus) begannen folgendermaßen:

Am Freitag, den 13. März wurde klar, dass Präsenzunterricht an unserer Schule die nächsten Wochen nicht mehr stattfinden wird.

Freitag 13. März, ab 19 Uhr
Die Lernplattform Moodle (Learning Management Plattform) wurde aus anderen Gründen bereits auf unserem neuen Server installiert, jedoch in keiner Weise konfiguriert. Diese Arbeit stand nun an und es zeigt sich, dass keine Benutzer/innen, außer dem Admin, in Moodle registriert sind.
Fachlich: Keine LDAP-Anbindung an unsere bestehende Benutzerdatenbank.

Samstag 14. März
Die Konfiguration von Moodle stand im Vordergrund. Es ist nachvollziehbar, dass sich das Gefühl von „wir haben nur eine Chance“ im Bauch breit machte. Denn eine nicht funktionierende Plattform wäre nach wenigen Tagen so leer, wie unsere Schulgebäude.
Es findet eine Gesamtkonferenz statt, die Beschließt, dass Moodle offiziell zur Lernplattform wird.

Sonntag 15. März
Von nun an sind Mitglieder der Schüleradmins tatkräftig mit an Bord. Die Daten der Schüler/innen der Oberstufe und die Zugangsdaten der Lehrer/innen werden aufbereitet und in Tabellen übertragen, damit sie in Moodle eingefügt werden können.
Fachlich: CSV Dateien mit der richtigen Syntax erstellen.
Ohne die LDAP Anbindung haben wir keinen Zugriff auf aktuelle Passwörter des Schüler-Lehrer-Netzwerks. Zudem werden nur bestimmte Arten von Nachrichten von Moodle per Mail versendet, andere stranden im Postausgang. Mit viel Hirnschmalz, viel Einsatz und wenig Mittagessen wurden jedoch alle Probleme soweit gelöst oder umgangen, dass am Montag die Schüler/innen und Kolleginnen kommen können.
Stand jetzt: Die Plattform und die App, sowie die Bedienung per Browser funktionieren für Schüler/innen und Lehrer/innen. Alle, in der Oberstufenkonferenz besprochenen Kurse, sind angelegt und mit den entsprechenden Trainern (Ausdruck für Lehrer/innen in Moodle) versehen.

Montag 16. März
8:30 Uhr
Die Schüler/innen kommen. Jeweils eine Halbe klasse zur Installation und Einrichtung der App und die andere Hälfte zur Einführung in die Bedienung von Moodle am Computer. Nach einer halben Stunde werden die Gruppen getauscht und nach wieder eine halben Stunde kommt die nächste Klasse.
Was ist das eigentlich: Pause?

13:30 Uhr
Bis auf wenige Ausnahmen installierten alle Schüler/innen der Oberstufe die App, änderten ihr Passwort und lernten den rudimentären Umgang mit Moodle.

14:15 Uhr
Erste Schulung der Kolleg/innen.

17:45 Uhr
Vorstandssitzung – hier wurden im Vorgespräch und auch während des Sitzung mögliche Datenschutzbedenken durch Moodle in den Blick genommen. Da die Plattform auf unserem eigenen Server läuft und auch das Nachrichtensystem das eigene Haus nicht verlässt, deckt unser – in dieser Konferenz verabschiedete – allgemeines Datenschutz-Konzept alle datenschutzrechtlichen Bedenken ab.

Dienstag 17. März
Die ersten Schüler/innen starten in die Kurse, schreiben Nachrichten mit Fragen und geben erste Ergebnisse ab. Es scheint vieles zu funktionieren – Puh!
Eine zweite, gut besuchte Einführung für Lehrer/innen findet statt.
Kurse werden mit viel Fleiß von Lehrer/innen mit Inhalten befüllt und Schüler/innen arbeiten sich in die Plattform und die Inhalte ein.

Mittwoch 18. März
Verschnaufen von Seiten der Moodle-Verantwortlichen. Die Plattform läuft nicht perfekt, aber sie läuft so gut, dass sie genutzt werden kann. Ausschlafen!

Die Todo-Liste beinhaltet nun die Hilfestellung für Lehrer/innen und Schüler/innen und die Beschäftigung mit der Technik hinter Moodle. Backup, PHP- und andere Server-Einstellungen und die Konfigurationen der Plattform werden nun in Ruhe angegangen.

Donnerstag 19. März
Es läuft einfach.

Freitag 20. März
07:20 Uhr
„The service is not available. Please try again later.“
Das bedeutet so viel, wie die Hölle friert ein. Moodle ist down. Aber die Supportfirma das erste Mal in der Woche erreichbar. Schön ist, dass sie vor 10 Minuten noch ging, die Ausfallzeit ist also gering, wenn es jetzt schnell repariert wird. Bis ca. 12:30 Uhr.

Mal sehen, wie es weiter geht….

Bildquelle von Wikipedia: Von Moodle.org – https://moodle.org/logo/ https://moodle.org/logo/moodle-logo.svg, GPL, Link

von Timotheus am 23.03.2020 16:08


24.03.2014

Manuel Kaderli (suntsu)

Be careful using ThreadStatic in Visual Studio unit tests

Given is a ThreadStatic field which is set to empty in the static constructor, and set by a public instance method:

    public class TestClass
    {
        [ThreadStatic] 
        private static string threadStaticValue;
        static TestClass()
        {
            threadStaticValue = "";
        }
        public void SetThreadStaticValue(string value)
        {
            threadStaticValue = value;
        }
        public string GetThreadStaticValue()
        {
            return threadStaticValue;
        }
    }

Now two unit tests check whether the threadStaticValue is set correct.

    [TestClass]
    public class ThreadStaticTest
    {
        [TestMethod]
        public void WithThreadStaticValueSetTest()
        {
            Debug.WriteLine("Thread id: {0}", System.Threading.Thread.CurrentThread.ManagedThreadId);
            TestClass tc = new TestClass();
            tc.SetThreadStaticValue("foo");
            Assert.AreSame(tc.GetThreadStaticValue(), "foo");
        }
        [TestMethod]
        public void WithThreadStaticValueNotSetTest()
        {
            Debug.WriteLine("Thread id: {0}", System.Threading.Thread.CurrentThread.ManagedThreadId);
            TestClass tc = new TestClass();
            Assert.AreSame(tc.GetThreadStaticValue(), "");
        }
    }

Those tests will fail(good) or pass(bad) depending of whether the test engine will reuse the same thread.

Executed a second time, the result could be different.

Solution:

  1. Don't use ThreadStatic at all
  2. Make sure the ThreadStatic fields are initialized correctly before using them

von suntsu (nospam@example.com) am 24.03.2014 11:28


13.11.2017

Christian Schmitt (slater)

Amazone Prime Video mit Linux Mint

Hej zusammen…

Ich habe heute mit meiner frischen installation von Linux Mint gekämpft… Prime Vido wollte nicht so wie ich es wollte…

Erst mal das was nicht geklappt hat:

Die ganzen Tips mit installiere HAL Lib über verschiedene wege…
Silverlight mit Wine…
Diverse Einstellung (hatten auch alle mit hal-libery zu tun)

Geholfen hat zum Schluss Mint selber!

Über das Start-Menü habe ich den Menüpunkt Multimedia ausgewählt. Dort wurde angeboten das Mint alles was Multimedia zu tun hat von alleine installiert… Jetzt läuft das mit Amazone Prime Video. Leider weiß ich nicht was alles am System jetzt geändert wurde von alleine… Mehdienwiedergabe, Rythmbox und VLC Player sind als einziges über das Multimedia Menü zusätzlich sichtbar und vorerst die einzigen Änderung die durchgeführt wurden.

Wenn ich noch was finde, was geädert wurde, werde ich es hier aktualisieren…

von Slater am 13.11.2017 19:00


08.05.2018

Malte Kiefer (beLI3VeR)

Kommentare mit Github

Ich bin ein großer Freund vom Datenschutz, leider unterstützt Hugo nur disqus, was alles andere als freundlich zum Datenschutz ist. Also gab es die letzten Monate nie eine Kommentar Funktion, das hat sich jetzt geändert.

Ich bin durch Zufall auf den Artikel von Don Williamson gestoßen, der es mir erlaubt eine Kommentar Funktion für meine Artikel durch Github anzubieten.

Konfiguration

Als erstes legen wir eine Datei comments.html im Ordner themes/THEME_NAME/layouts/partials/ mit folgenden Inhalt an:

<div id="gh-comments">
          <h2>Kommentare</h2>
              <div id="gh-comments-list"></div>
                  <a href="javascript:void(0)" id="gh-load-comments" class="btn" style="display:none">Load more comments</a>
</div>

   <script type="text/javascript" data-ghid="{{ $.Params.ghcommentid }}" src="{{ .Site.BaseURL }}js/github-comments.js"></script>

Als nächstes brauchen wir jetzt noch die JS Datei, die für uns die ganze Arbeit macht themes/THEME_NAME/static/js/github-comments.js mit folgenden Inhalt:

// use of ajax vs getJSON for headers use to get markdown (body vs body_htmml)
// todo: pages, configure issue url, open in new window?
//

var this_js_script = $('script[src*=github-comments]');


var ghid = this_js_script.attr('data-ghid');   
if (typeof ghid === "undefined" ) {
   var ghid = '0';
}

DoGithubComments(ghid);

var CurrentPage = 0;

function ParseLinkHeader(link)
{
    var entries = link.split(",");
    var links = { };
    for (var i in entries)
    {
        var entry = entries[i];
        var link = { };
        link.name = entry.match(/rel=\"([^\"]*)/)[1];
        link.url = entry.match(/<([^>]*)/)[1];
        link.page = entry.match(/page=(\d+).*$/)[1];
        links[link.name] = link;
    }
    return links;
}

function DoGithubComments(comment_id, page_id)
{
    var repo_name = "beli3ver/malte-kiefer.de";

    if (page_id === undefined)
        page_id = 1;

    var api_url = "https://api.github.com/repos/" + repo_name;
    var api_issue_url = api_url + "/issues/" + comment_id;
    var api_comments_url = api_url + "/issues/" + comment_id + "/comments" + "?page=" + page_id;

    var url = "https://github.com/beli3ver/malte-kiefer.de/issues/" + comment_id;

    $(document).ready(function ()
    {
        $.getJSON(api_issue_url, function(data) {
            NbComments = data.comments;
        });

        $.ajax(api_comments_url, {
            headers: {Accept: "application/vnd.github.v3.html+json"},
            dataType: "json",
            success: function(comments, textStatus, jqXHR) {

                // Add post button to first page
                if (page_id == 1)
                    $("#gh-comments-list").append("<a href='" + url + "#new_comment_field' rel='nofollow' class='btn'>Füge eine Kommentar hinzu</a>");

                // Individual comments
                $.each(comments, function(i, comment) {

                    var date = new Date(comment.created_at);

                    var t = "<div id='gh-comment'>";
                    t += "<img src='" + comment.user.avatar_url + "' width='24px'>";
                    t += "<b><a href='" + comment.user.html_url + "'>" + comment.user.login + "</a></b>";
                    t += " posted at ";
                    t += "<em>" + date.toUTCString() + "</em>";
                    t += "<div id='gh-comment-hr'></div>";
                    t += comment.body_html;
                    t += "</div>";
                    $("#gh-comments-list").append(t);
                });

                // Setup comments button if there are more pages to display
                var links = ParseLinkHeader(jqXHR.getResponseHeader("Link"));
                if ("next" in links)
                {
                    $("#gh-load-comments").attr("onclick", "DoGithubComments(" + comment_id + "," + (page_id + 1) + ");");
                    $("#gh-load-comments").show();
                }
                else
                {
                    $("#gh-load-comments").hide();
                }
            },
            error: function() {
                $("#gh-comments-list").append("Kommentarfunktion für diesen Beitrag nicht aktiviert!");
            }
        });
    });
}

Jetzt müssen die Links in der Datei angepasst werden. Ihr müsst eine eigne Repo anlegen bei Github und hier in der Datei anpassen. Achtung: Wir brauchen auch jQuery!. jQuery sollte umbedingt im <head></head> geladen werden.

Zum Schluss noch das Template für die Beitragsdatei anpassen (themes/THEME_NAME/layouts/_default/single.html) und den folgenden Teil for dem Aufruf des <footer></footer> Tags einfügen:

{{ partial "comments.html" . }}

Um jetzt die Kommentarfunktion zu nutzen, ein entsprechendes issue bei Github eröffnen, die ID merken. Wenn ihr dann einen neuen Beitrag erstellt, müsst ihr vor den "---" folgendes einfügen:

ghcommentid: ID

Und das wars, nun habt ihr und ich eine Kommentarfunktion.

CSP

Damit ihr diese Funktion mit CSP nutzen könnt, müssen folgende Einstellungen gesetzt sein:

img-src 'self' https://*.githubusercontent.com;
connect-src 'self' https://*.github.com

von Malte Kiefer (malte.kiefer@mailgermania.de) am 08.05.2018 00:00


24.06.2016

Helmut Roewer (Dunkelangst)

HKG✈KHH

Trip 35

Flight KA 450 from HKG to KHH

  • Flight 89: Hong Kong International Airport to Kaohsiung International Airport
  • Airbus A 330-300 – Dragonair
  • planed duration: 1h 25min
  • See also the itinerary to get an overview.

von Helmut am 24.06.2016 19:46


18.08.2010

Jürgen Braun (jaybe)

Android Tablet

Auch wenn ich den Hype um das Apple iPad nicht nachvollziehen kann (es funktioniert gut und sieht schick aus, ist mir aber zu teuer und bevormundet einen bei der Nutzung), so finde ich das Konzept eines Tablets doch ganz reizvoll. Wichtig ist jedoch, dass man sich über den Einsatzzweck klar wird. Für mich soll es keinen Ersatz für PC/Notebook/Netbook darstellen, sondern ein Gerät sein, mit dem man gemütlich auf der Couch seine Mails checken, in Foren stöbern, Facebook Nachrichten lesen, … also hauptsächlich Daten im Internet konsumieren kann.
Für 179.-€ war nun ein Tablet mit Android 2.1 angekündigt. Die Beschaffung gestaltete sich ein wenig schwierig und dauerte etwas länger, da das Gerät nicht wie angekündigt bereits montags erhältlich war, sondern erst eine Woche später als verfügbar gelistet wurde und bestellt werden konnte. In der Zwischenzeit waren auch erste Erfahrungsberichte von Benutzern aufgetaucht. Die Bandbreite war gewohnt groß und begann bei „der letzte Schrott“. Das folgende Fazit eines Benutzers ermutigte mich jedoch dazu, mir solch ein Gerät zu bestellen:

..ich sags mal ganz unverblümt
Das Ding ist nichts für Leute die den Ipad Killer erwartet haben und davon ausgehen das alles „out of the box“ für €179.- funktioniert..

Für alle anderen, die spaß an linux haben, lässt sich da sicher noch einiges machen bzw. fehlende funktionen nachrüsten.

Am Wochenende wurde das Gerät dann geliefert, die Inbetriebnahme musste jedoch bis Sonntag Abend warten.
Einloggen in das WLAN, Einrichten von Googlemail, Zugriff auf den eigenen Mailserver, Surfen im Web und die installierten Applikationen für Google Maps und YouTube funktionierten problemlos. Das Touch-Display lässt sich schwer bedienen, vor allem das Scrollen ist etwas umständlich, mit resistiver Technologie aber auch nur schwer umsetzbar, das funktioniert bei meinem Garmin-Navi aber auch nicht besonders.
Hardware

Billig wirkendes Plastik, vier Buttons auf der Gehäuserückseite für Zurück, Home, Suchen und Menü fühlen sich nicht besonders an und man muss sich die Position merken, da man sie nicht sieht.
Software

  • Browser: Eingabe über Touchscreen hakelig auch bei Verwendung des Eingabestiftes. Lädt und stellt die Webseiten recht flott dar.
  • Mail: Konfiguration von mehreren Mailservern möglich, Zugriff per POP3 oder IMAP
  • Google Maps: schnelle Darstellung der Karten, Layer für Satellitenbild und Wikipedia einblendbar. Bei Wikipedia werden „W“s eingeblendet, auf die man direkt klicken und Infos aus Wikipedia abrufen kann
  • Google Mail: direkte Verknüpfung mit meinem Google Mail Account, funktioniert einfach.
  • YouTube Player: direkte Verknüpfung mit meinem YouTube Account: Playlisten, Favoriten, … werden angezeigt. Suche ist möglich, Abspielen in voller Auflösung funktioniert sehr gut.
  • Android Market: Zuerst nicht gestartet, dann zwar gestartet, man konnte suchen und „installieren“, der Download kommt aber nicht zum Ende und es wird nichts installiert. Ein bekanntes Problem, es liegt wohl keine offizielle Google-ID vor.

Bisheriges Fazit: Wenn man nicht tippen muss, sondern sich auf Lesen/Sehen/Hören beschränkt, funktioniert das Tablet. Für die eingeschränkte mitgelieferte Software hätte ich es wohl nicht gekauft, ABER es gibt eine Seite mit Howtos, da wird erklärt, wie man das Gerät patchen, den Market aktivieren, auf alternative Markets umsteigen oder direkt die APKs installieren kann. Und wenn das dann funktioniert, kann es ein ganz brauchbares Gerät werden.


von jaybe am 18.08.2010 18:24


29.12.2011

Manuel Kaderli (suntsu)

Authenticate to smugmug with oAuth and c#

Some weeks ago, i tried to create a windows phone 7 smugmug app(photo browser). I had some problems with oAuth at the beginning, First, I tried the google oAuth implementation in c# with the result that the first request(AcquireRequestToken) worked, but the second request(AcquireAccessToken) failed with an invalid signature. Then i tried to implement it myself with the same result.

Even with the smugmug oAuth documentation, i found it quite hard to get it done. Some parts like the authorize parameters(public/full/read/modify) i had to figure out myself.

After some time, i found an c# oAuth class written for twitter access for cropperplugins.codeplex. With this code, i was at least able to get a proper AccessToken for smugmug. I've written a little demo application if someone else has the same problems.

To get this sample working, you only have to set you apiKey and secret. This sample will do: 1. Get a request token and a request token secret 2. Authorize the request token 3. With the request token secret, acquire a access token 4. This access token and access token secret are used for all further authentication, and should not expire until the user revokes them.

        private void AuthenticateSmugmug()
        {
            const string apiKey = "YOURAPIKEY";//apikey from your smugmug account
            const string secret = "YOUR_SECRET";//secret from your smugmug account

        Console.WriteLine("Create new instance of OAuth Manager");
        Manager manager = new Manager(apiKey, secret);

        Console.WriteLine("Aquire a request token from smugmug");
        OAuthResponse requestToken = manager.AcquireRequestToken("http://api.smugmug.com/services/oauth/getRequestToken.mg", "GET");

        string oauthToken = requestToken["oauth_token"];
        Console.WriteLine(string.Format("oauthToken: {0}", oauthToken));
        string oauthTokenSecret = requestToken["oauth_token_secret"];
        Console.WriteLine(string.Format("oauthTokenSecret: {0}", oauthTokenSecret));

        //Opens your default browser and authorize your request token
        //Parameters: Access=[Public|Full], Permissions=[Read|Add|Modify]
        System.Diagnostics.Process.Start(string.Format("http://api.smugmug.com/services/oauth/authorize.mg?oauth_token={0}&Access=Full&Permissions=Modify", oauthToken));

        Console.WriteLine("Please enter you credentials into the browser before continuing");
        Console.WriteLine("Press any key to continue...");
        Console.ReadLine();

        OAuthResponse accessToken = manager.AcquireAccessToken("http://api.smugmug.com/services/oauth/getAccessToken.mg", "GET", oauthTokenSecret);

        Console.WriteLine(string.Format("accessToken: {0}", accessToken["oauth_token"]));
        Console.WriteLine(string.Format("accessTokenSecret: {0}", accessToken["oauth_token_secret"]));
        Console.WriteLine("Press any key to quit the application");
        Console.ReadLine();
    }

This is the complete source code for the oAuth sample. It's c# written in Visual Studio 10: To get this sample working, just enter your Api Key and Secret. SmugmugOAuthSample.zip

von suntsu (nospam@example.com) am 29.12.2011 09:31


11.06.2020

Darian (thoys)

Projektstart – die Ausgangssituation

Am Anfang eines jeden Projekts muss man erst einmal schauen, was überhaupt Stand der Dinge ist. Also machen wir das mal und schauen, wo ich Funkverbindungen benutze, bevor ich starte, meine Funk-Bilanz zu reduzieren. Ich zeige euch meinen Arbeitsplatz und mein Zuhause. Denn an meinem Arbeitsplatz stehen zwar die meisten Geräte, aber mittlerweile nutze ich fast in jedem Raum ein Gerät, das einem den Alltag versüßt.

Mein Arbeitsplatz und mein Zuhause

Ich habe einen aufgeräumten Arbeitsplatz. Das brauche ich, sonst versinke ich im Chaos. Einiges ist noch mit Kabel verbunden, beispielsweise die Tastatur, die Maus und der Lautsprecher am Bildschirm.
An Funktechniken verwende ich:

  • DECT (Hausintern – Schnurlostelefon)
  • W-LAN (Hausintern – Daten vom Router)
  • Bluetooth (Nahbereich – Verbindungen zu Kopfhörern, Lautsprechern usw.)
  • 1G – 4G Mobilfunk (Fernbereich – Das durchgestrichene Flugzeug soll in diesem Fall die Verbindung zum Mobilfunkturm ohne Mobile Daten darstellen)
  • Mobile Daten (Fernbereich – Daten von Mobilfunktürmen)
Mein Arbeitsplatz und die verwendeten Funktechniken

Viele andere Geräte sind per Funk mit Sendern im Haus oder mit dem Funkturm verbunden. Es ist viel, aber es hält sich noch im Rahmen dessen, was heute als normal gilt – oder?

  1. An erster Stelle steht natürlich das Smartphone. Funkverbindung (4G) und Mobile Daten sind an. Für Zuhause ist das W-LAN und Bluetooth für den Kopfhörer aktiviert.
  2. Mein Smartphone und die genannten Verbindungen sind immer an – somit bin ich immer erreichbar.
  3. Das Handy von meinem Nebenjob ist alt aber funktioniert zum Telefonieren wunderbar und der Akku hält mehrere Tage – es kann ja auch nichts.
  4. Das Notebook ist per W-LAN mit dem Router zwei Stockwerte weiter unten verbunden, Bluetooth für die Kopfhörer und UMTS (3G).
  5. Das Tablet ist ebenfalls mit W-LAN verbunden und hat ab und zu Bluetooth an.
  6. Das Schnurlostelefon arbeitet mit DECT. Damit habe ich mich noch nicht weiter beschäftigt.
  7. Der Drucker ist ebenfalls per W-LAN eingebunden, er kann auch Bluetooth, aber das habe ich noch nie verwendet.
  8. Das W-LAN ist beim Router immer eingeschaltet.
  9. Ich habe einen Receiver für den Fernseher, der ebenfalls per W-LAN eingebunden ist.
  10. Die Musik kommt per Spotify.
  11. Ich habe ein Medienwiedergabegerät von Noxon, dies hat eine Antenne und auch W-LAN.
  12. Meine Internetgeschwindigkeit ist mit 50 Mbit/s ganz ordentlich für meine Gegend. Wenn ich schnelleres haben wollte, wäre das noch möglich. Den Stadtwerken sei dank, die Telekom hat nur 6 Mbit/s hinbekommen – abgesehen von Hybrid Tarifen, bei denen Kabel und 4G – Funk gemeinsam genutzt wird.
  13. Alle Programme, die auf dem Handy laufen (Messenger, soziale Medien und praktische Programme, wie der Bahn-Navigator) nutze ich ausschließlich auf dem Smartphone.
  14. Vor dem Fenster sehen wir in 150 Metern den nächsten Funkmast. Wir haben schnelles Internet per Mobile Daten.

Ich habe als 6 W-LAN Endgeräte, einen W-LAN Router, 4 Endgeräte mit Bluetooth und einen nahestenden Funkmast. Dazu zwei Geräte, die per Funkverbindung zum Funkturm Telefonieren und ein Schnurlostelefon.

Projektstart

Termin

Mein Plan ist, dass ich in zu allererst schaue, was ich durch Einstellungen von Geräten und durch kleine Verhaltsänderungen meinerseits machen kann.

Los gehts am 1. Juli.

Folgt mir per Mail oder RSS und sagt mein Projekt euren Freunden weiter. Je mehr Menschen mir Tipps geben können, umso besser. Und natürlich freue ich mich auf deine Meinung, denn manches wird ganz einfach und manches etwas… sagen wir, nicht-alltagstauglich werden.

Wie sieht’s bei euch so aus? Schreibt’s mir in die Kommentare!

-<-,–{@ Euer Darian

von Darian am 11.06.2020 07:09


14.11.2016

Sebastian Feltel (feltel)

Identitätsdiebstahl auf pi-news.net

Wie ich durch eine Google-Suche erfahren musste, gibt es auf der rechtspopulistischen und in *GIDA-Kreisen beliebten Webseite pi-news.net * ein Fakeprofil mit meinem vollen Namen. Mit diesem Profil wurden und werden weiterhin zahlreiche Kommentare gepostet, von deren Inhalt, Zielrichtung und Tonalität ich mich in entschiedener Weise distanzieren möchte. Das Profil wurde selbstredend nicht durch mich […]

von feltel am 14.11.2016 18:56


03.08.2017

Sebastian Feltel (feltel)

(fast) zwei Jahre Sachspendenzentrale

Mit dem heutigen Tage endet -vorerst- mein fast zweijähriges ehrenamtliches Engagement in der Leipziger Sachspendenzentrale. Es endet nicht, weil ich nicht mehr helfen möchte oder ich darin keinen Sinn mehr sehen würde, auch nicht weil es keine Hilfebedürftigen oder Sachspenden mehr gäbe. Nein, es endet, weil zum 31.07. die einzige Angestellte des Trägervereins, die sich […]

von feltel am 03.08.2017 15:19


Willkommen!
Forum
Chat
Wiki/Tipps
Planet
Bildergalerie
Links
Twitter
dieses und jenes
Blogger
(BigOlly) (feed)
(Lord_Carlos und mweinelt) (feed)
(Meillo) (feed)
(Trurl) (feed)
(c3f2o) (feed)
(emge) (feed)
(thoys) (feed)
(trompetenkaefer) (feed)
Andre Nitschke (gnude) (feed)
Axel Hellinger (cryptolegal) (feed)
Beni Goll (Bennerl) (feed)
Bernd Dau (whisper) (feed)
Bert Radke (bert) (feed)
Bjoern Schiessle (BeS) (feed)
Christian Imhorst (immi) (feed)
Christian Schmitt (slater) (feed)
Christoph Langner (Chrissss) (feed)
Christoph Wickert (raoul) (feed)
Daniel Gestl (mcdaniels) (feed)
Darian (thoys) (feed)
Dominik George (Natureshadow) (feed)
Dominik Kupschke (bommi) (feed)
Dominik Pieper (nachtwandler) (feed)
Felix Schmeing (gimbar) (feed)
Gerrit Kruse (MrGerardCruiz) (feed)
Helmut Roewer (Dunkelangst) (feed)
Hendrik Richter (Hendi) (feed)
Holger Reinmann (codeaeffchen) (feed)
Jan Hauke Rahm (jhr-online) (feed)
Jochen Skulj (feed)
Jochen Welzel (jeff84) (feed)
Joerg Kastning (Tronde) (feed)
Jörg Kruse (4A4B) (feed)
Jürgen Braun (jaybe) (feed)
Lars Moelleken (voku1987) (feed)
Malte Kiefer (beLI3VeR) (feed)
Malte Schmidt (maltris) (feed)
Manuel Kaderli (suntsu) (feed)
Marc Nowak (TCA) (feed)
Marco Laspe (rockiger) (feed)
Marco Scholtyssek (marco_s) (feed)
Marco Scholtyssek (marco_s) (feed)
Marius M. M. (devilx) (feed)
Markus Matuszczak (konsumer) (feed)
Markus W. Kropp (Musix) (feed)
Martin Dosch (Dogge) (feed)
Mirko Weber (tylerD) (feed)
Nico Hartung (xyznico) (feed)
Oliver Groschopp (beetlefrosch) (feed)
Patrick Schmid (compr00t) (feed)
René Hering (ReneH) (feed)
Roman Hanhart (Thurgau) (feed)
Sabine Becker (AtariFrosch) (feed)
Sebastian Feltel (feltel) (feed)
Sebastian Moors (mauser) (feed)
Stefan J. Betz (encbladexp) (feed)
Steffen Moeller (smoe) (feed)
Steffen Rumberger (inne) (feed)
Stephan Tetzel (zefanja) (feed)
Sven S. (FearFactor) (feed)
Thorsten Sperber (TRex) (feed)
Tobias Dols (TobsenD) (feed)
Tom Karasek (Natas12) (feed)
Torsten Werner (bollin) (feed)
Viktor Bindewald (Vitei) (feed)
Vinzenz Vietzke (vinz) (feed)
posativ (feed)
Feeds
ATOM Feed
RSS 1.0 Feed
RSS 2.0 Feed
FOAF
OPML
Letztes Update
18.05.2025 04:46 (GMT+1)
Planetarium
Planet Debian
Planet Debian Administration
Planet Skolelinux
Planet Ubuntu
Planet RootForum
Planet symlink
Planet GNOME
Planet KDE
Planet Apache
Planet freedesktop.org
mehr ...
top
Zum Seitenanfang
Diese Webseite ist keine offizielle Webseite des Debian Projekts.
Haftungsausschluss und Impressum –Datenschutzrichtlinie – debianforum.de Verhaltensregeln

Powered by Planet Venus
Template entwickelt von Timo Salmen, basierend auf dem Debian Live Template, entwickelt von Christoph Haas.