Normale Ansicht

MongoDB-Beispieldatenbanken für Docker einrichten

27. November 2023 um 07:51

Aktuell setze ich mich ein wenig mit MongoDB auseinander und habe mir lokal mit Docker eine Test-Installation eingerichtet:

docker run --name mongo -d mongodb/mongodb-community-server:latest

docker exec -it mongo mongosh

  Using MongoDB: 7.0.3
  Using Mongosh: 2.1.0

test> ...

Je nachdem, wie Sie Docker installiert haben, müssen Sie sudo vor jedes docker-Kommando stellen.

Zum Kennenlernen hätte ich nun gerne ein paar Beispieldatenbanken. Und tatsächlich stellt Mongo für sein Cloud-Angebot Atlas eine ganze Palette von Testdatenbanken zur Verfügung. Eine Kurzbeschreibung der Datenbanken finden Sie hier:

https://www.mongodb.com/docs/atlas/sample-data

Genau die Datenbanken hätte ich gerne in meiner lokalen Installation als »Spielwiese«. Leider ist die Installation dieser Beispieldatenbanken bei der lokalen Verwendung von MongoDB umständlich. Auf GitHub gibt es Dumps (Backups) der Beispieldateien im JSON-Format:

git clone https://github.com/mcampo2/mongodb-sample-databases.git
cd mongodb-sample-databases
lstree sample_*

  sample_airbnb/
    listingsAndReviews.json
  sample_analytics/
    accounts.json
    customers.json
    transactions.json
  sample_geospatial/
    shipwrecks.json
  ...

Jetzt geht es darum, die Datenbanken zu importieren. Unter Linux oder macOS führen Sie dazu für jede JSON-Datei aus samples_xxx ein Kommando nach dem folgenden Muster aus:

cat sample_airbnb/listingsAndReviews.json | \
  docker exec -i mongo mongoimport --db sample_airbnb --collection listingsAndReviews

Beachten Sie, dass Sie docker exec mit der Option -i ausführen müssen (nicht -it wie bisher für den interaktiven Betrieb), damit die Weitergabe von Daten über den Pipe-Operator | funktioniert.

Anstatt nun jede JSON-Datei einzeln zu importieren, bietet sich die Formulierung eines winzigen Scripts an. Er richtet für jedes DB-Verzeichnis sample_xxx eine gleichnamige Datenbank ein und importiert jedes JSON-Dokument als Collection. (Beachten Sie, dass die auf Atlas definierten Indize nicht eingerichtet werden. Wenn Sie zum Testen einen Index brauchen, müssen Sie diesen selbst einrichten.)

