ubuntuusers.de

15. Juni 2017

Ich bin ja gerne Herr über meine Daten, und das betrifft selbstverständlich auch das Thema Cloud. Daten im internen Netzwerk synchronisere ich nun schon seit längerer Zeit via Syncthing, doch Kontakte, Kalender und Notizen bleiben damit außen vor. Weiteres Problem: Ich kann nicht unterwegs auf Daten zugreifen die noch auf dem Server liegen, denn Syncthing synchronisiert entweder ganz oder gar nicht, später herunterladen ist nicht.

Weiteres Problem: Ich habe keine großartige Lust erst dutzende Pakete zu installieren um dann noch endlos diese zu konfigurieren bis meine private Cloud einsatzbereit ist. Ich will das herunterladen, starten, und dann muss das laufen.

Wie nun die Lösung des ganzen lautet? Nextcloud! Und zwar schön verpackt als Docker Container. Wie das ganze installiert und konfiguriert wird (denn ganz ohne geht es dann doch nicht) zeige ich im folgenden Artikel.

Achtung!
Dieser Artikel behandelt neben dem Hintergrundwissen lediglich die Installation von Nextcloud mittels Docker ohne einen separaten Datenbankserver zu nutzen. Wer mehr Performance braucht sollte diesem Artikel folgen. Hier wird zusätzlich die Installation eines PostgreSQL Datenbankservers beschrieben.

Docker? Was'n das?

Docker ist eine spezielle Form der Betriebssystemvirtualisierung und erlaubt es mit minimalem Overhead Anwendungen, welche als Container verpackt sind, auf nahezu beliebigen Hosts laufen zu lassen. Über das Docker Hub sind alle möglichen Anwendungen bereits als Container verfügbar, wer also vollständig auf Docker setzen möchte kann ein minimales Betriebssystem installieren, und den Rest via Docker erledigen. Webserver, Anwendungen, virtualisiert, schön verpackt, portabel, leicht zu verwalten und vor allem: Ohne großartigen Aufwand.

Docker installieren

Auf meinem Server setze ich zur Zeit Ubuntu 16.04 LTS ein, und wer mag kann auch das in den Ubuntu Repositories verfügbare docker.io-Paket installieren, ich hingegen füge wie in der offiziellen Anleitung zu Docker empfohlen eine weitere Paketquelle hinzu.

# apt-get install apt-transport-https ca-certificates curl software-properties-common
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# apt-key fingerprint 0EBFCD88
# add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Danach die Paketquellen aktualisieren, das Paket docker installieren und dann kann es auch schon losgehen mit dem eigentlichen Spaß.

# apt-get update
# apt-get install docker

Nextcloud herunterladen, instanziieren & starten

Als nächstes lädt man den Nextcloud Container vom Docker Hub herunter, in welchem die öffentlich verfügbaren Container gelistet werden.

# docker pull nextcloud

Will man eine bestimmte Version herunterladen, lässt sich dies durch Angabe eines Tags erreichen (ohne Angabe wird automatisch das Tag "latest" verwendet):

# docker pull nextcloud:12-apache

Dann legt man noch ein Volume für die Nutzerdaten an, und anschließend kann man in einem Befehl den Container instanziieren und starten:

# docker volume create --name nextcloud-data
# docker run -d -v nextcloud-data:/var/www/html -p 127.0.0.1:32768:80 --name nextcloud-12 nextcloud:12-apache

Die Parameter bewirken dabei folgendes:

  • -d – Den Container im Hintergrund laufen lassen
  • -v nextcloud-data:/var/www/html – Bindet das Volume „nextcloud-data“ im Container unter /var/www/html ein, dort liegen die Nutzerdaten
  • -p 127.0.0.1:32769:80 – Mappt den internen Port 80 auf den lokalen (!) Port 32768 des Hostsystems
  • --name nextcloud-12 – Vergibt den Namen „nextcloud-12“ an den Container
  • nextcloud:12-apache – Gibt den Container an, der als Grundlage dienen soll

Der Container ist somit instanziiert und auch bereits gestartet (Anmerkung: docker run kombiniert die Befehle docker create sowie docker start)

Nginx als Proxy konfigurieren

Damit der Container auch extern erreichbar ist muss der auf dem Host laufende Nginx Webserver noch als Proxy konfiguriert werden (die Installation und weitere Konfiguration lasse ich hier außen vor – darüber gibt es im Internet bereits ausreichend Artikel zu finden). Der „server“-Abschnitt der nginx.conf muss dabei etwa wie folgt erweitert werden:

server {
    listen      443 ssl http2; # IPv4, SSL/TLS, HTTP/2
    listen [::]:443 ssl http2; # IPv6, SSL/TLS, HTTP/2
    server_name example.org;
    root /var/www/nextcloud;
    index index.html;
    # Let's Encrypt on port 443
    location ^~ /.well-known {
        root /var/www/letsencrypt;
    }

    # Raise file upload size
    client_max_body_size 512m;

    # Limit download size
    proxy_max_temp_file_size 4096m;

    # Proxy for nextcloud docker
    location / {
        # Headers are already set via https://github.com/nextcloud/server under lib/private/legacy/response.php#L242 (addSecurityHeaders()) 
        # We only need to set headers that aren't already set via nextcloud's addSecurityHeaders()-function 
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
        add_header Referrer-Policy "same-origin";

        # Secure Cookie / Allow cookies only over https
        # https://en.wikipedia.org/wiki/Secure_cookies
        # https://maximilian-boehm.com/hp2134/NGINX-as-Proxy-Rewrite-Set-Cookie-to-Secure-and-HttpOnly.htm
        proxy_cookie_path / "/; secure; HttpOnly";

        # And don't forget to include our proxy parameters
        #include /etc/nginx/proxy_params;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # Connect to local port
        proxy_pass http://127.0.0.1:32768; # Don't use http://localhost:32768
    }
}

Dann noch speichern, die neue Konfiguration verifizieren (nginx -t) und den Webserver die neue Konfiguration übernehmen lassen (systemctl reload nginx.service).

Nextcloud Konfiguration anpassen

Die Nextcloud Instanz ist damit bereits von außen erreichbar. Einziges Problem, auf welches ich leider erst durch nachfragen aufmerksam wurde (hätte man mal die Dokumentation gelesen…): Nextcloud akzeptiert nicht wahllos Proxies, und wenn sich nun ein Client bspw. mit falschem Passwort verbindet greift die integrierte Brute-Force-Protection, wodurch die Verbindung aller Clients gedrosselt wird. Um das zu verhindern muss man innerhalb des Nextcloud Containers die Datei /var/www/html/config/config.php erweitern. Das geht entweder, indem man vom Host aus die Datei bearbeitet (wo das Datenverzeichnis liegt bekommt man via docker volume inspect nextcloud-data heraus), oder alternativ in den Container wechselt und bspw. mittels vi/vim die Datei anpasst:

# docker exec -i -t nextcloud-12 /bin/bash

Wie die Konfiguration erweitert werden muss kann auch in der offiziellen Dokumentation nachgelesen werden, für mich sah das ganze letztlich so aus:

[…]
  "trusted_proxies"   => ['172.17.0.1'],
  "overwritehost"     => "example.org",
  "overwriteprotocol" => "https",
  "overwritewebroot"  => "/",
  "overwritecondaddr" => "^172\.17\.0\.1$",
[…]

Welche IP Adresse man eintragen muss erfährt man via docker network inspect bridge.

Systemd service

Damit der Container nun automatisch bei jedem Systemstart gestartet wird empfiehlt es sich auf dem Host einen entsprechenden Service zu kreieren, dieser wird dann unter /etc/systemd/system/docker-container@.service gespeichert:

[Unit]
Description=Docker Container %I
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a %i
ExecStop=/usr/bin/docker stop -t 2 %i

[Install]
WantedBy=default.target

Anschließend den Container stoppen und via systemctl aktivieren sowie neu starten:

# docker stop nextcloud-12
# systemctl daemon-reload
# systemctl start docker-container@nextcloud-12.service
# systemctl enable docker-container@nextcloud-12.service

Upgrades

Sollte man den Container irgendwann einmal auf eine neue Version upgraden müssen, geht dies dank Docker und separatem Volume für Daten ganz einfach. Das Upgrade von Version 11 auf die kürzlich erschienene Version 12 lief etwa so ab:

# docker pull nextcloud:12-apache
# systemctl disable docker-container@nextcloud-11.service
# systemctl stop docker-container@nextcloud-11.service
# docker rm nextcloud-11
# docker create -v nextcloud-data:/var/www/html -p 127.0.0.1:32768:80 --name nextcloud-12 nextcloud:12-apache
# systemctl enable docker-container@nextcloud-12.service
# systemctl start docker-container@nextcloud-12.service

Und jetzt?

Damit ist Teil eins, die Einrichtung von Nextcloud, Docker und Nginx, beendet. Weiter geht es mit Teil 2: Der eigentliche Spielspaß (Link wird nachgereicht sobald der Artikel fertig ist). Selbstverständlich bin ich wieder auf allerhand Fehler gestoßen, wie immer wenn ich eine Software auf Herz und Nieren teste.

14. Juni 2017

Mozilla hat Firefox 54 veröffentlicht. Dieser Artikel fasst die relevantesten Änderungen der neuen Version von Firefox für den Desktop zusammen, welche von Mozilla selbst als bester Firefox aller Zeiten bezeichnet wird.

Acht Wochen sind seit der Veröffentlichung von Firefox 53 vergangen. Nun hat Mozilla mit Firefox 54 ein neues Feature-Update zum Download bereitgestellt. Für Mozilla ist Firefox 54 der beste Firefox aller Zeiten und in der Tat bringt die neue Version mit der erweiterten Multiprozess-Unterstützung eine wichtige Voraussetzung dafür mit. Bevor hier zu viel erwartet wird, sollte allerdings bedacht werden, dass diese Neuerung erst für einen Teil der Nutzer aktiviert ist. Wirklich spannend wird es gegen Ende des Jahres, wenn das Projekt Quantum seine Wirkung zeigt und Mozilla seinen generalüberholten Firefox 57 vorstellt. Aber auch abseits der Multiprozess-Architektur bietet Firefox 54 Neuerungen, wenn auch die Anzahl der Neuerungen überschaubar ausfällt gegenüber Firefox 53 und auch gegenüber dem kommenden Firefox 55-Release, welcher wieder vollgepackt mit Verbesserungen sein wird.

