So rufst du deine Lieblingsprogramme mit einem Shortcut auf (Windows-Taste + 1,2,3)

Linux Pinguin

Hallo Freunde der Sonne,

wenn du immer wieder deine Lieblingsprogramme (Internetbrowser, Terminal, Code-Editor, …) in den Fokus bringen möchtest, stellst du relativ schnell fest, dass der Weg über „Alt-TAB“ mit der Zeit umständlich ist. Unter Windows gibt es wohl die Möglichkeit, die Lieblingsprogramme mit dem Shortcut „Windows-Taste + Nummer“ aufzurufen. Mein bisheriger Workaround unter Linux war es, das Tool „wmctrl“ zu benutzen und einen entsprechenden Shortcut dafür einzurichten. Heute habe ich jedoch gelernt, dass das Ganze sehr viel einfacher geht, und zwar ebenfalls durch Drücken der Windows-Taste zusammen mit einer Nummer. Die Nummerierung erfolgt hierbei in der Reihenfolge, wie das jeweilige Programm in der Taskleiste gelistet ist. Ist das Terminal das erste Programm in der Taskleiste, kannst du es also durch „Windows+1“ starten oder ggf. in den Fokus bringen. Die Shortcuts funktionieren unter Linux Mint 19.3 mit Cinnamon problemlos. Inwiefern diese Shortcuts unter anderen Linux-Distros funktionieren, müsst ihr ausprobieren.

Liebe Grüße
Stefan

Installation von pi-hole [AdBlocker] auf einem Raspberry Pi

Hallo Freunde der Sonne,

die viele Werbung im Internet nervt, meistens zumindest. Manchmal ist es ja ganz nett, wenn man über neue Produkte informiert wird, doch die unglaubliche Menge an Werbung lenkt in der Regel nur vom Surfen ab.

Im folgenden möchte ich Euch mein Tutorial zur Installation und Konfiguration von pi-hole anbieten. Pi-hole ist eine Software, die u.a. auf dem Raspberry Pi läuft und als AdBlocker funktioniert. Das besondere dabei ist, dass über pi-hole ein DNS eingerichtet wird und somit nicht jedes Endgerät (Desktop Rechner, Tablet oder Handy) einen eigenen AdBlocker benötigt. Ich werde die Anleitung on-the-fly erstellen, das heißt, ich werde die Installation und Konfiguration des pi-hole durchführen und parallel dazu diesen Blog-Post schreiben. Dadurch möchte ich gewährleisten, dass auch alles so funktioniert, wie es soll. Also, los geht’s!

Was ihr braucht:

  • einen Raspberry (am besten mit WLAN onboard) Amazon.de
  • eine gute SD-Karte (+8GB) Amazon.de
  • Software: Etcher, ein Betriebssystem für den Pi und pi-hole
  • Ein Netzteil für den Pi Amazon.de
  • am besten einen freien Monitor, Tastatur und eine Maus
  • Gedult und etwas Erfahrung mit Unix kann nicht schaden

Installation von Raspbian mithilfe von Etcher

Als erstes ladet ihr Euch ein Raspbian herunter. Für welche Version ihr Euch entscheidet, sollte nicht so wichtig sein. Ihr könnt Euch auch das NOOB herunterladen. Ich habe mich für das raspbian lite (Kurzer Nachtrag: Nehmt lieber nicht das lite. Es kommt ohne Fenster-Manager daher. Man kann zwar nachträglich einen xorg-server installieren, doch das ist recht aufwendig. Wenn ihr also schnell Spaß haben wollt, dann entscheidet euch für ein Raspbian mit Desktop-Umgebung) entschieden. Den Download gibt es hier:

Download des Raspbian Betriebssystems

Es gibt viele Möglichkeiten, wie ihr das Betriebssystem auf eine SD-Karte bekommt: unter *nix mit dd oder mit dem Software-Tool Eurer Wahl unter Windows. Eine elegante Variante bietet das Tool Etcher. Den Download gibt es hier:

Download Etcher

Ich habe Etcher als Image/Abbild einfach das .zip-File vom raspbian übergeben. Ihr müsst natürlich höllisch aufpassen, dass ihr auch das korrekte
Speichermedium wählt, also nicht auf eure externe Daten-Festplatte schreiben ;-). Hier seht ihr, wie das Programm Etcher in Aktion aussieht:

etcher-raspbian