#!/bin/sh
for db in sample_*; do
  for file in $db/*.json; do
      collection="$(basename $file .json)"
      cat $file | docker exec -i mongo mongoimport --db $db --collection $collection
  done
done

Das Script muss in dem Verzeichnis ausgeführt werden, in dem sich die von GitHub heruntergeladenen sample_xxx-Verzeichnisse befinden.

Nach dem Import können Sie sich in der Mongo Shell überzeugen, dass alles geklappt hat:

docker exec -it mongo mongosh

test> show dbs

  admin                40.00 KiB
  config               72.00 KiB
  local                40.00 KiB
  sample_airbnb        52.09 MiB
  sample_analytics      9.39 MiB
  sample_geospatial   784.00 KiB
  sample_mflix         28.39 MiB
  sample_supplies     968.00 KiB
  sample_training      61.30 MiB
  sample_weatherdata    2.55 MiB
  samples_airbnb       52.09 MiB
  test                112.00 KiB

test> use sample_airbnb

sample_airbnb> show collections

  listingsAndReviews

sample_airbnb> db.listingsAndReviews.findOne()

 {
    _id: '10009999',
    listing_url: 'https://www.airbnb.com/rooms/10009999',
    name: 'Horto flat with small garden',
    ...
  }

Quellen/Links

📚 Das Buch »Wärmepumpen« ist erschienen

23. November 2023 um 15:25

Als letzte und vielleicht spannendste Veröffentlichung in diesem Jahr ist heute das Buch »Wärmempumpen« erschienen. Es beschreibt — fernab vom politischen Getöse — die Funktionsweise und die Vor- und Nachteile von Wärmepumpen. In diesem Buch, das ich zusammen mit dem Energieberater Tobias Otta verfasst habe, wollen wir Sie beraten, unter welchen Umständen der Einsatz von Wärmepumpen zweckmäßig ist und ob sich das auch finanziell lohnt.

Dabei belassen wir es natürlich nicht bei der Wärmepumpe an sich, sondern behandeln auch die vielen Detailfragen rund um die Integration mit der Heizung (Warmwasser, Hydraulik, Puffer usw.). Wir erklären Ihnen die Unterschiede zwischen verschiedenen Wärmepumpenarten (Luft-, Erdwärme- und Grundwasserwärmepumpen) und wie Sie die Wärmepumpe im Sommer auch zum Kühlen verwenden können. Außerdem erläutern wir, warum eine Kombination mit einer PV-Anlage oft sinnvoll ist, obwohl die Sonne gerade im Winter, wenn der größte Strombedarf besteht, am wenigsten scheint. Ein ausführliches Kapitel mit Beispielen aus der Praxis samt umfassenden Kostenkalkulationen zeigt, welche Kosten bei der Errichtung und der Verwendung zu erwarten sind (natürlich immer im Vergleich zu einer Gasheizung).

Weitere Informationen zum Inhalt des Buch sowie eine Leseprobe finden Sie hier.

Umfang: 236 Seiten
ISBN: 978-3-8362-9773-8
Preis: Euro 39,90 (in D inkl. MWSt.)

📚 Linux (18. Aufl.) und Photovoltaik (2. Aufl.) erschienen

27. Oktober 2023 um 09:26

Im Herbst-Doppelpack sind diese Woche die 18. Auflage meines Linux-Buchs und die 2. Auflage des Photovoltaik-Buchs erschienen, das ich zusammen mit Christian Ofenheusle verfasst habe:

Das Linux-Buch habe ich wie üblich vollständig aktualisiert. Es berücksichtigt jetzt alle bis Sommer 2023 aktuellen Linux-Distributionen. Sämtliche Anleitungen und Setups wurden damit getestet. Ausführliche Informationen zum Inhalt des Buchs finden Sie hier.

Beim Photovoltaik-Buch ergeben sich die meisten Neuerungen aus gesetzlichen Änderungen. Das Buch geht nun auf das »Photovoltaik-Paket I« ein, das in Deutschland diverse Erleichterung für den Betrieb von Balkonkraftwerken mit sich bringt. Gleichzeitig haben wir das Buch an einigen Stellen ergänzt und erweitert. Lesen Sie hier die vollständige Beschreibung des Buchs!

Remote Desktop und Raspberry Pi OS Bookworm

21. Oktober 2023 um 15:47

Die aktuelle Raspberry-Pi-Version verwendet auf den Raspberry-Pi-Modellen 4B, 400 sowie 5 Wayland als Default-Grafiksystem. Aus diesem Grund funktionieren viele Programme zur Fernwartung bzw. für Remote-Desktop-Funktionen nicht mehr wie gewohnt. Betroffen ist unter anderem RealVNC, bisher die Default-Lösung der Raspberry Pi Foundation. RealVNC verspricht etwas vage, im Verlauf des Jahres 2024 eine Wayland-kompatible Version ihrer Software zu veröffentlichen. An dieser Stelle erkläre ich Ihnen, was Sie tun können, wenn Sie nicht solange warten möchten.

Xorg versus Wayland

Das X Window System und der Xorg-Server bilden das traditionelle Grafiksystem von Linux. Es basiert auf einem Client/Server-Modell und hat sich jahrzehntelang bewährt. Allerdings ist der Xorg-Server mit vielen Altlasten und Sicherheitsproblemen verbunden. Die Software wird schon seit mehrere Jahren nicht mehr weiterentwickelt und kaum noch aktiv gewartet. Seine Zeit läuft ab.

Der Nachfolger von Xorg heißt Wayland ist dagegen »nur« ein neues Protokoll für die Kommunikation zwischen dem Wayland Compositor (einem Display-Server) und den Anwendungsprogrammen (Clients). Wayland bricht mit dem X Window System und verspricht ein System, das schlanker, sicherer und effizienter ist. Wayland gehört die Zukunft.

Zwar sind mittlerweile viele Programme Wayland-kompatibel, aber leider nicht alle. Besonders große Probleme gibt es bei Programmen, die den Bildschirminhalt auslesen wollen, also Tools für Screenshots, Screencasts, Screen Sharing und Remote Desktop. Derartige Funktionen sind auch unter Wayland möglich, müssen aber vollständig neu implementiert werden.

Aktuelles Grafiksystem ermitteln

Ob Ihr Raspberry Pi Wayland oder Xorg als Grafiksystem verwendet, stellen Sie am einfachsten mit einem Kommando im Terminal fest:

echo $XDG_SESSION_TYPE
  wayland

Im Desktop-Betrieb lauten die möglichen Antworten wayland oder x11. In einer SSH-Session im Textmodus lautet das Ergebnis dagegen tty.

Lösung 1: Xorg statt Wayland verwenden

Die bei weitem einfachste Lösung besteht darin, das Grafiksystem von Wayland zurück auf Xorg umzustellen. Dazu führen Sie in einem Terminal-Fenster sudo raspi-config aus und wählen zuerst den Menüpunkt Advanced Options, dann Wayland. Jetzt können Sie sich zwischen dem X11 Backend und dem Wayland Backend entscheiden. Gleichzeitig ändert sich auch der Window Manager (Openbox versus Wayfire). Optisch ergeben sich daraus aber nur geringe Unterschiede.

Die Einstellung wird in der Datei /etc/lightdm/lightdm.conf gespeichert:

# in der Datei /etc/lightdm/lightdm.conf
...
# für Wayland:
user-session=LXDE-pi-wayfire
# oder für X:
user-session=LXDE-pi-x

Die Umstellung des Grafiksystems wird erst nach einem Neustart wirksam. Die meisten Remote-Desktop-Tools inklusive RealVNC sollte nun wieder wie gewohnt funktionieren. Der RealVNC-Server ist standardmäßig installiert. Die Aktivierung kann aber nicht über das Raspberry-Pi-Konfigurationsprogramm erfolgen. Dessen VNC-Option gilt nur für wayvnc und muss deaktiviert (!) sein, sonst kommt es zu einem Port-Konflikt. Den RealVNC-Dienst aktivieren Sie anschließend wie folgt:

sudo systemctl enable --now vncserver-x11-serviced

Ein VNC-Icon im Panel zeigt an, dass der Start funktioniert hat, und gibt Aufschluss darüber, ob gerade eine Verbindung aktiv ist.

Allerdings gibt es auch hier eine Einschränkung: Der RealVNC-Server funktioniert nur in der 64-Bit-Version von Raspberry Pi OS Bookworm, nicht aber mit der 32-Bit-Version. Dieses Problem soll aber in naher Zukunft behoben werden.

Lösung 2: wayvnc

Wenn Sie bei Wayland bleiben, steht das neue Programm wayvnc zur Verfügung. Sie aktivieren es am einfachsten mit dem Programm Raspberry Pi-Konfiguration im Dialogblatt Schnittstellen, Option VNC.

Aktivierung des VNC-Servers im »Raspberry Pi-Konfigurationsprogramm«

Daraus resultiert die folgende Konfigurationsdatei /etc/xdg/autostart/wayvnc.desktop:

[Desktop Entry]
Type=Application
Name=wayvnc
Comment=Start wayvnc
NoDisplay=true
Exec=/usr/bin/wayvnc --render-cursor --keyboard=de
OnlyShowIn=wayfire

Jetzt brauchen Sie auf Ihrem Client-Rechner (auf dem Rechner, mit dem Sie Ihren Raspberry Pi steuern möchten), einen zu wayvnc kompatiblen VNC-Client. Der Raspberry-Pi-Blog empfiehlt das Programm vncviewer des Projekts TigerVNC. Die meisten Linux-Distributionen stellen ein entsprechendes Paket zur Verfügung. Für Windows und macOS (Intel) finden Sie hier Downloads.

Hier läuft der TigerVNC-Client auf meinem Notebook mit ArchLinux und ermöglicht die Fernsteuerung des Raspberry-Pi-Desktops

Bei meinen Tests unter Windows ist der Verbindungsaufbau mit dem Programm Remotedesktopverbindung gescheitert. Mit dem vncviewer von TigerVNC hat es dann aber funktioniert.

Sofern der Raspberry Pi mit einem eigenen Monitor verbunden ist, gilt für den Remote Desktop dieselbe Bildschirmauflösung. Wenn der Raspberry Pi dagegen »headless« läuft, können Sie die gewünschte Auflösung mit sudo raspi-config, Display Options, VNC Resolution einstellen (maximal 1920×1080, erfordert einen Reboot).

Quellen/Links

10 Jahre beim Rheinwerk-Verlag

21. Oktober 2023 um 09:58

Im Winter 2013 hat Pearson Education den deutschen Addison-Wesley-Verlag für mich vollkommen unerwartet in einer Hau-Ruck-Aktion abgewickelt. Pearson sah für IT-Bücher keine Zukunft mehr. Innerhalb weniger Monate wurde der Verkauf aller deutschsprachigen Addison-Wesley-Bücher eingestellt. Für mich war das einigermaßen unangenehm: Über 20 Jahre lang hatte ich fast alle meiner Bücher für Addison-Wesley geschrieben. Als einer der wenigen hauptberuflichen IT-Autoren im deutschen Sprachraum lebe ich nicht nur für meine Bücher, sondern auch von ihnen.

Glücklicherweise fand ich rasch eine neue Heimat im Rheinwerk Verlag, der damals noch den schöneren Namen Galileo Press hatte. Dort landeten nicht nur meine etablierten Bücher (das Linux-Buch und die Linux-Kommandoreferenz); ich konnte auch eine Menge komplett neuer Titel realisieren. Zu den Highlights der Themenpalette zählen der Raspberry Pi, Hacking & Security, Python, Docker und Git. Ganz neu sind die Bücher zu Photovoltaik (nächste Woche erscheint die 2. Auflage) und zu Wärmepumpen (erscheint in gut einem Monat), mit denen ich den Sprung aus dem IT-Segment in den allgemeinen Sachbuchmarkt wage.

Der Blick ins Buchregal zeigt die Produktion der letzten vier Jahre inklusive einiger Übersetzungen (Docker, Git, Hacking & Security). Für die Titel, die in diesem Jahr erscheinen, ist noch Platz, dann wird es Zeit für das nächste Regal :-)

Die Bilanz der letzten 10 Jahre lässt sich sehen: über 40 Bücher (inklusive Neuauflagen und Übersetzungen), fast 300.000 verkaufte Exemplare. Ja, der Markt für IT-Bücher ist schwieriger geworden, aber er ist immer noch sehr lebendig.

Bei dieser Gelegenheit möchte ich mich bei meinen Hauptkontaktpersonen im Rheinwerk Verlag bedanken: Christoph Meister, Sebastian Kestel (hat den Verlag zwischenzeitlich verlassen) und Norbert Englert haben mir bei neuen Projekten immer einen großen Vertrauensvorschuss gewährt. Sie sind mir in inhaltlichen Fragen ebenso wie bei den Arbeitsabläufen (Eigensatz mit Markdown und LaTeX) weit über das übliche Maß entgegengekommen. So macht Autor sein Spaß!

❌