Download Mozilla Firefox 54.0 für Microsoft Windows, Apple macOS und Linux

Mehr Sicherheit für Firefox-Nutzer

Geschlossene Sicherheitslücken

Auch in Firefox 54 hat Mozilla wieder zahlreiche Sicherheitslücken geschlossen, worunter auch einige sind, welche von Mozilla als besonders kritisch eingestuft worden sind. Alleine aus Gründen der Sicherheit ist ein Update auf Firefox 54 daher für alle Nutzer dringend empfohlen.

Sandboxing für Linux-Nutzer

Nach Windows und Apple macOS hat Mozilla nun auch auf Linux eine erste Form des Sandboxings standardmäßig aktiviert, um die Sicherheit zu erhöhen.

Erweiterte Multiprozess-Architektur

Firefox wird seit Version 48 erstmals mit einer Multiprozess-Architektur für einen Teil der Nutzer ausgeliefert, welche unter dem Namen Electrolysis, oder kurz: e10s, entwickelt wird. Seit dem wird diese mit jeder neuen Firefox-Version weiter verbessert und erreicht weitere Nutzer. Allerdings fand bisher nach wie vor nur eine Trennung zwischen Browser- und Content-Prozess statt, wobei sich alle Tabs einen gemeinsamen Content-Prozess teilen.

Mit Firefox 54 nutzt Firefox erstmals mehr als einen Content-Prozess. Ein wesentlicher Unterschied zu beispielsweise Google Chrome ist die standardmäßige Limitierung auf vier Content-Prozesse. Während Chrome praktisch jeden Tab in einem eigenen Prozess ausführt (die tatsächliche Logik in Chrome ist etwas komplexer und wird vom System des Nutzers abhängig gemacht), glaubt Mozilla, mit vier Content-Prozessen die richtige Balance zwischen Vorteilen vieler Prozesse und dem Speicherverbrauch gefunden zu haben. Spezialierste Prozesse wie für den Adobe Flash Player („Plugin Container“), das Compositing durch die Grafikkarte und in Zukunft für den Zugriff auf lokale Dateien sowie für WebExtensions zählen dabei nicht mit, diese kommen zusätzlich dazu.

Multiprozess-Architektur Firefox und Chrome

Tatsächlich ist es so, dass mit jedem Content-Prozess der Speicher-Verbrauch nennenswert ansteigt und sich ein zu hoher Speicher-Verbrauch nachteilig auf die Leistung des Systems auswirken kann. Mit vier Content-Prozessen bleibt Firefox im Durchschnitt auch in Zukunft speicherfreundlicher als Google Chrome.

Speicher-Verbrauch Browser 2017

(Bilderquelle)

Was bringen die vier Content-Prozesse dem Nutzer nun ganz konkret? Im Idealfall mehr Reaktionsfreudigkeit und Stabilität, das heißt weniger Hängenbleiben des Browsers, wenn eine Webseite den Browser fordert, und weniger Abstürze.

Wie schon die Ausrollung der einfachen Multiprozess-Architektur erfolgt auch hier die Ausrollung etappenweise, so dass noch nicht jeder Nutzer direkt zum Start in den Genuss der vier Content-Prozesse kommt. So führt unter anderem die Nutzung von Add-ons in Firefox 54 noch dazu, dass nur ein Content-Prozess genutzt wird. Die Ausrollung wird im Laufe der kommenden Wochen erweitert werden.

Wer die Anzahl der Content-Prozesse überprüfen oder verändern möchte, kann über about:config nach dem Schalter dom.ipc.processCount suchen und diesen ggfs. anpassen.

Verbesserungen der Webplattform

Radio-Buttons und Checkboxen per CSS gestalten

Es gibt HTML-Elemente, diese sind von Natur aus schwierig bis gar nicht auf gewöhnlichem Weg per CSS zu gestalten. Dies trifft unter anderem auf Radio-Buttons und Checkboxen zu. Einfache Dinge wie die Hintergrund- oder Rahmenfarbe oder auch die Festlegung einer Grafik lassen sich nicht ohne Weiteres bewerkstelligen. Dies ändert sich mit Firefox 54. Damit eröffnen sich neue Möglichkeiten für die Gestaltung, ohne dass dazu Tricks notwendig wären.

Gestaltung von Optionsfeldern per CSS

Die Optionsfelder von <select>-Elementen waren ebenfalls schon immer schwierig browser- sowie betriebssystemübergreifend zu gestalten. Hatte Firefox dies in der Vergangenheit erlaubt, war das mit aktivierter Multiprozess-Architektur bislang nicht mehr möglich. Ab Firefox 54 können hier wieder die Hintergrund- sowie Textfarbe per CSS geändert werden.

Weitere Verbesserungen der Webplattform

Firefox 54 unterstützt die CSS-Eigenschaft clip-path, welche die Festlegung des sichtbaren Teils eines Elements erlaubt, nun auch für Form-Funktionen und nicht mehr nur für SVG-Grafiken. Weitere Verbesserungen der Webplattform lassen sich hier nachlesen.

Verbesserungen für WebExtension-Entwickler

Natürlich wurde auch die Unterstützung für WebExtensions, dem neuen Erweiterungs-Standard für Firefox, in Firefox 54 weiter verbessert. So können WebExtensions nun eigene Sidebars implementieren (etwas, was zwar auch in Opera, aber in Google Chrome überhaupt nicht möglich ist). Damit sind nicht nur Sidebars im klassischen Sinn möglich, auch lassen sich darüber vertikale Tableisten realisieren. Außerdem ist es nun für WebExtensions möglich, die Seite, die beim Öffnen eines neuen Tabs erscheint, zu überschreiben – eine Voraussetzung für eine WebExtension-Version von New Tab Override. Eine neue Privacy-API erlaubt das Ändern von Einstellungen, welche die Privatsphäre betreffen. Mittels Protocal Handler-API können Protokolle mit Erweiterungs-Aktionen verknüpft werden. Auch gibt es in Firefox 54 erste WebExtension-Schnittstellen für die Erweiterung der Entwickler-Werkzeuge von Firefox. Die Geolocation-API kann nun in Background-Scripts genutzt werden, außerdem wird die Berechtigung zum Lesen der Zwischenablage nun von Firefox unterstützt.

Relevant aus Nutzer-Sicht in Hinblick auf WebExtensions: ein Deaktivieren von JavaScript macht Content-Seiten von WebExtensions nicht länger funktionsunfähig.

Neuerungen für Webentwickler

Im Responsive Design-Modus war es bereits möglich, ein Gerät aus einer vordefinierten Liste auszuwählen, um automatisch die entsprechende Auflösung, Pixeldichte und den passenden User-Agent einzustellen. Nun ist es auch möglich, eigene Konfigurationen zu speichern und die Liste damit zu erweitern.

Sonstige Neuerungen in den Entwicklerwerkzeugen

In der Netzwerkanalyse verlinken Status-Code und HTTP-Header nun auf die entsprechende Seite in der MDN Web Docs-Dokumentation. Auch wird nicht mehr nur die Gesamtgröße aller Ressourcen angezeigt, sondern zusätzlich auch die Größe all derer Daten, welche über das Netzwerk übertragen wurden.

Sonstige Neuerungen von Firefox 54

Nutzer, welche ihren Firefox mit einem mobilen Firefox synchronisieren, sehen den Ordner „Mobile Lesezeichen“ in der Lesezeichen-Verwaltungen ab sofort in der ersten Ebene, was die mobilen Lesezeichen leichter zugänglich macht.

Hat man in der Vergangenheit in vermeintlichen Tuning-Guides Tipps der Art erhalten, dass man über about:config network.http.pipelining und ähnliche Schalter modifizieren soll, hat dies ab Firefox 54 keine Wirkung mehr, da Mozilla die Unterstützung für das HTTP/1.1-Pipelining entfernt hat, was in HTTP/2 sowieso nicht mehr relevant ist.

Die Standard-Startseite about:home zeigt nun das neue Mozilla-Logo. Die ungefähre Restdauer unter dem Download-Pfeil in der Symbolleiste wurde durch einen neuen Download-Pfeil ersetzt, welcher sich mit zunehmendem Fortschritt füllt.

Der Beitrag Mozilla veröffentlicht Firefox 54 erschien zuerst auf soeren-hentzschel.at.

Das finale Bildbearbeitungsprogramm GIMP 2.10 lässt weiter auf sich warten. Allerdings kann die bestehende Version 2.8.22 mit schicken Plug-ins erweitert werden.
Eines der bekanntesten Sammlungen dürfte das Bildbearbeitungs-Framework G'MIC (GREYC's Magic Image Converter) sein, welches nun in Version 2.0 erschienen ist und als Plug-in in Programme wie GIMP oder Krita eingebunden werden kann.

GMIC-GTK-GIMP

G'MIC 2.0 Plug-in in GIMP installieren

Im Prinzip genügt es das Plug-in als ZIP Datei herunterzuladen, entweder als GTK oder QT Paket. Eure Entscheidung.
Nach dem Entpacken sollten die Dateien in den Plug-in Ordner geschoben werden.

Unter Linux ist es dieser Pfad (Strg + H)

$HOME/.gimp-2.8/plug-ins/

Folgende Paketabhängigkeiten sollten ebenfalls installiert sein libfftw, libfftw_threads, libpng, zlib.

Unter Windows ist der Pfad hier zu finden. Alternativ würde es auch einen Installer geben. 

C:\Users\username\.gimp-2.8\plug-ins

Nach einer Installation stehen eine Vielzahl von Filtern und Effekten unter dem Menüeintrag "Filter" zur Verfügung. In der neuesten Version unter anderem mit Smart Coloring, Retro Fade oder Color Lookup Tables. Changelog

Download


Instagram Effekte für GIMP - Filter installieren

Schon etwas älter (2013), aber nicht weniger praktisch ist die Instagram Filter Sammlung für GIMP.