Nun könnt ihr die SD-Karte in den Raspberry Pi schieben, die Peripherie-Geräte (Monitor, Tastatur und Maus) anschließen und den Pi booten lassen. Es dauert eine Weile bis der Pi hochgefahren ist und alle Funktionen gestartet sind. ACHTUNG! Bei einer deutschen Tastatur sind z und y vertauscht. Dies müsst Ihr beim Eingeben des Default-Passworts berücksichtigen. Das Default-Passwort ist: „pi“ für den Benutzer und „raspberry“ für das Passwort.

Wer dennoch mit der Lite-Version starten möchte, findet hier eine Anleitung zur Installation einer Desktop-Umgebung, falls erwünscht:

Anleitung zur Konfiguration einer Desktop-Umgebung

Kurze Konfiguration beim Start des Pi

Nachdem der Pi das erste Mal hochgefahren ist, öffnet sich ein Dialogfeld zur Konfiguration. Ich gehe davon aus, dass ihr das Raspbian mit Desktop-Umgebung installiert habt. Nun könnt ihr die Sprache und den Ort einstellen, euch in das Netzwerk (WLAN) einloggen und die Updates installieren.

Eine statische IP-Adresse vergeben und ssh-Unterstützung einrichten [Putty]

Das Aktivieren der ssh-Unterstützung geht sehr schnell vonstatten. Dazu muss man allerdings einen Monitor und eine Tastatur an den Pi anschließen. Ich habe bisher keine Möglichkeit gefunden, das Ganze ohne Peripherie-Geräte zu konfigurieren. Falls jemand eine Möglichkeit kennt, die ssh-Schnittstelle via Fernzugriff zu aktivieren, darf er mich sehr gerne kontaktieren. Also, einfach die Raspberry-Konfiguration aufrufen mithilfe des folgenden Befehls:


sudo raspi-config

Unter dem Menüpunkt „Schnittstellen“ könnt ihr bei „ssh“ das Häckchen setzen. Das war es dann auch schon. Nun könnt ihr über eine Console via ssh auf den Raspberry zugreifen. Ihr könnt es mit einem Terminal erledigen. Ich verwende für den Fernzugriff gerne das Tool „Putty“.

putty

Mit Putty könnt ihr die Zugangsdaten für euren ssh-Zugriff abspeichern. Dazu trägt ihr einfach die IP-Adresse ein und wählt den Port aus. Bei mir funktioniert es mit dem Port 22. Als Verbindung wählt ihr ssh aus. Nachdem ihr auf Öffnen klickt, sollte sich ein Terminal öffnen und euch bitten, die Zugangsdaten einzutragen. Der Nutzername ist standardmäßig „pi“ und das Passwort, wenn ihr es nicht geändert habt, ist „raspberry“. Nun habt ihr via Terminal vollen Zugriff auf den Raspberry.

Ihr könnt theoretisch auf die Einrichtung einer statischen IP-Adresse verzichten. Dann kann es jedoch passieren, dass sich der Raspberry bei einem Neustart eine neue, andere IP-Adresse zuweist. Damit sind die Netzwerkeinstellungen dann dahin. Es gibt im Internet zahlreiche Anleitungen, wie man eine feste, statische IP-Adresse für den Pi einrichtet. Hier sind mal zwei Anleitungen, die das Einrichten einer statischen IP-Adresse erklären:

jankarres.de

thomaskekeisen.de

Ich beschreibe hier mal, wie es bei mir funktioniert hat, die statische IP für den Raspberry einzurichten. Es gibt, wie ihr schnell im Netz finden werdet, mehrere Möglichkeiten, die IP statisch zu setzen. Ich habe mich für den Weg empfohlen, der für neuere Raspbian-Distributionen empfohlen wird: über einen Eintrag in die Datei /etc/dhcpcd.conf. Ihr öffnet mit eurem Lieblingseditor (Emacs ;-)) und dem „sudo“-Befehl die entsprechende Datei. Die statische IP-Adresse könnt ihr innerhalb eures Netzwerkes frei wählen. Ich habe mich für eine IP-Adresse am Ende des IP-Bereichs entschieden. Vor dem Einrichten der statischen IP-Adresse solltet ihr überprüfen, ob die gewünschte IP nicht zufällig schon vom Router vergeben wurde. Dazu setzt ihr einfach einen Ping-Befehl für die entsprechende IP ab. Das geht so:


ping 192.168.178.199

