YIO Remote Two, eine Alternative zur Logitech Harmony?
Ich benutzte ja schon seit Jahren eine Logitech Harmony und steuere damit alles was, zum Entertainment nötig ist. Nun gibt es aber einen Lichtblick am Horizont, der hoffentlich die Konfigurierbarkeit erheblich verbessern sollte und es endlich auch ermöglicht eignen Abläufe zu programmieren die nicht von einem festgelegten Konfigurations-Tool abhängig sind.
Ich hab die Tage auf kickstarter.com die YIO Remote Two unterstützt und hoffe das, dass Project, zügig vorankommt und alles zeitgerecht ausgeliefert werden kann.

Es handelt sich dabei um eine zum Teil in Open Source entwickelte Fernbedienung mit einem Dock die Geräte über WiFi, Bluetooth oder klassisch mit IR Steuern kann. Das ist jetzt die 2. Version die auch schon eine recht große Community um sich scharrt und wo man stark von einem Erfolgreichen Project ausgehen kann.
Eventuell Sucht ja noch jemand von euch eine Multifunktionsfernbedienung mit Bastler Feeling, allerdings muss man auch noch ein wenig Geduld mitbringen, weil die Auslieferung erst in einem Jahr (Juli 2022) ist!
Sie wurde Übrigens in Dänemark entwikelt.
Als nachtrag hier noch ein Livestream Record zu dem Thema, sehr interesant!
Neue tag Übersicht mit einem Blog-Universum
Ab jetzt gibt es auf der tags Seite auch noch eine kleine tags→Artikel Verbindungs-Übersicht, bei der die Verbindungen zwischen den tags und den Artikeln, mithilfe der alchemy.js Library, visualisiert wird.