Bekannte Effekt Nachbildungen der Instagram Plattform wie 1977, Amaro, Apollo, Brannan, Earlybird, Gotham, Hefe, Hudson, Inkwell, Kelvin, Lo-fi, Mayfair, Nashville, Poprocket, Rise, Sierra, Sutro, Toaster, Valencia, Walden, Willow und X-Pro II sind in dieser Python Skripte Sammlung enthalten.

GIMP-Instagram-Filter

Die Installation erfolgt auf ähnliche Weise wie das G'MIC 2.0 Tool.

Lediglich die ZIP Datei herunterladen und in das Plug-in Verzeichnis entpacken

Unter Linux befindet sich der Ordner, wie eingangs erwähnt, hier

$HOME/.gimp-2.8/plug-ins/

Unter Windows ist der Pfad hier zu finden. Alternativ würde es auch einen Installer geben. 

C:\Users\username\.gimp-2.8\plug-ins

Die Effekte sind nach der Installation unter dem Menüpunkt "Filter/Instagram" zu finden.

 

Download

Kleiner Tipp am Rande, wer die Bildbearbeitung am PC durchführt, der findet mit Ramme auch einen freien Instagram Client, welcher sowohl Linux, als auch Windows Systeme unterstützt.

13. Juni 2017

Linux läuft bei mir noch auf einigen speziellen Geräten, auf dem Heimserver und natürlich in virtuellen Maschinen für bestimmte Zwecke. Selbst auf potenter Hardware sind VMs oft behäbig und insbesondere wenn 3D Beschleunigung erforderlich ist auch fehleranfällig. Ein Grund weshalb Plasma und GNOME nicht infrage kommen. KDE neon hat in einer hiesigen VM einen Arbeitsspeicherbedarf von mindestens 1 GB, was vollkommen unverhältnismäßig ist. LXDE, Xfce etc. sind mir aber zu rudimentär, MATE bietet dagegen die richtige Mischung auf Komfort und Ressourcensparsamkeit.

Nachdem CentOS 6 mit GNOME 2 nur noch wenige Jahre Unterstützung erhält, GNOME 3 mit CentOS 7 aber keine Alternative darstellt, wird im folgenden kurz die Installation mit MATE geschildert.

CentOS unterstützt nur KDE Plasma und GNOME als Desktopumgebung, mit einem Fokus auf letzterer Variante. Über das EPEL Projekt lassen sich aber diverse Pakete und alternative Desktopumgebungen wie MATE nachinstallieren.

Die CentOS 7 Installation erfolgt deshalb zuerst in der minimalen Ausführung. Nach der Installation der minimalen CentOS-Umgebung fügt man auf der Konsole die EPEL-Paketquellen hinzu. CentOS unterstützt dies durch ein in den Quellen enthaltenes Paket.

$ yum install epel-release

Anschließend rüstet man das System mit X aus.

$ yum groupinstall "X Window system"

Abschließend installiert man noch die MATE Desktopumgebung

$ yum groupinstall "MATE Desktop"

In den meisten Fällen ist es zudem sinnvoll das System automatisch mit der grafischen Oberfläche zu starten. Dies wird seit CentOS 7 über systemd konfiguriert.

$ systemctl set-default graphical.target

Nach einem Neustart steht CentOS 7 mit MATE zur Verfügung.

Dabei ist natürlich zu beachten, dass man kein reines Enterprise-System erhält. Lediglich der Unterbau kommt von CentOS und hat Enterprise-Qualität. MATE bzw. EPEL wird durch die Community gepflegt. Durch die geruhsame Entwicklung von MATE und Qualität der EPEL-Paketierung dürfte diese Konstruktion jedoch für die meisten Ansprüche genügen.

Nach dem Start hat eine entsprechende VM in Parallels (Linux auf macOS virtualisieren mit Parallels Desktop) einen Arbeitsspeicherbedarf von gerade einmal ca. 300 MB und fügt sich dadurch sehr gut in einen bestehenden Arbeitsprozess ein ohne das System unnötig auszubremsen.

Linux läuft bei mir noch auf einigen speziellen Geräten, auf dem Heimserver und natürlich in virtuellen Maschinen für bestimmte Zwecke. Selbst auf potenter Hardware sind VMs oft behäbig und insbesondere wenn 3D Beschleunigung erforderlich ist auch fehleranfällig. Ein Grund weshalb Plasma und GNOME nicht infrage kommen. KDE neon hat in einer hiesigen VM einen Arbeitsspeicherbedarf von mindestens 1 GB, was vollkommen unverhältnismäßig ist. LXDE, Xfce etc. sind mir aber zu rudimentär, MATE bietet dagegen die richtige Mischung auf Komfort und Ressourcensparsamkeit.

Nachdem CentOS 6 mit GNOME 2 nur noch wenige Jahre Unterstützung erhält, GNOME 3 mit CentOS 7 aber keine Alternative darstellt, wird im folgenden kurz die Installation mit MATE geschildert.

CentOS unterstützt nur KDE Plasma und GNOME als Desktopumgebung, mit einem Fokus auf letzterer Variante. Über das EPEL Projekt lassen sich aber diverse Pakete und alternative Desktopumgebungen wie MATE nachinstallieren.

Die CentOS 7 Installation erfolgt deshalb zuerst in der minimalen Ausführung. Nach der Installation der minimalen CentOS-Umgebung fügt man auf der Konsole die EPEL-Paketquellen hinzu. CentOS unterstützt dies durch ein in den Quellen enthaltenes Paket.

$ yum install epel-release

Anschließend rüstet man das System mit X aus.

$ yum groupinstall "X Window system"

Abschließend installiert man noch die MATE Desktopumgebung

$ yum groupinstall "MATE Desktop"

In den meisten Fällen ist es zudem sinnvoll das System automatisch mit der grafischen Oberfläche zu starten. Dies wird seit CentOS 7 über systemd konfiguriert.

$ systemctl set-default graphical.target

Nach einem Neustart steht CentOS 7 mit MATE zur Verfügung.

Dabei ist natürlich zu beachten, dass man kein reines Enterprise-System erhält. Lediglich der Unterbau kommt von CentOS und hat Enterprise-Qualität. MATE bzw. EPEL wird durch die Community gepflegt. Durch die geruhsame Entwicklung von MATE und Qualität der EPEL-Paketierung dürfte diese Konstruktion jedoch für die meisten Ansprüche genügen.

Nach dem Start hat eine entsprechende VM in Parallels (Linux auf macOS virtualisieren mit Parallels Desktop) einen Arbeitsspeicherbedarf von gerade einmal ca. 300 MB und fügt sich dadurch sehr gut in einen bestehenden Arbeitsprozess ein ohne das System unnötig auszubremsen.

Das dashing.io Dashboard kann unter anderem in Empfangsbereichen von Firmen eingesetzt werden. Steht nun zum Beispiel ein Besuch eines Kunden an, so könnte man Ihn auf dem Dashboard willkommen heißen. Damit die Willkommensnachricht nicht nur unscheinbar in einer Kachel erscheint, habe ich dieses Widget erstellt. Die job Datei(rb) prüft ob es einen zeitlich passenden Eintrag in der csv Datei gibt und setzt das Widget per css auf Display Block. Das Widget legt sich über den gesamten Bildschirm, ist die Zeit des hinterlegten Kundenbesuchs abgelaufen so wird das Widget wieder ausgeblendet.

Folgende Dateien müssen in einem Verzeichnis Namens overlay abgelegt werden

overlay.coffee
class Dashing.Overlay extends Dashing.Widget
constructor: ->
super
onData: (data) ->
schalter = @schalter
node = $(@node)
if schalter == false then node.css(‚display‘,’none‘) else node.css(‚display‘,’block‘)
ready: ->
@onData(null)

overlay.html
<span data-bind=“titel“></span>
<div class=“bild“ ><img data-bind-src=“kunde“ ></div>
<div class=“text“ data-bind=“text | raw“></div>

overlay.scss
// —————————————————————————-
// Sass declarations
// —————————————————————————-
$background-color: #ec663c;
$title-color: rgba(255, 255, 255, 0.7);
$moreinfo-color:rgba(255, 255, 255, 0.7);
// —————————————————————————-
// Widget-text styles
// —————————————————————————-
.widget-overlay {
position: fixed;
bottom: 1px;
z-index:1000;
width:100%;
height:95%;
background-color: $background-color;
.title {
color: $title-color;
}
.more-info {
color: $moreinfo-color;
}
.updated-at {
color: rgba(255, 255, 255, 0.7);
}
.text{
color:#ffffff;
font-weight:bold;
margin-top:20%;
}
.bild{
height:100px;
width:95%;
text-align:right;
}
&.large h3 {
font-size: 65px;
}
}