Es sollten keine Pakete an diese IP ankommen. Als Antwort solltet ihr so etwas wie „unreachable“ erhalten. Sobald ihr den Eintrag in die Datei „/etc/dhcpcd.conf“ geschrieben habt (siehe unten), könnt ihr entweder das Netzwerk-Interface neu starten oder ihr bootet den Raspberry einfach neu. Letzteres ist wahrscheinlich die sicherere Variante. Unter „hostname -I“ sollte nun die von euch eingetragene IP zu sehen sein.


# Konfiguration der festen IP-Adresse
interface wlan0
static ip_address=192.168.178.199/24
static routers=192.168.178.1
static domain_name_servers=192.168.178.1

interface eth0
static ip_address=192.168.178.198/24
static routers=192.168.178.1
static domain_name_servers=192.168.178.1

Installation der pihole-Software

Unter dem folgenden Link findet ihr verschiedene Möglichkeiten, pi-hole zu installieren:

pi-hole auf Github

Ich habe mich für diese Möglichkeit entschieden:


curl -sSL https://install.pi-hole.net | bash

Nach dem Download startet die Konfiguration automatisch. Eine gute Anleitung zur Konfiguration der Einstellungen gibt es hier:

Pi-hole Erfahrungsbericht

Mithilfe dieser Anleitung sollte die Konfiguration von pi-hole schnell und einfach vonstatten gehen.

Die IP-Adresse des Pi als DNS im Router eintragen

Nachdem ich pi-hole installiert hatte, habe ich schon gewundert, warum pi-hole anscheinend nicht ordentlich funktioniert. Der Grund hierfür: ich hatte vergessen, die statische IP-Adresse des Raspberry in den DNS-Einstellungen des Routers einzutragen. Also, unbedingt daran denken, den Raspberry als DNS einzutragen. Nun sollte alles passen…

pihole

Hinzufügen einer neuen Block-Liste

Anfangs sind nur recht wenige Domains über pi-hole geblockt. Ein Eintrag in die Blacklist a la „www.spiegel.de“ bringt nichts, da die Werbung in der Regel über eine andere Domain integriert wird. Es empfiehlt sich also, eine „professionelle“ Block-Liste in pi-hole zu integrieren. Dazu geht ihr in eurem pi-hole Adminpanel auf „Settings“ und dann weiter auf „Blocklists“. Im Eingabefeld trägt ihr die folgende URL ein:

Umfangreiche Liste mit geblockten Domains

Danach klickt ihr auf „save“ und zuletzt auf „save & update“. Es dauert eine Weile, bis die Blocklist aktualisiert worden ist. Wenn alles gut gegangen ist, sollte im Webpanel des pi-hole unter „Domains on Blocklist“ eine Zahl jenseits der 2 Millionen stehen. Okay, ich denke das war’s. Meldet euch einfach, falls ihr in dieser Anleitung Fehler findet oder irgendwas nicht funktioniert, wie es sollte.

Seiten auf die Whitelist setzen

Heute Morgen musste ich feststellen, dass durch den AdBlocker die Facebook-App auf dem Handy nicht mehr funktioniert hat. Das war ein bisschen ärgerlich, aber nur ein bisschen. Ihr habt die Möglichkeit, bestimmte Seiten auf die „Whitelist“ zu setzen. Hier findet ihr eine Seite mit Einträgen für die Whitelist. Einfach den passenden Eintrag suchen, mit dem Pi verbinden und den Befehl abfeuern:

Seiten für die Whitelist

Genießt den Tag und Happy Painting!
Stefan

Bloggen mit WordPress aus einem Ruby Skript heraus

Hallo Freunde der Sonne,

ich war die letzten Tage auf der Suche, wie man das Bloggen etwas einfacher und schneller bewerkstelligen kann. Ich habe die Zugangsdaten zu meinen Webseiten nicht alle auswendig parat, denn ich nutze zur Verwaltung der Passwörter ein Datenbankprogramm. Am liebsten wäre mir eine einfache Implementierung von XML-RPC für Qt/C++ gewesen, doch die Suche danach habe ich nach einigen Stunden aufgegeben. Nun bin ich bei einem Ruby-Gem namens „wordpressto“ gelandet. Dieses Gem scheint seinen Dienst ganz gut zu bewerkstelligen. Die wichtigsten Zeilen im Skript sind die folgenden:



  require 'wordpressto'
  blog = WordPressto::WordpressBlog.new :url => 'https://deinewebseiteadresse.com/xmlrpc.php',
                                        :username => 'DeinUsername', :password=> 'DeinPasswortzumBlog'

  