Ich bin sehr gespannt wie das Universum in einem Jahr aussehen wird!
Bleibt Neugierig.
Umgang mit Docker und Kubernetes Pods
Das wird mein erster FAQ-Artikel, der sich um Docker drehen wird. Ich werde hier mit der Zeit immer mal wieder kleine hints hinzufügen, damit ich nicht lange suchen muss.
Eine laufende Docker Instanz betreten
Docker
docker ps
docker exec -it containerid bash
Kubernetes
kubectl get pods -n namespace
kubectl -i -t -n namespace containerid bash
Eine shell in einem pod über proxy (jumphost) und eigner Config öffnen
KUBECONFIG=~/.kube/config_xxl https_proxy=http://127.0.0.1:8888 kubectl exec -it -n namespace poduniname -- bash
Container logs lesen
-f, --follow hat den gleichen effect wie tail -f
Docker
docker ps
docker logs containerid -f
Kubernetes
kubectl get pods -n namespace
kubectl logs -n namespace containerid -f
Ereignisübersicht
Einen namesspace
kubectl get events --sort-by=.metadata.creationTimestamp -n namesspace
Alle namespaces mit mehr output
kubectl get events --all-namespaces -o wide
Links
Git Kniffe und Tricks
Einen alten Branch-Namen nach Merge neu nutzen
git checkout master
git pull
git branch -d branchname
git checkout -b branchname
git push origin branchname
Das geht aber nur, wenn der Branch schon gemerged und gelöscht wurde!
chmod auf eine Datei im Git-Repo
git update-index --chmod=+x path/to/file
Um das Exec-Bit zu löschen:
git update-index --chmod=-x path/to/file
Anzeigen von chmod im Git-Index
git ls-files --stage path/to/file
Erzeugen von Symlinks in Git
cd destdir
ln -s ../../../existing_file symlinkfile
git add symlinkfile
git ls-files -s symlinkfile # zeigt Link
git cat-file -p linkhash # zeigt Quelle
Wenn das Zielfile Git schon bekannt war, muss man es erst aus Git löschen, bevor man es mit add hinzufügen kann!
Git Config prüfen
Zum Auflisten der aktuellen Config gibt es die Option --list:
git config --list
Und zum Ändern einer Option kann man sie z. B. mit --global ändern:
git config --global user.name "dein Name"
Git das Passwort speichern erlauben
Git bringt eine einfache Methode zum Passwortspeichern mit, die allerdings nicht unbedingt sicher ist. Zum Aktivieren muss man nur diese Zeile ausführen und Git speichert das Passwort für die Repos.
git config --global credential.helper store
Nun muss man nur noch einmal z. B. ein
git pull
ausführen und er speichert die Zugangsdaten für das nächste Mal in der Datei ~/.git-credentials im Klartext. Es ist also eine sehr unsichere Sache.
Alternativ kann man auch nur einen Memory-Cache mit Timeout nutzen:
git config --global credential.helper cache
git config --global credential.helper 'cache --timeout=3600'
Dann hält er das Passwort nur im RAM und verwirft es nach dem Timeout.
Es existieren auch noch ein paar andere Methoden, hier eine interessante Zusammenfassung auf stackoverflow.com
git mtime restore
Manchmal braucht man die mtime für Dateien und wenn man eine Datei nicht modifiziert hat, wird die neue mtime eventuell nicht richtig gesetzt. Für dieses Problem gibt es aber eine einfache Lösung:
sudo apt install git-restore-mtime
cd [repo]
git restore-mtime
Commit-Log in der Shell
git log --graph --all --decorate --oneline --simplify-by-decoration
Wie testet man die MTU-Größe
Wie oft hat man das Problem, dass man in einem Netzwerk unerklärliche Verbindungsabbrüche hat. Oft ist der Grund einfach eine falsche MTU-Größe, die dazu führt, dass zwar Kommunikation möglich ist, aber bei größeren datenabhängigen Übertragungen plötzlich nichts mehr geht.
Grundlagen
Die MTU (Maximum Transmission Unit) definiert die effektiv nutzbare Datenmenge und ist mit jeder zusätzlichen Netzwerkschicht bzw. unterschiedlichen Protokollen anders. Dazu gehören z. B. IPv4 vs. IPv6, UDP vs. TCP oder Ethernet vs. Internet oder VPN. Mit jedem zusätzlichen Feature kommen ein paar Bytes zum Header dazu, der die nutzbare Datengröße verringert. In einem lokalen Netz hat man meist eine MTU von 1500 und Richtung Internet etwa 1472.
Eine zu kleine Größe führt dazu, dass die Daten in zu viele Pakete aufgesplittet werden, man so mehr Header-Daten senden muss und dadurch einen schlechteren Durchsatz hat. Wohingegen zu große Blöcke zu Netzwerkproblemen führen.
Testen
Mit Ping kann man die MTU-Werte testen. Ping benutzt ICMP als Protokoll, was eine Header-Größe von 28 Bytes hat mit IPv4 (IPv4 = 20 Bytes + ICMP = 8 Bytes = 28).
ping -D -c 2 -s 1472 8.8.8.8
Das sollte etwa so aussehen:
PING 8.8.8.8 (8.8.8.8): 1472 data bytes
36 bytes from x.1x.1xx.1xx: frag needed and DF set (MTU 1492)
Vr HL TOS Len ID Flg off TTL Pro cks Src Dst
4 5 00 05dc 0000 0 0000 3e 01 646f 192.1xx.1x.2xx 8.8.8.8
Jetzt sagt uns Ping, das Paket müsste fragmentiert werden.
Wenn man die Blockgröße viel zu groß wählt, sieht es dann so aus:
ping -D -c 2 -s 1473 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 1473 data bytes
ping: sendto: Message too long
ping: sendto: Message too long
Also testen wir es nochmal mit den vorgeschlagenen 1492. 1492 - 28 = 1464
ping -D -c 2 -s 1464 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 1464 data bytes
76 bytes from 8.8.8.8: icmp_seq=0 ttl=115 time=19.860 ms
Das heißt also, wir können eine MTU von 1492 in dieser Verbindung verwenden.
Windows
Unter Windows sind die Argumente ein wenig anders, aber es funktioniert dort genauso.
# Windows PowerShell
ping -f -n 2 -l 1464 8.8.8.8
Ping wird ausgeführt für 8.8.8.8 mit 1464 Bytes Daten:
Antwort von 8.8.8.8: Bytes=68 (gesendet 1464) Zeit=19ms TTL=115