Die rb Datei muss unter dem Verzeichnis jobs abgelegt werden, natürlich muss der Pfad zur CSV Datei angepasst werden.
overlay.rb
require ‚csv‘
require ‚json‘
require ‚date‘
require ‚time‘
ENV[‚TZ‘] = ‚Europe/Berlin‘
schalter = false
kunde = „x“
text = „x“
SCHEDULER.every ’30s‘ do
zeit = Time.now.to_i
schalter_zaehler = 0
ausgabe = {}
idx = 0
CSV.foreach(‚/home/dashing/sweet_dashboard_project/jobs/overlay.csv‘, col_sep: ‚;‘) do |row|
start = Time.parse(„#{row[0]} #{row[1]}:00 „).to_i
stop = Time.parse(„#{row[0]} #{row[2]}:00 „).to_i
if zeit.between?(start, stop)
schalter_zaehler += 1
kunde = row[3]
text = row[4]
ausgabe[0] = {:kunde => row[3],:text => row[4]}
end
end
if schalter_zaehler == 1
schalter = true
else
schalter = false
end
send_event(„overlay“,{ kunde: kunde , text: text, schalter: schalter })
#puts JSON.pretty_generate(ausgabe)
end

Aufbau der overlay.csv
2017-01-02;10:00;12:00;/assets/logo.png;Moin zusammen;
2017-05-08;20:00;21:51;/assets/logo.png;Willkommen Firma Kassupke<br/>bei der Tagung;

Die Logos der Firmen müssen unter dem Verzeichnis assets/images abgelegt werden.

Die Einbindung des Widgets erfolgt in der erb Datei in der letzten Zeile wie folgt:
<div data-id=“overlay“ data-view=“Overlay“ ></div>

Hier kann alles heruntergeladen werden.

12. Juni 2017

Auch in dieser Woche gibt es wieder ein neues Update für den Bookmarks Organizer für Firefox. Der Bookmarks Organizer 1.3.0 bringt zwei Verbesserungen.

Download Bookmarks Organizer 1.3.0 für Mozilla Firefox

Der Bookmarks Organizer soll dabei helfen, wieder Ordnung in die Lesezeichen zu bringen, indem nicht mehr funktionierende sowie doppelte Lesezeichen gefunden und Weiterleitungen korrigiert werden. Ein ausführlicher Überblick über alle Funktionen kann im Vorstellungs-Artikel der Erweiterung gefunden werden.

Neuerungen Bookmarks Organizer 1.3.0

Beim dieswöchigen Release des Bookmarks Organiziers handelt es sich um ein kleineres Update, welches ein neues Feature (basierend auf Nutzer-Feedback) sowie eine interne Verbesserung bringt.

  • Die Bestätigungen können nun deaktiviert werden. Der Bookmarks Organizer erlaubt es, fehlerhafte Lesezeichen direkt über die Oberfläche der Erweiterung zu löschen oder Weiterleitungen zu korrigieren. Die Aktion muss dabei für jedes Lesezeichen einzeln ausgeführt und bestätigt werden. Ein häufiger Nutzerwunsch ist die Möglichkeit, mehrere Lesezeichen auf einmal auswählen zu können. Während dieses Feature bereits für eine spätere Version geplant ist, wurde in der Zwischenzeit eine Option implementiert, um die Bestätigungen komplett zu deaktivieren. Zu finden ist die neue Option in den Einstellungen des Add-ons.
  • Performance-Verbesserung. Der Bookmarks Organizer kann keine Garantie dafür geben, dass als fehlerhaft erkannte Lesezeichen tatsächlich fehlerhaft sind. Um das Risiko zu minimieren, schickt der Bookmarks Organizer für jedes als fehlerhaft erkannte Lesezeichen noch eine zweite Abfrage hinterher, um den Status zu bestätigen. In Zukunft schickt der Bookmarks Organizer zur Überprüfung HEAD-Anfragen instelle von GET-Anfragen, wodurch weniger Daten durch das Web gesendet werden müssen, was die Performance minimal verbessern sollte. Da nicht jeder Server HEAD-Anfragen zulässt, wird für die zweite Anfrage aus Kompatibilitäts-Gründen weiterhin GET verwendet.

Bookmarks Organizer 1.3.0

Fehler gefunden oder Funktion gewünscht?

Fehler, Feature-Wünsche und Anregungen können gerne hier in den Kommentaren hinterlassen werden. Ansonsten gibt es die Möglichkeit, auf GitHub ein entsprechendes Ticket zu erstellen.

Entwicklung unterstützen

Wer die Entwicklung des Add-ons unterstützen möchte, kann dies tun, indem er der Welt von Bookmarks Organizer erzählt und die Erweiterung auf addons.mozilla.org bewertet. Auch würde ich mich sehr über eine kleine Spende freuen, welche es mir ermöglicht, weitere Zeit in die Entwicklung des Add-on zu investieren, um zusätzliche Features zu implementieren.

Der Beitrag Bookmarks Organizer 1.3.0 für Firefox veröffentlicht erschien zuerst auf soeren-hentzschel.at.

11. Juni 2017

Im Falle dieses Artikels bezieht sich der Titel auf das Messen von Temperatur und relativer Luftfeuchtigkeit mit einem DHT22-Sensor (AM2302).

Im Rahmen eines kleinen Wochenend-Projekts möchte ich mit Hilfe des genannten Sensors, der Open-Source-Plattform NodeMCU V3 und einem Raspberry Pi eine Raumklimaüberwachung für unsere Wohnung basteln. Der NodeMCU V3 mit aufgesetztem ESP8266 scheint dazu gut geeignet, da er dank integriertem WLAN die aufgezeichneten Messdaten direkt an eine zentrale Instanz übertragen kann. An dieser Stelle beschreibe ich, wie ich dabei vorgegangen bin, welche Komponenten zum Einsatz kamen, wie der Prototyp funktioniert, welche Erkenntnisse ich dabei gewonnen habe und was ich damit in Zukunft anzustellen gedenke.

Vorwort zum Prototyp

Für meine Bastelei verwende ich am liebsten den DHT22-Sensor. Dieser ist günstig und liefert eine hinreichende Genauigkeit. Mir ist jedoch in der Vergangenheit aufgefallen, dass einzelne Exemplare in ihren Messwerten teils deutlich nach oben oder unten ausreißen.

Um nun herauszufinden, ob sich in der jüngsten Charge wieder ein paar Ausreißer befinden, habe ich mich für einen demokratischen Ansatz entschieden. Dabei schließe ich mehrere Sensoren an den gleichen Mikrocontroller an und messe mit ihnen am gleichen Ort. Theoretisch dürfen die Messwerte nur in dem angegebenen Toleranzbereich von maximal +/- 5% RH und +/- 0,5 °C abweichen. Mit der parallelen Anordnung von vier Sensoren kann ich erkennen, ob einer aus der Reihe tanzt.

Vorbereitung der Plattform

Als Firmware für den ESP8266 habe ich ESPEasy ausgewählt. Das Projekt verfügt über ein gut strukturiertes Wiki, welches in englischer Sprache erklärt, wie man die Firmware auf den ESP8266 installiert.

Aufbau des Prototyps

Für den Aufbau habe ich zwei kĺeine Steckbretter und ein NodeMCU V3 verwendet. Der Aufbau wird im folgenden Bild dargestellt. Da dies mein erster Versuch war, einen Aufbau zu modellieren, bitte ich um etwas Nachsicht.

dht22-on-esp8266

Aufbau des Prototypen

Es wurden Pull-Up-Widerstände mit einem Widerstand von 10k Ohm verwendet und an die GPIO-PINs 12, 13, 14 und 16 angeschlossen.

Eine Übersicht über alle zur Verfügung stehenden PINs bietet das folgende Bild:

PIN-Belegung des NodeMCU

Wurde die Schaltung wie im obigen Bild aufgebaut, verbindet man sich mit der Weboberfläche des ESPEasy und konfiguriert diesen entsprechend. Eine ausführliche Dokumentation zum Webinterface findet man unter der URL https://www.letscontrolit.com/wiki/index.php/ESP_Easy_web_interface.

In meinem Aufbau erscheinen die Sensoren nach erfolgreicher Konfiguration wie folgt unter „Devices“ im Webinterface.

Devices im Webinterface des ESPEasy

Die meisten Schritte sind intuitiv zu bearbeiten. Lediglich zur Konfiguration des Template-Strings, welcher zur Übertragung der Messwerte an einen Webserver verwendet wird, habe ich etwas länger gebraucht. Ich verwende dazu folgenden Publish-Template-String, welcher unter Tools -> Advanced -> Publish Template eingetragen wird.

import.php?name=%sysname%&task=%tskname%&valuename=%valname%&value=%value%

Das folgende Listing zeigt, wie die HTTP-GET-Anfragen beim Webserver ankommen:

192.168.x.x 192.168.x.x - [07/Jun/2017:20:44:05 +0200] "GET /import.php?name=esp8266%5fdht22%5f2&task=DHT22%2d1&valuename=Temperature&value=22.00 HTTP/1.1" 200 411 "-" "-"
192.168.x.x 192.168.x.x - [07/Jun/2017:20:44:06 +0200] "GET /import.php?name=esp8266%5fdht22%5f2&task=DHT22%2d1&valuename=Humidity&value=43.60 HTTP/1.1" 200 411 "-" "-"
192.168.x.x 192.168.x.x - [07/Jun/2017:20:44:07 +0200] "GET /import.php?name=esp8266%5fdht22%5f2&task=DHT22%2d2&valuename=Temperature&value=22.00 HTTP/1.1" 200 411 "-" "-"
192.168.x.x 192.168.x.x - [07/Jun/2017:20:44:08 +0200] "GET /import.php?name=esp8266%5fdht22%5f2&task=DHT22%2d2&valuename=Humidity&value=44.30 HTTP/1.1" 200 411 "-" "-"
192.168.x.x 192.168.x.x - [07/Jun/2017:20:44:09 +0200] "GET /import.php?name=esp8266%5fdht22%5f2&task=DHT22%2d3&valuename=Temperature&value=22.10 HTTP/1.1" 200 411 "-" "-"
192.168.x.x 192.168.x.x - [07/Jun/2017:20:44:10 +0200] "GET /import.php?name=esp8266%5fdht22%5f2&task=DHT22%2d3&valuename=Humidity&value=55.20 HTTP/1.1" 200 411 "-" "-"
192.168.x.x 192.168.x.x - [07/Jun/2017:20:44:11 +0200] "GET /import.php?name=esp8266%5fdht22%5f2&task=DHT22%2d4&valuename=Temperature&value=22.00 HTTP/1.1" 200 411 "-" "-"
192.168.x.x 192.168.x.x - [07/Jun/2017:20:44:12 +0200] "GET /import.php?name=esp8266%5fdht22%5f2&task=DHT22%2d4&valuename=Humidity&value=44.30 HTTP/1.1" 200 411 "-" "-"

Der Aufbau des Prototyps ist damit im Wesentlichen abgeschlossen.

Erstellung der import.php

In meinem Heimnetzwerk befindet sich bereits ein Raspberry Pi, auf welchem ein kleiner Webserver (lighttpd) läuft. Für diesen erstelle ich ein kleines Import-Skript, welches die Messdaten einsammelt und in eine Datei schreibt.

Für die Erstellung der Datei „import.php“ nehme ich an, dass die Ergebnisse der vier Sensoren stets in der gleichen Reihenfolge übermittelt werden. Da jeweils Temperatur und Luftfeuchtigkeit gemessen werden, überträgt der ESP8266 acht Werte pro Messintervall. Diese sollten mit einem Zeitstempel in eine Zeile einer CSV-Datei geschrieben werden. Dafür kommt aktuell das folgende Skript zum Einsatz:

switch ($_GET[„task“]) {
case „DHT22-1“:
if ($_GET[„valuename“] == ‚Temperature‘) {
$data = date(‚Y-m-d‘). „T“ . date(‚H:i:s‘, time()) . „,“ . $_GET[„value“] . „,“;
} else {
$data = $_GET[„value“] . „,“;
}
break;
case „DHT22-2“:
if ($_GET[„valuename“] == ‚Temperature‘) {
$data = $_GET[„value“] . „,“;
} else {
$data = $_GET[„value“] . „,“;
}
break;
case „DHT22-3“:
if ($_GET[„valuename“] == ‚Temperature‘) {
$data = $_GET[„value“] . „,“;
} else {
$data = $_GET[„value“] . „,“;
}
break;
case „DHT22-4“:
if ($_GET[„valuename“] == ‚Temperature‘) {
$data = $_GET[„value“] . „,“;
} else {
$data = $_GET[„value“] . „\n“;
}
break;
}

print($data);
file_put_contents(‚/var/www/dht22data.csv‘, $data, FILE_APPEND);

 

Erste Erkenntnisse

Im aktuellen Aufbau werden die Messwerte alle 5 Minuten an den Webserver übertragen. Die empfangenen Daten habe ich mit LibreOffice Calc geöffnet und etwas aufbereitet:

Erste Messergebnisse (aufbereitet)

Die Messwerte wurden auf ganze Zahlen gerundet. Es lässt sich erkennen, dass tatsächlich ein Sensor aus der Reihe tanzt. Der DHT22-3 weicht bei der Luftfeuchtigkeit um 9-11 Prozentpunkte nach oben ab. Das ist erstmal nicht weiter schlimm, jedoch gut zu wissen. Ich werde die nächste Zeit beobachten, wie sich diese Abweichung bei wechselnden Temperaturen entwickelt.

Entweder passe ich die gemessenen Werte an, indem ich in der Weboberfläche einen festen Faktor zu den gemessenen Werten hinzurechne bzw. abziehe oder ich sondere den Sensor aus, sollte die Abweichung zu stark schwanken.

Ausblick

Die nächsten Tage werde ich den Prototyp in seiner aktuellen Konfiguration weiterlaufen lassen. Anschließend beschaffe ich mir ein paar kleine Gehäuse, um jeweils einen Sensor mit einem Controller zusammen einzusetzen und in der Wohnung aufzustellen. So weiß ich in Zukunft schon vorher, ob es sich lohnt, die Wohnung zu betreten oder ich lieber gleich in den Garten gehe.

Darüber hinaus habe ich noch eine Handvoll weiterer DHT22-Sensoren. Diese werde ich ebenfalls auf einem Steckbrett anordnen und sie an einen Raspberry Pi anschließen. Ich werde bei diesen das gleiche Verfahren anwenden, um Ausreißer erkennen zu können.

Kindern mit einem Minicomputer das Programmieren beibringen – diese Idee hat mich gleich begeistert, als Maxim im letzten September sein Crowdfunding-Projekt für den Calliope Mini präsentierte. Jetzt habe ich meinen Calliope erhalten und endlich Zeit gehabt, um ein wenig damit rumzuspielen.

Die liebevoll verpackte Mini-Platine kommt mit allen wichtigen Zusatz-Teilen, so dass man sofort loslegen kann. Und das ist noch einfacher als ich mir das ursprünglich vorgestellt habe: Man schließt den Calliope einfach mit dem mitgelieferten Micro-USB-Kabel an einen Computer an. Das Gerät meldet sich dann einfach als neues Laufwerk – so wie ein USB-Stick.

Eine Software muss man nicht installieren. Man arbeitet einfach mit der Drag&Drop-Weboberfläche von Open Roberta. Aus verschiedenen Elementen kann man sich damit sein erstes Programm zusammenklicken. Ist es fertig, kann man es einfach herunterladen auf das Calliope-Laufwerk. Der Mini-Rechner startet dann in ein paar Sekunden neu und spielt das neue Programm ab.

Mein erstes Projekt

Bei meinem ersten Projekt ist mir erst aufgefallen, wie toll es ist, dass der Calliope lauter Sensoren schon fest eingebaut hat. Das einfachste für mich war mit dem Temperatur-Sensor ein Thermometer zu bauen. Ich nehme das „Zeige Text“-Element und klicke die Sensorabfrage als Text dazu. Ich speichere das Programm und der Calliope fängt an auf seiner LED-Matrix die akktuelle Temperatur durchzuscrollen. Ich spiele ein wenig mit dem Text herum. das Grad-Symbol kann die Matrix leider nicht anzeigen. Egal.

Ich überlege, wie ich das Programm ein wenig ausbauen kann und beginne mit den Bedingungen und dem Farb-LED zu spielen. Wenn die Temperatur über 21°C ist, soll das LED rot warnen, bei unter 19°C soll es blau warnen. Dazwischen ist die Temperatur im grünen Bereich. Ich speichere wieder das Programm und der Calliope zeigt wieder die Temperatur an – diesmal mit einem roten LED. Heute ist es warm.

Wie kann ich jetzt ausprobieren, ob die anderen Bedingungen funktionieren? Ich denke, der Kühlschrank sollte kälter als 19°C sein. Ich schließe das mitgelieferte Batteriekästchen an und ziehe den Calliope vom Rechner ab. Das Programm läuft weiter. Im Kühlschrank sehe ich gespannt zu, wie die angezeigte Temperatur sinkt, tatsächlich das LED erst auf grün und dann auf blau schaltet. Wie cool!

Mehr davon!

Jetzt will ich schauen, was der Calliope Mini noch so kann. Mir macht diese Art des Bastelns total viel Spaß. Wenn ich an meine Übungen zum Informatik-Zertifikat an der Uni denke, dann hätte auch denen so ein Calliope gut getan. Da fing der Lernstoff auch bei Null an und es wäre sicherlich für alle spannender gewesen, wenn man die ersten Schritte mit so einem System gemacht hätte. Stattdessen mussten wir Konsolen-Programme in Java programmieren, die zwei Zahlen addiert haben. Langweilig.

Die Bedienung des Calliope ist super einfach. Damit sollten Grundschüler sicher nach Anleitung zurecht kommen. Ich habe keine Grundschüler zur Hand, an denen ich den Calliope Mini ausprobieren kann, deswegen kann ich nur vermuten. Die Logik-Operationen muss man natürlich erst einmal verstehen und auch, dass die Reihenfolge extrem wichtig ist. Ich hatte auch erst die Temperatur in eine Variable geschrieben und mich gewundert, dass sich die Zahl nicht ändert, bis mir auffiel, dass das natürlich nicht geht, wenn die Abfrage nicht in der Schleife steht. Wer seinen Kindern zeigen will, wie die Prinzipien funktionieren, mit denen all die digitalen Geräte um sie herum betrieben werden, der sollte sich ein paar Calliopes bestellen.

Links

Calliope Mini ist eine Einladung zum Experimentieren

Bei Sailfish OS war ich es gewohnt Dateien komfortabel mittels rsync über SSH auf das Smartphone zu übertragen ohne es erst per Kabel mit dem Rechner verbinden zu müssen. Gegen Bluetooth habe ich irgendwie eine Abneigung und das müsste ich auch erst manuell aktivieren.

Eine sehr nützliche Anwendung um die Übertragung von Dateien per rsync/SSH unter Android (fast) so komfortabel wie bei Sailfish zu machen ist SSHelper. Die App ist unter der GPL lizensiert und auf der Homepage auch gut dokumentiert.

Das einzige Manko ist, dass die App nur im Play Store und nicht bei F-Droid verfügbar ist.

[Update 2017-07-30]

Seit heute ist SSHelper im F-Droid Repository von IzzyOnAndroid verfügbar.

Mozilla wird die Seite, die beim Öffnen eines neuen Tabs standardmäßig erscheint, mit Firefox 57 ersetzen. Diese wird für den Nutzer mehr Optionen zur Anpassbarkeit bieten als jemals zuvor. Dieser Artikel gibt eine Vorschau auf die neuen Optionen.

Gute Nachrichten für Freunde der Anpassbarkeit: der neue Tab von Firefox bekommt mehr Anpassungsmöglichkeiten. Erst vor wenigen Tagen wurde die Anpassbarkeit der Sidebars von Firefox erweitert. Darüber hinaus sind bereits weitere neue Anpassungsmöglichkeiten von Firefox 57 bekannt.

Der Status Quo

Standardmäßig erscheint beim Öffnen eines neuen Tabs mit about:newtab eine Seite mit Kacheln der meistbesuchten Webseiten plus einem Suchfeld. Die einzigen sichtbaren Optionen für den Nutzer sind das Ausblenden der meistbesuchten Webseiten sowie das Anzeigen einer komplett leeren Seite. Webseiten können angepinnt werden, so dass diese nicht durch häufiger besuchte Webseiten ersetzt werden. Das beliebige Ersetzen von Kacheln ist möglich, allerdings nur per Drag & Drop aus den Lesezeichen, was umständlich ist und von kaum einem Firefox-Nutzer gewusst wird.

Firefox about:newtab

Inhalt der Vorschau

Mit Firefox 57 wird Mozilla diese Seite ersetzen. Die neue Seite bietet wesentlich mehr Funktionen als die alte Seite und gibt auch dem Nutzer mehr Kontrolle über die Inhalte dieser Seite als es bisher jemals der Fall war. Diese neue Seite wird ebenfalls about:home ersetzen, die bisherige Standard-Startseite von Firefox.

Diese Vorschau über die neuen Funktionen basiert auf der aktuellen Dev-Version 1.13.0-dev-1497075458-2db079d des Activity Streams, dem Test Pilot-Experiment, in dessem Rahmen Mozilla seit Monaten mit dieser Neuerung experimentiert und Feedback durch die Nutzer erfährt. Bis zum Erscheinen von Firefox 57 sind noch einige Dinge zu tun, die Vorschau entspricht daher nicht 1:1 dem finalen Ergebnis. Jedoch erlaubt diese Vorschau einen Einblick in die neuen Funktionen.

Der neue Tab in Firefox 57

Suchleiste, Kacheln, Anpinnen von Webseiten und das Bearbeiten von Kacheln – alles, was bisher möglich war, wird auch in Zukunft möglich sein – und mehr. Das Bearbeiten von Kacheln funktioniert nun intuitiver, es gibt neue Abschnitte für Highlights, neue Lesezeichen sowie Top-Meldungen von Pocket. Und jeder einzelne Bereich kann unabhängig voneinander eingeklappt oder auch vollständig deaktiviert werden.

Neuer Tab Firefox 57

Suchleiste

Keine Überraschung bei der Suchleiste, hier bleibt alles beim Alten. Abgesehen davon, dass die Suchleiste vorher nicht deaktivierbar war und nun vom Nutzer deaktiviert werden kann.

Kacheln

Die zunächst auffälligste Änderung hier ist das veränderte Format der Kacheln. Diese sind nun quadratisch und kleiner als bisher. Bisher bekannt sind die sichtbaren Optionen zum Anpinnen sowie Entfernen von Kacheln. Hier kommen nun diverse neue Optionen dazu: das Speichern als Lesezeichen, das Öffnen in einem neuen Fenster, das Öffnen in einem privaten Fenster sowie das komplette Löschen der Seite aus der Chronik des Nutzers.

Neuer Tab Firefox 57

Auf die Anzahl der Kacheln konnte bisher nur über versteckte Einstellungen Einfluss genommen werden. Nun erhält der Nutzer eine sichtbare Option, um entweder eine oder zwei Reihen mit Kacheln anzuzeigen.

Das beliebige Festlegen von Kacheln muss nicht länger umständlich via Drag & Drop aus den Lesezeichen erfolgen. Stattdessen kann der Nutzer nun direkt die gewünschte URL eingeben – und kann sogar den angezeigten Seitentitel ändern.

Neuer Tab Firefox 57

Top-Geschichten

Dieser neue Abschnitt zeigt für den Nutzer möglicherweise interessante Artikel an, welche nicht aus der Chronik des Nutzers generiert werden. Stattdessen kommen die Vorschläge von Pocket, einem populären Lesezeichen-Dienst von Mozilla, der auch dabei helfen möchte, neue Inhalte zu entdecken.

Mozilla Pocket

Highlights

Dieser ebenfalls neue Abschnitt stellt eine Mischung aus kürzlich besuchten sowie kürzlich als Lesezeichen hinzugefügten Webseiten dar.

Neuer Tab Firefox 57

Aktuelle Lesezeichen

Auch dieser Abschnitt ist neu und zeigt das an, was der Name bereits verrät: die neusten Lesezeichen des Nutzers.

Erneut besuchen

Neu ist ebenfalls ein Abschnitt, welcher ausschließlich aus kürzlich besuchten Webseiten besteht.

Neuer Tab Firefox 57

Anpassbarkeit durch Add-ons

Natürlich kann die Seite, die beim Öffnen eines neuen Tabs erscheint, auch in Zukunft durch Add-ons wie New Tab Override ersetzt werden.

Der Beitrag Mehr Anpassbarkeit: Vorschau auf den neuen Tab in Firefox 57 erschien zuerst auf soeren-hentzschel.at.

Bei Sailfish OS war ich es gewohnt Dateien komfortabel mittels rsync über SSH auf das Smartphone zu übertragen ohne es erst per Kabel mit dem Rechner verbinden zu müssen. Gegen Bluetooth habe ich irgendwie eine Abneigung und das müsste ich auch erst manuell aktivieren.

Eine sehr nützliche Anwendung um die Übertragung von Dateien per rsync/SSH unter Android (fast) so komfortabel wie bei Sailfish zu machen ist SSHelper. Die App ist unter der GPL lizensiert und auf der Homepage auch gut dokumentiert.

Das einzige Manko ist, dass die App nur im Play Store und nicht bei F-Droid verfügbar ist.

[Update 2017-07-30]

Seit heute ist SSHelper im F-Droid Repository von IzzyOnAndroid verfügbar.

Bei Sailfish OS war ich es gewohnt Dateien komfortabel mittels rsync über SSH auf das Smartphone zu übertragen ohne es erst per Kabel mit dem Rechner verbinden zu müssen. Gegen Bluetooth habe ich irgendwie eine Abneigung und das müsste ich auch erst manuell aktivieren.

Eine sehr nützliche Anwendung um die Übertragung von Dateien per rsync/SSH unter Android (fast) so komfortabel wie bei Sailfish zu machen ist SSHelper. Die App ist unter der GPL lizensiert und auf der Homepage auch gut dokumentiert.

Das einzige Manko ist, dass die App nur im Play Store und nicht bei F-Droid verfügbar ist.

[Update 2017-07-30]

Seit heute ist SSHelper im F-Droid Repository von IzzyOnAndroid verfügbar.

10. Juni 2017

Viel hat sich seit 2017 nicht an der Radkarte geändert, mit dem man automatisiert aus den OpenStreetMap-Karten ein Garmin-File für das eigene Navi erstellen kann. Ich freue mich aber, dass das Skript immer noch weiter entwickelt wird. Auf Basis der letzten Änderungen folgt hier ein kleines Update.

Die Installation und Benutzung ist erst einmal identisch wie im Originalartikel bzw. ersten Update beschrieben. Geändert hat sich nur:

Benötigte Pakete

Neben den Paketen ant und ant-contrib wird nun auch ant-optional für die Unit-Tests benötigt, sonst erhält man eine Fehlermeldung der Art:


run.tests:
[mkdir] Created dir: /home/dee/bin/radkarte/bin/splitter/trunk/tmp/report

BUILD FAILED
/home/dee/bin/radkarte/build.xml:102: The following error occurred while executing this line:
/home/dee/bin/radkarte/bin/splitter/trunk/build.xml:239: Problem: failed to create task or type junit
Cause: the class org.apache.tools.ant.taskdefs.optional.junit.JUnitTask was not found.
This looks like one of Ant's optional components.

Viel hat sich seit 2017 nicht an der Radkarte geändert, mit dem man automatisiert aus den OpenStreetMap-Karten ein Garmin-File für das eigene Navi erstellen kann. Ich freue mich aber, dass das Skript immer noch weiter entwickelt wird. Auf Basis der letzten Änderungen folgt hier ein kleines Update.

Die Installation und Benutzung ist erst einmal identisch wie im Originalartikel bzw. ersten Update beschrieben. Geändert hat sich nur:

Benötigte Pakete

Neben den Paketen ant und ant-contrib wird nun auch ant-optional für die Unit-Tests benötigt, sonst erhält man eine Fehlermeldung der Art:


run.tests:
[mkdir] Created dir: /home/dee/bin/radkarte/bin/splitter/trunk/tmp/report

BUILD FAILED
/home/dee/bin/radkarte/build.xml:102: The following error occurred while executing this line:
/home/dee/bin/radkarte/bin/splitter/trunk/build.xml:239: Problem: failed to create task or type junit
Cause: the class org.apache.tools.ant.taskdefs.optional.junit.JUnitTask was not found.
This looks like one of Ant's optional components.

Das Einsortieren von Dateien wird einem unter Linux besonders leicht gemacht. Egal, ob Dateien oder ganze Ordner in andere Ordner verschoben oder kopiert werden sollen: Quasi alle gängigen Linuxoberflächen bieten dazu im Dateimanager einen komfortablen Weg. Aber alle machen es dabei etwas unterschiedlich.

Dateien einzusortieren, dazu gibt es viele Möglichkeiten. Per Drag and Drop zwischen zwei Dateimanagerfenstern bzw. vom Desktop ins Dateimanagerfenster oder über die Dateimanager-Seitenleiste in die Favoriten oder die Baumansicht ziehen, durch Ausschneiden und Einfügen – oder ganz ohne Maus auch mal direkt im Terminal. Was im Windows-Explorer jedoch standardmäßig fehlt (obwohl die Möglichkeit besteht und mit einem Registry-Eingriff hervorgezaubert werden kann), offerieren die meisten Linux-Dateimanager sofort: Entsprechende Einträge im Kontextmenü zum schnellen Verschieben und Kopieren.

Die meisten Linuxoberflächen geben sich somit anwenderfreundlicher. Diese Kontextmenüvariante für die Dateiverwaltung – abseits von „Ausschneiden und Einfügen“ – zählt bei den großen Linuxdesktops und dessen Dateimanagern weiterhin zu den Basics und sind standardmäßig mit an Bord – auch wenn sie in den Dateimanager-Einstellungen manchmal erst aktiviert oder konfiguriert werden müssen.

Cinnamon

Cinnamons Dateimanager Nemo zeigt die Einträge für Verschieben und Kopieren standardmäßig im Kontextmenü. Angezeigt wird ein Untermenü, in dem die vorher im Dateimanager angelegten Favoriten erscheinen. Neben den Lesezeichen bietet es alternativ die Möglichkeit, das Dateiauswahlfenster zum Navigieren aufzurufen. Weitere Untermenüs, mit denen man sich durchs Dateisystem hangeln kann, gibt es jedoch nicht.


Bei Nemo führen die Menüeinträge zu einem Untermenü mit Favoriten

Gnome

Gnome bietet mit „Dateien“ (Nautilus) Kopieren/Verschieben im Kontextmenü ebenfalls standardmäßig an, setzt aber bei der Umsetzung mal wieder ganz auf Simplifizierung. Es werden keine häufig genutzten Ordner oder Favoriten angeboten, sondern es wird sofort der Dateiauswahldialog aufgerufen. Hier kann dann in der Seitenleiste der Favoriten ein Ordner ausgewählt werden und mit einem Button oben rechts dorthin verschoben werden. Da in der Favoritenleiste des Gnome-Auswahldialogs auch die gerade irgendwo geöffneten Ordner erscheinen, zählt diese Umsetzung zwar nicht zu den übersichtlichsten, aber tatsächlich zu den intuitivsten und umfangreichsten. Nur ob verschoben oder kopiert werden soll, diese Entscheidung muss man auch bei Gnome schon am Anfang treffen.


Bei Gnome führt der Punkt direkt zum Auswahldialog

KDE

KDE wäre nicht KDE, gäbe es die Kontextmenüeinträge nicht auch bei Dolphin. In früheren KDE-Versionen waren sie Standard, aber inzwischen sind sie auch hier standardmäßig ebenfalls nicht sichtbar, sondern müssen in den Dolphin-Einstellungen erst aktiviert werden. KDE setzt die Funktion aus dem Stand am praktischsten um. Hier lässt sich einerseits direkt über beliebige Untermenüs zu einem gewünschten Ordner navigieren. Feste Favoriten werden nicht angezeigt, stattdessen merkt sich KDE, in welchen Ordner zuletzt ein Objekt verschoben wurde. Dadurch bildet sich automatisch mit der Zeit eine Favoritenliste. Die am häufigsten genutzten Ordner stehen ebenfalls automatisch oben in der Liste. Einen Haken gibt es an dieser Umsetzung allerdings: Löscht man einen Ordner von der Festplatte, wird das vom Kontextmenü nicht registriert. Der verwaiste Eintrag bleibt in der Liste enthalten.


KDE listet später an dieser Stelle direkt die am häufigsten besuchten Ordner automatisch auf

XFCE

Am umständlichsten, aber dafür letztendlich auch am flexibelsten und schnellsten – wenn man es erst einmal eingerichtet hat –, ist die XFCE-Lösung, die ganz ohne Automatismen auskommt. Hier ist Handarbeit angesagt. Im Dateimanager Thunar gibt es standardmäßig zunächst auch keine Kontextmenüeinträge für Verschieben oder Kopieren. Dafür ist eine Funktion eingebaut, mit der man sich diese Einträge einfach individuell erstellen kann. Im Bereich „Benutzerdefinierte Aktionen“ ist standardmäßig nur der Eintrag „Terminal hier öffnen“ enthalten, der so auch im Kontextmenü auftaucht. An dieser Stelle lassen sich nun weitere Befehle ins Kontextmenü integrieren, indem man graphisch einfach neue anlegt. Die dafür nötige Anleitung bzw. die benötigten Parameter listet das Fenster praktischerweise gleich mit auf. Mit ein wenig Linux-Grundwissen lassen sich so die tollsten Verschiebe- und Kopierbefehle erstellen, quasi eine eigene Sortierzentrale für häufig genutzte Ordner. Die Menüeinträge lassen sich sogar auf bestimmte Dateitypen beschränken, sodass z. B. bei einem Klick auf ein Bild nur der Bilderordner im Kontextmenü erscheint oder bei Textdateien nur der Dokumentenordner zum Verschieben.


Bei Thunar werden die gewünschten Listeneinträge mitsamt Funktionen manuell angelegt

Welche Methode bevorzugen die verehrten Leser? Wie verschiebt ihr Dateien normalerweise? Per Drag und Drop, über die Seitenleiste oder die Adressleiste? Gibt es noch elegantere Lösungen?


Dieser Artikel „Dateien cleverer einsortieren mit Linux“ erschien zuerst bei Pinguinzubehör.

9. Juni 2017

Overkill Software verschenkt bei Steam den Titel Payday 2. Insgesamt 5 Millionen Kopien werden verschenkt – die Gratis-Aktion endet allerdings am 21.6. Linux und ein Steam-Account sind nötig, um das Spiel zu installieren. Das Spiel bleibt dauerhaft im Account.

Payday 2 ist ein Computerspiel aus dem Jahr 2013 und erhielt zumeist positive Wertungen. Ziel des Ego-Shooters ist es, Raubüberfälle und ähnliches zu planen und auszuführen.

Siehe auch: http://steamcommunity.com/games/218620/announcements/detail/1327847269948862882, http://store.steampowered.com/app/218620/, http://www.crimenet.info/de, https://de.wikipedia.org/wiki/Payday_2

8. Juni 2017

Die File-Transfer-Software FileZilla hat mit der letzten Version 3.26.x eine langersehnte Funktion integriert.

Ein Master-Passwort, welches die verwendeten Passwörter verschlüsselt auf der Festplatte ablegt.

filezilla-changelog

FileZilla Master-Passwort setzen

Die Funktion ist etwas in den Einstellungen versteckt.

Unter "Einstellungen-->Oberfläche" kann das Master-Passwort gesetzt werden.

Filezilla-Masterpasswort-setzen

Bisher wurden Passwörter mit Base64 Encoding unter Windows in "C:\Users\Benutzer\AppData\Roaming\FileZilla\sitemanager.xml" gespeichert und konnten ausgelesen werden. Dies hat sich nun geändert, die neue Funktion kann direkt in dieser Datei kontrolliert werden.

Der Client ist sowohl für Linux, als auch für Windows oder MacOS verfügbar.

FileZilla

Ich programmiere einen Feedreader.

Dieser hat nun auch das Proxy Attribut des Perl Moduls LWP::UserAgent implementiert, um z.B. Feeds von I2P Eepsites und/oder Tor hidden services abonnieren zu können.

Wie man mittels der Perl Module URI::Fetch und LWP::UserAgent, eine solche URL downloadet, will ich hier kurz skizzieren:

#!/usr/bin/env perl

use strict;
use warnings;

use URI;
use URI::Fetch;

use LWP::UserAgent;
use LWP::Protocol::socks;

my $uri = URI->new("http://example.i2p/");

my $ua = LWP::UserAgent->new();
$ua->proxy( "http", "http://localhost:4444" );

my $response = URI::Fetch->fetch( $uri, UserAgent => $ua )
  or die URI::Fetch->errstr;

print $response->content;

Eepsite: Die (Pseudo-)Top-Level-Domain .i2p

Es wird mittels $ua->proxy( "http", "http://localhost:4444" ); der zu verwendende HTTP-Proxy gesetzt. Analog funktioniert das so auch mit anderen Protokollen, wie z.B. HTTPS, FTP usw.

Siehe auch: http://search.cpan.org/perldoc/LWP::UserAgent.

Tor hidden services: Die (Pseudo-)Top-Level-Domain .onion

Für das SOCKS-Protokoll, muss zusätzlich das Modul LWP::Protocol::socks eingebunden werden.

Um bspw. eine Datei von einem Tor hidden service downzuloaden, muss $ua->proxy( "http", "socks://localhost:9050" ); gesetzt werden.

Siehe auch: http://search.cpan.org/perldoc/LWP::Protocol::socks.

6. Juni 2017

Das dezentrale Soziale Netzwerk Friendica hat die Version 3.5.2 “Asparagus” veröffentlicht. Das früher, zusammen mit Diaspora als Facebook Killer bekannt gewordene Soziale Netzwerk, geht wieder einen Schritt weiter und erweitert die Föderation (Kommunikationsaustausch) mit dem zur Zeit sehr gehypten dezentralen Netzwerk Mastodon und ist auf die kommenden Änderungen beim Diasporaprotokoll vorbereitet.

Für den Endverbraucher ist vielleicht die auffälligste Änderung das “frio” Theme, das nun als stabil gilt, auch wenn es noch nicht 101%ig fertig ist. Es ist ja immer was Neues in der Warteschlange.

Für Betreiber eines Friendica Knotens ist wichtig, dass als Datenbank die MySQL Version 5.5.3 nun das absolute Minimum ist. Wobei die Zukunft bei MariaDB liegt und man jetzt schon umsteigen sollte, wenn man die Möglichkeit dazu hat. Nicht nur wegen der Zukunftssicherheit, sondern auch, weil MariaDB schneller sein soll.

Wo wir gerade bei “schneller” sind: es wurden auch die Worker Prozesse, die mit 3.5.1 eingeführt wurden optimiert, die das gesamte System noch leichtfüßiger machen.

Falls ihr Friendica noch nicht kennt und technisch nicht versiert seit, dann fragt freundlich bei euren Local Nerd nach, ob jemand einen Friendica Knoten betreibt und euch aufnimmt. Sicherlich freut er sich auch, wenn ihr einen Obulus in irgendeiner Art beisteuern wollt ;) Falls ihr zu den Leuten gehört, die sowieso einen Server betreiben, dann probiert es doch einfach aus und pullt den heissen Shit von Git. ;)