Für den Moment scheint es recht zuvervlässig zu funktionieren. Den Code-Schnipsel habe ich von dieser Seite hier: wordpressto

Danke fürs Lesen und Happy Painting!
Stefan

Anzeigen aller geöffneten Fenster im Terminal [Linux]

Hallo Freunde der Sonne,

hier noch ein ganz kurzer Beitrag, bevor ich ins Bett gehe. Ist ja schon wieder ziemlich spät geworden. Unter Linux ist normalerweise das Tool „wmctrl“ installiert. Falls nicht, könnt ihr das Tool mit dem Paketmanager eurer Wahl installieren. Mit dem Aufruf:


wmctrl -l

könnt Ihr euch dann die offenen Fenster anzeigen. Es geht aber noch weiter: man kann sich damit nämlich sehr flinke Tastenkombinationen erstellen, mit Hilfe derer man seine Favoriten direkt ansteuern kann. Ich werde den Stift an dieser Stelle morgen wieder aufnehmen.

Gute Nacht erst mal. Happy Painting!
Stefan

Hier bin ich wieder oder besser gesagt, immer noch! Mit diesem Code hier, könnt ihr das gewünschte Fenster in den Vordergrund bringen:


wmctrl -a Atom

Mit diesem kurzen Befehl wird zum Beispiel der Editor „Atom“ wieder in den Vordergrund geholt. Dazu muss er allerdings geöffnet sein. Wenn Ihr jetzt noch das Ganze unter „Tastatur“ in eine Tastenkombination verpackt, habt Ihr einen super schnellen Zugriff auf Eure wichtigsten Applikationen.

Happy Painting!
Stefan

Die Zeit der Ausführung von Cron Jobs ändern

Hallo Freunde der Sonne,

Nachtrag vom 5. März 2019:

Leider hat die weiter unten beschriebene Prozedur nicht funktioniert. Ich bin nun dazu übergegangen, mein Back-Skript mit einem „normalen“ crontab-Eintrag zu starten und nicht, wie ursprünglich gewollt, im cron.daily-Ordner via anacron. Dabei bin ich so vorgegangen: mit dem Befehl


crontab -e -u YourUsername

habe ich die entsprechende crontab-Datei geöffnet. In diese Datei habe ich den folgenden Eintrag geschrieben:


10 10,15,20 * * * /media/ianus/Data/backup_mif.sh

Mit Hilfe dieses Code-Snippets wird nun jeweils um 10:10, um 15:10 und um 20:10 das Skript „backup_mif.sh“ ausgeführt. Ihr könnt ja nochmals in der Dokumentation nachschauen, wenn ihr die anderen Parameter wie Woche oder Monat anpassen möchtet. Ich hoffe, das hilft dem ein oder anderen weiter.

Herzliche Grüße und Happy Painting!
Shark Twayne

Das folgende hier hat nicht funktioniert:

ich habe mir der Einfachheit halber einen Cron Job für das Backup meiner wichtigsten Files angelegt. Ein Mal am Tag soll das Skript durchlaufen. Das Dumme ist nur, dass „anacron“ in den frühen Morgenstunden durchläuft. Ich bin davon ausgegangen, dass „anacron“ automatisch einen überfälligen Cron Job startet, sobald der PC gebootet wird. Dem ist anscheinend nicht so. Vielleicht liegt es daran, dass meine Datenpartition beim Systemstart noch nicht gemounted ist. Naja, jetzt bin dazu übergegangen, die Zeiten für das cron.daily zu ändern und zwar so:


START_HOURS_RANGE=9-23

Diesen kurzen Code-Schnipsel habe ich in die Datei „/etc/anacrontab“ eingefügt. Dadurch sollte das Backup-Skript nur zu den angegeben Zeit ausgeführt werden. Falls es dennoch zu Problemen kommen sollte, werde ich dies hier natürlich bekannt geben.

Liebe Grüße und Happy Painting!
Stefan

Notify-send in einem Bash/cron Skript

Hallo Freunde der Sonne,