Wir sehen uns auf der anderen Seite …

 

 

Das dezentrale Soziale Netzwerk Friendica hat die Version 3.5.2 “Asparagus” veröffentlicht. Das früher, zusammen mit Diaspora als Facebook Killer bekannt gewordene Soziale Netzwerk, geht wieder einen Schritt weiter und erweitert die Föderation (Kommunikationsaustausch) mit dem zur Zeit sehr gehypten dezentralen Netzwerk Mastodon und ist auf die kommenden Änderungen beim Diasporaprotokoll vorbereitet.

Für den Endverbraucher ist vielleicht die auffälligste Änderung das “frio” Theme, das nun als stabil gilt, auch wenn es noch nicht 101%ig fertig ist. Es ist ja immer was Neues in der Warteschlange.

Für Betreiber eines Friendica Knotens ist wichtig, dass als Datenbank die MySQL Version 5.5.3 nun das absolute Minimum ist. Wobei die Zukunft bei MariaDB liegt und man jetzt schon umsteigen sollte, wenn man die Möglichkeit dazu hat. Nicht nur wegen der Zukunftssicherheit, sondern auch, weil MariaDB schneller sein soll.

Wo wir gerade bei “schneller” sind: es wurden auch die Worker Prozesse, die mit 3.5.1 eingeführt wurden optimiert, die das gesamte System noch leichtfüßiger machen.

Falls ihr Friendica noch nicht kennt und technisch nicht versiert seit, dann fragt freundlich bei euren Local Nerd nach, ob jemand einen Friendica Knoten betreibt und euch aufnimmt. Sicherlich freut er sich auch, wenn ihr einen Obulus in irgendeiner Art beisteuern wollt ;) Falls ihr zu den Leuten gehört, die sowieso einen Server betreiben, dann probiert es doch einfach aus und pullt den heissen Shit von Git. ;)

Wir sehen uns auf der anderen Seite …

 

 

5. Juni 2017

Ich bin quälfest.

Seit ca. 6 Wochen ärgere ich mich, dass Chromium immer einen neuen Browser aufmacht, wenn ich auf einen Link in einer Email klicke, oder so.

Heute habe ich mich per neu angelegten testuser "stretch" angemeldet, um zu checken, ob da ein grundsätzliches Problem vorliegt, könnte durchaus sein, ich fahre ja Debian Stretch, zwar kurz vor Stable, aber ....

Weit gefehlt, als "stretch" ist's kein Problem, nur mit meinem Hauptuser. Kurz daran gedacht mit einem 

diff --suppress-common-lines ./.config/chromium ../stretch/.config/chromium/

dem Problem auf die Schliche zu kommen, doch die Differenzen sind dermassen riesig, dass das aussichtslos erscheint.