ich habe mir vor einiger Zeit ein cron-Skript erstellt, mit dem ich meine wichtigsten Dateien jede Stunde sichere. Dazu habe ich ein Bash-Skript erstellt und es in den Ordner „/etc/cron.hourly“ kopiert. Wichtig ist zu wissen, dass im Namen des Skripts kein Punkt (.) vorkommen darf, ansonsten funktioniert das Ganze nicht. Um einen Überblick zu erhalten, wann das Skript gelaufen ist und ob es erfolgreich war, wollte ich mir mit dem Befehl „notify-send“ eine Mitteilung anzeigen lassen. Doch sämtliche Versuche sind gescheitert! Vom Terminal aus hat es funktioniert, jedoch nicht vom Skript im cron-Ordner aus. Heute habe ich bei Stack Overflow eine Lösung gefunden: man muss den User, für den die Mitteilung gedacht ist, explizit in das Skript einfügen. In dem kurzen Bash-Listing findet ihr den entsprechenden Code:


sudo -u YourUsername DISPLAY=:0.0 notify-send 'Battery low'

Ich hoffe, das hilft dem ein oder anderen von euch weiter. Liebe Grüße und Happy Painting!
Stefan

Der Hammer: Dokumente erstellen mit R Markdown

Hallo Freunde der Sonne,

vor einigen Tagen habe ich mir R Markdown nochmals etwas genauer angeschaut. Und, ich muss sagen, es ist wirklich der Hammer: aus einer R Markdown-Datei lassen sich .docx, .pdf, .epub und .html Dokumente generieren. Man kann mit der Option „keep_tex: yes“ eine .tex-Datei erzeugen lassen, die man einem potentiellen Verlag zuschicken könnte. Für Leute, die wissenschaftlich arbeiten, ist (R) Markdown ein wirklicher Gewinn, denn dein „Old-School“-Professor besteht wohl noch auf die Einreichung eines .docx-Files, was mit (R) Markdown überhaupt kein Problem ist.

Ich hatte jedoch zu Anfang etwas Probleme mit der Formatierung der Abbildungsunterschriften. Nach einigem hin und her habe ich dann den Fehler gefunden: es lag an einem fehlenden Zeilenende nach dem R Chunk.

Ich habe für mich nun die perfekte Kombination gefunden, um (wissenschaftliche) Dokumente zu erstellen. Atom (Editor) + (R) Markdown + document-outline. Im folgenden stelle ich Euch kurz ein minimalistisches Beispiel einer .(R)md-Datei vor:


---
title: 'Das ist ein Minimal-Beispiel'
author: Shark Twayne (shark.twayne@gmail.com
date: '`r format(Sys.time(), "%B %d, %Y, %H:%M")`'
output:
  bookdown::pdf_document2:
    keep_tex: yes
    number_sections: no
    toc: no
  bookdown::html_document2: null
  bookdown::word_document2:
    reference_docx: stylefile2.docx
header-includes:
- \usepackage{lineno}
- \linenumbers
- \usepackage{setspace}
- \onehalfspacing
fontsize: 12pt
fontfamily: mathpazo
---

QT/C++: Die Treiber für die Datenbank laden

Hallo Freunde der Sonne,

ich habe die letzten 2-3 Tage damit verbracht, meine Programmier-Kenntnisse zu erweitern. Ich habe eine kleine Applikation entwickelt, mit der man relativ einfach die Arbeitszeiten in eine Datenbank (sqlite) schreiben kann. Beim Installieren von Qt 5.11 unter Windows hatte ich zuerst Probleme mit dem Laden der Datenbank-Treiber. Die Lösung für das Problem ist folgende: Man sucht mit dem Befehl „qDebug() << QCoreApplication::libraryPaths();“ den aktuellen Pfad raus und erstellt unter diesem Pfad einen Ordner mit dem Namen „sqldrivers“. Nun kopiert man die .dll-Datein aus „Qt/…/plugins/sqldrivers“ in das soeben erstellte Verzeichnis. Nun kann die Anwendung auf die gewünschten Datenbanken zugreifen. Viel Spaß bei der Affenhitze…

Wiederaufbau der Website nach einem üblen Hack

Anfangs dieses Jahres wurde meine Webseite gehackt. Die IP-Adressen lassen vermuten, dass der Hack aus Russland oder China vollzogen worden ist. Ich werde in den nächsten Tagen nun mein Bestes geben, die Webseite wieder ordentlich aussehen zu lassen. Also, schaut hin und wieder mal hier vorbei und macht euch einen Eindruck über meine „neue“ Webseite.
Vielen Dank schon mal fürs Reinschauen…

Steps