Eigentlich etwas genervt, kommt mir der Gedanke doch mal in die Tweak-Utlilities reinzuschauen und was finde ich da?

Richtig, ich habe die Option "Launch new Instance" angeschaltet. Da muß ich mich ja nicht wundern! sad

Ich dachte vor einigen Wochen, das wäre eine gute Idee, wenn immer ein neues Terminal aufgemacht wird beim draufklicken, hatte aber nicht bedacht, dass man ja mit der Einstellung alle Favouriten beeinflußt.

Na gut, halte ich eben die Strg-Taste fest, wenn ich eine neue Instanz brauche

Die Umstellung von fryboter.de von Wordpress auf Bolt CMS verkommt langsam einer unendlichen Geschichte. Kaum bin ich \“fertig\“, kommt mir eine neue Idee, was ich noch ändern kann. Wichtig war mir aber schon immer die Suchfunktion.

Schon seit ich mir der Umstellung begonnen habe, hat es mich gestört, dass die Suchfunktion bei Bolt nicht funktioniert hat. Das Suchfeld einzubauen war eigentlich kein Problem. Aber bei jeder Suche bekam ich einen Fehler 404 angezeigt. Die Lösung des Problems zeigt mal wieder, dass auch Bolt CMS Ecken und Kanten hat. Wobei man hier nicht von einem Fehler an sich reden kann, sondern davon, dass Bolt CMS einige Stellschrauben hat.

So würde die Grundinstallation beispielsweise auf einen Artikel in Form von https://planetlinux.de/entrie/deutschsprachiger-usenet-server-mit-schwerpunkt-arch-linux verlinken. Da aber Google die Artikel in Form von https://planetlinux.de/deutschsprachiger-usenet-server-mit-schwerpunkt-arch-linux indexiert hat, ist das blöd, weil ich nicht von null anfangen oder mit htaccess tricksen will.

Hier kommt nun der Teil von Bolt CMS ins Spiel der mir immer noch Kopfschmerzen bereitet. Das Routing. Hiermit lassen sich kurz gesagt die Aufrufe umbiegen. Um das “entrie/” aus den Artikellinks zu entfernen habe ich folgendes als erstes in die Datei routing.yml eintragen.

pagebinding:
path: /{slug}
defaults:
   _controller: controller.frontend:record
   contenttypeslug: entrie
   contenttype: entriest;

Als erstes weil die Einträge ganz oben die höchste Priorität haben. Um so weiter unten Sie in der Datei stehen um so weniger Priorität haben sie (und werden somit zum Beispiel nicht beachtet). Das Beispiel zeigt zum Beispiel dass alle Inhalte mit dem Inhaltstyp entries über den Pfad /slug ereichbar sind. Also zum Beispiel https://planetlinux.de/deutschsprachiger-usenet-server-mit-schwerpunkt-arch-linux.

Ein Stückchen weiter unten in der Datei ist bereits die Route für die Suche vorhanden.

search: path: /search defaults: _controller: controller.frontend:search

Aber egal was ich versucht habe, die Suche hat immer nur den Fehler 404 ausgespuckt. Eine Zeit lang war ich soweit, dass es zukünftig einfach keine Suchfunktion geben wird. Punkt. Ende. Aus. Die Lösung war dann doch recht “einfach”. So richtig kapiere ich sie aber trotzdem nicht. Ich habe einfach den Teil mit der sich auf die Suche bezieht über den Teil mit dem Pagebinding eingetragen. Und schon funktioniert die Suchfunktion. Klar es hat etwas mit der Priorität zu tun. Aber /search und /{slug} sind doch zwei unterschiedliche Sachen, oder nicht? Naja das ist erst mal egal. Es funktioniert ja.

Was jetzt noch fehlt ist der RSS-Feed für eine bestimmte Kategorie. Irgendwie muss ich ja meine Artikel auf osbn.de veröffentlichen. Es gibt zwar eine Erweiterung aber diese kann “nur” einen seitenweiten Feed bzw. einen pro Inhaltstyp erstellen. Und der Inhaltstyp umfasst alle Artikel die ich auf fryboyter.de veröffentliche. Da hier auch mal der eine oder andere Artikel veröffentlicht wird, der nichts mit osbn.de zu tun hat ist das blöd… Noch blöder ist es, dass ich absolut keine Ahnung habe wie ich diese Erweiterung ändern könnte.

Ich habe daher einfach mal den Entwickler der Erweiterung auf Github gefragt, ob eventuell in absehbarer Zeit auch Feeds für einzelnen Kategorien möglich sein werden. Bisher habe ich aber noch keine Antwort erhalten. Zur Not habe ich mir auch einfach mal eine PHP-Datei gezaubert die mir einen Feed erstellt. Besonders froh bin ich aber nicht mit der Lösung. Wer will, kann sie sich ja mal ansehen…

echo '<'.'?xml version="1.0" encoding="UTF-8"?'.'>'; ?> 
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    >

<channel>
    <title>Fryboyter.de</title>
    <atom:link href="https://fryboyter.de/files/feed.xml" rel="self" type="application/rss+xml" />
    <description></description>
    <language>de-DE</language>
    <link>https://fryboyter.de</link>    
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>

<?php 

$host = "localhost";
$user = "Nutzer";
$pass = "Passwort";
$dbase = "Datenbankname";

$connection = mysqli_connect("$host" , "$user" , "$pass") OR DIE ("Keine Verbindung zu der Datenbank moeglich.");
mysqli_select_db($connection , $dbase) or die ("Auswahl der Datenbank nicht moeglich.");

// Datenbankabfrage
$query = "SELECT bolt_entries.slug AS slug, bolt_entries.datepublish AS date, bolt_entries.title AS title, bolt_entries.body AS blabla FROM bolt_entries, bolt_taxonomy WHERE bolt_entries.id = bolt_taxonomy.content_id AND bolt_taxonomy.slug = 'osbn' AND bolt_entries.status = 'published' ORDER BY bolt_entries.datepublish DESC LIMIT 20";  
$result = mysqli_query($connection , $query) or die (mysql_error()); 

// Ausgabe der Daten
while ($row = mysqli_fetch_array($result)){ 
    $slug = $row['slug']; 
    $title = $row['title']; 
    $blabla = $row['blabla']; 
    $pubdate = strtotime($row['date']);
    $pubdate = date('r', $pubdate);     
?> 
    <item>
        <title><?php echo $title; ?></title>
        <link>https://planetlinux.de/<?php echo $slug; ?></link>
           <guid isPermaLink="false">https://fryboyter.de/<?php echo $slug; ?></guid>
        <pubDate><?php echo $pubdate; ?></pubDate>
        <description><![CDATA[<?php echo $blabla; ?>]]></description>
    </item>
<?php } /* close while*/ ?>

</channel>
</rss>

Die Ausgabe der Datei in eine XML-Datei weitergeleitet erzeugt zumindest schon mal einen validen Feed. Allerdings müsste ich die Datei per Cronjob laufen lassen. Auf eine Lösung wie die Datei aufgerufen wird, sobald ein neuer Artikel veröffentlicht wurde, bin ich noch nicht gekommen.

Das aktuelle Humble Book Bundle liefert einige Linux- und Open-Source-Bücher für den kleinen Geldbeutel. Zu beachten ist, dass alle Bücher nur auf Englisch erhältlich sind. Enthalten sind:

Ab 1 US-Dollar:

  • Pro Git (Second Edition)
  • Ansible: From Beginner to Pro
  • Certified OpenStack Administrator Study Guide

Ab 8 US-Dollar:

  • Pro Vim
  • Practical LPIC-1 Linux Certification Study Guide
  • Beginning Ubuntu for Windows and Mac Users
  • Introduction to Linux Distros
  • Nginx: From Beginner to Pro

Ab 15 US-Dollar:

  • Pro Linux High Availability Clustering
  • Practical Linux Topics
  • Pro Docker
  • Introducing Ethereum and Solidity

Wie immer kann über Paypal, Amazon oder Kreditkarte bezahlt werden. Das Geld kann aufgeteilt werden auf den Verlag Apress, auf die Humble-Macher und auf die beiden Hilfsorganisationen Electronic Frontier Foundation und International Rescue Committee.

Das aktuelle Humble Book Bundle liefert einige Linux- und Open-Source-Bücher für den kleinen Geldbeutel. Zu beachten ist, dass alle Bücher nur auf Englisch erhältlich sind. Enthalten sind:

Ab 1 US-Dollar:

  • Pro Git (Second Edition)
  • Ansible: From Beginner to Pro
  • Certified OpenStack Administrator Study Guide

Ab 8 US-Dollar:

  • Pro Vim
  • Practical LPIC-1 Linux Certification Study Guide
  • Beginning Ubuntu for Windows and Mac Users
  • Introduction to Linux Distros
  • Nginx: From Beginner to Pro

Ab 15 US-Dollar:

  • Pro Linux High Availability Clustering
  • Practical Linux Topics
  • Pro Docker
  • Introducing Ethereum and Solidity

Wie immer kann über Paypal, Amazon oder Kreditkarte bezahlt werden. Das Geld kann aufgeteilt werden auf den Verlag Apress, auf die Humble-Macher und auf die beiden Hilfsorganisationen Electronic Frontier Foundation und International Rescue Committee.