Veröffentlicht am 4. Januar 2023
|
Comments
Letzte Woche hat mich ein Bekannter um Hilfe gebeten. Er hat Daten auf seinen neuen USB-Stick verschoben, was ohne Fehlermeldung funktioniert hat. Allerdings waren einige Daten danach nicht auf dem Stick vorhanden. Backups sei Dank hat er das mehrmals mit dem gleichen Ergebnis probiert.
Noch bevor ich mir den Stick überhaupt angesehen habe, habe ich schon vermutet, dass er sich einen gefälschten USB-Stick angeschafft hat, bei dem mehr vorhandener Speicherplatz angezeigt wird als tatsächlich vorhanden ist.
Um meine Vermutung belegen zu können, habe ich mir das Tool F3 (https://github.com/AltraMayor/f3) installiert und den Stick mittels f3probe –destructive –time-ops /dev/sdX getestet. Und siehe da, der Stick hat tatsächlich deutlich weniger Speicherplatz als angegeben. Es handelt sich daher klar um eine Fälschung.
Von daher, testet neu gekaufte USB-Sticks unbedingt bevor ihr sie das erste mal nutzt. Denn auch ein Kauf bei einem bekannten Händler ist nicht unbedingt eine Garantie, dass es sich wirklich um ein Original handelt.
Neben f3probe besteht F3 noch aus weiteren Befehlen.
Mit f3write werden mehrere 1 GB große Dateien auf den USB-Stick geschrieben bis kein Speicherplatz mehr vorhanden ist. Mit f3read werden diese anschließend gelesen. Neben dem Test, ob der Stick tatsächlich über den angegebenen Speicherplatz verfügt, wird hierbei somit noch die Lese- und Schreibgeschwindigkeit getestet. Dies dauert allerdings deutlich länger als f3probe.
Hat man einen gefälschten USB-Stick und kann oder will man diesen nicht beim Händler reklamieren, kann man den Befehl f3fix nutzen. Damit lässt sich eine Partition erstellen, die dem tatsächlich vorhanden Speicherplatz entspricht. Somit ist eine Nutzung zumindest halbwegs sicher möglich.
Wer lieber eine grafische Oberfläche will, kann noch zusätzlich https://github.com/zwpwjwtz/f3-qt installieren.
Veröffentlicht am 23. Dezember 2022
|
Comments
Seit 2009 veröffentliche ich nun schon diverse Artikel. Bei einigen sind inzwischen die Links auf andere Internetseiten nicht mehr aufrufbar, weil die Betreiber der jeweiligen Seite entweder den Artikel gelöscht haben oder weil es die Seite gar nicht mehr gibt. Daher will ich in den nächsten Tagen etwas aufräumen, ohne hierbei viele Artikel komplett zu löschen.
Ich habe mir daher überlegt, ob es wohl machbar ist, dass ich so viele Links wie möglich durch eine, beim Internet Archive gespeicherte, Version ersetzen kann. Machbar ja, aber manuell ist das ziemlich aufwändig.
Nehmen wir als Beispiel den Artikel https://fryboyter.de/microsoft-eula-fuer-englischsprachige-dummies/ aus dem Jahre 2009. Der darin genannte Link auf dailycupoftech.com funktioniert nicht mehr. Händisch würde ich nun den Link unter https://web.archive.org eingeben und mir eine der gespeicherten Versionen heraussuchen (z. B. https://web.archive.org/web/20080609041611/http://www.dailycupoftech.com/2008/05/21/ms-eula-in-plain-english/) und diesen beim Artikel anstelle des ursprünglichen Links eintragen.
Das hat zwei Nachteile. Das Heraussuchen einer Version benötigt mehr Zeit. Und ich muss aufpassen, dass ich eine Version erwische, die möglichst nahe am Veröffentlichungsdatum meines Artikels liegt. Was wiederum mehr Zeit benötigt.
Also kommt das nicht infrage. Was also machen? Wenn man Hugo zum Erzeugen der Internetseite nutzt, dann wäre eine Lösung ein sogenannter Shortcode. Dieser könnte wie folgt aussehen.
<a
href="https://web.archive.org/web/{{ $.Page.Params.PublishDate.Format "20060102150405" }}/{{ .Get 0 }}"
class="archive"
>
{{ .Inner }}
<img src="{{ "images/wayback.svg" | relURL }}" alt="" />
</a>
Und hier dazu gehörenden CSS-Anweisungen.
.archive img {
vertical-align: super;
height: 12px;
width: 12px;
}
Um beim bereits genannten Artikel zu bleiben, trägt man einfach {{< wayback "http://www.dailycupoftech.com/2008/05/21/ms-eula-in-plain-english" >}}Daily Cup of Tech{{< /wayback >}} anstelle des ursprünglichen Links im Artikel ein.
Aufgrund von $.Page.Params.PublishDate.Format "20060102150405" sucht sich der Shortcode die beim Internet Archive gespeicherte Version heraus, die möglichst nahe am Veröffentlichungsdatum des Artikels liegt.
Unter https://fryboyter.de/microsoft-eula-fuer-englischsprachige-dummies/ kann man sich dann das Ergebnis ansehen. Was das zusätzliche Icon beim Link betrifft, bin ich mir noch nicht sicher, ob ich es so lasse wie es ist, bzw. ob ich es überhaupt haben will.
Einen Nachteil hat der Shortcode allerdings. Wenn die betreffende Seite nicht bei der Wayback Maschine gespeichert ist, funktioniert er nicht. Etwas Handarbeit ist also weiterhin nötig. Es erspart also nur die Version herauszusuchen, die möglichst nahe am Veröffentlichungsdatum des Artikels liegt.
Veröffentlicht am 2. Dezember 2022
|
Comments
Bei IFTTT (If This Then That) handelt es sich um einen Dienst, mit dem sich diverse Dinge automatisieren lassen. In meinem Fall wird geprüft, ob über den RSS-Feed ein neuer Artikel veröffentlicht wurde. Wenn ja, dann wird bei Mastodon einen Beitrag mit der Überschrift und einem Link auf den Artikel erstellt. Hierzu hatte ich vor ein paar Wochen erst einen Artikel veröffentlicht.
Technisch gesehen funktioniert es ohne Probleme. Allerdings habe ich mir trotzdem Gedanken gemacht, da ich zwei mögliche Probleme sehe.
Zum einen läuft das Ganze über Server Dritter. In dem Fall ist es kein Problem, da nur der frei zugängliche RSS-Feed abgefragt wird, der wiederum nur den Blödsinn enthält, den ich veröffentliche. Aber trotzdem…
Was ich problematischer finde ist, dass ich das kostenlose Angebot von IFTTT nutze. Dies könnte eines Tages eingestellt werden. Prinzipiell bin ich bereit für einen Dienst zu bezahlen. Allerdings nicht in diesem Fall, weil ich auch gut ohne Mastodon leben kann.
Daher habe ich mir mal rein aus Interesse mögliche Alternativen angesehen. Im Grunde sind das alles ähnliche Dienste, die von Dritten angeboten werden. Und deren Funktionsumfang oft geringer, und die Nutzung schwieriger ist.
Als Alternative die man selbst hosten kann, habe ich Huginn gefunden. Das Tool begeistert mich auf der einen Seite, schreckt mich allerdings auf der anderen Seite ab.
Huginn bietet von Haus aus viele Möglichkeiten. Zum Beispiel, dass man automatisch informiert wird, wenn bei einem Wetterbericht ein regnerisches Wetter gemeldet wird. Oder eben, dass über meinen RSS-Feed ein neuer Artikel bei Mastodon veröffentlicht wird.
Allerdings ist die Einrichtung nicht so einfach zu erledigen wie bei IFTTT. Vor allem, wenn man eigene Agents anstelle der fertigen nutzen will. Huginn erfordert also Einarbeitszeit. Und die Dokumentation könnte besser sein.
Daher ist das ganze eher kein Wochenendprojekt für mich, sondern eher eines für den Jahresendurlaub. Daher gebe ich an der Stelle auch kein Beispiel, was man wie mit Huginn alles machen kann.
Veröffentlicht am 30. November 2022
|
Comments
|
English version
Sicherlich hat jeder schon einmal eine PDF-Datei erhalten, deren Text man beispielsweise nicht markieren und kopieren kann. Dies liegt in der Regel daran, dass der eingescannte Text als Bild in der PDF-Datei eingebettet wurde. Der Multifunktionsdrucker, den ich beruflich nutze, macht das zum Beispiel. Das Problem lässt sich allerdings relativ leicht und zuverlässig lösen.
Das Tool OCRmyPDF fügt in die PDF-Datei eine zusätzliche Textebene über dem Bild ein, deren Inhalt man markiere und kopieren sowie durchsuchen kann. Für die Texterkennung wird Tesseract verwendet.
Im besten Fall führt man einfach ocrmypdf input.pdf output.pdf aus. Input.pdf ist hierbei die Originaldatei und output.pdf ist die Datei, die mit der zusätzlichen Textebene gespeichert wird. Weitere Funktionen und mögliche Optimierungsmöglichkeiten kann man in der Dokumentation nachlesen. Je nachdem in welcher Sprache der Inhalt der Originaldatei vorliegt, muss man ggf. vorher noch ein Sprachpaket wie beispielsweise tesseract-data-eng (englische Sprachpaket) installieren. Fehlt diese, gibt ORCmyPDF aber auch einen entsprechenden Hinweis aus und bricht ab.
Getestet habe ich OCRmyPDF mit ein paar einfachen PDF-Dateien mit gut lesbarem Text getestet. Bei diesen wurde die zusätzliche Textebene sehr gut über die Bilddatei gelegt, sodass der Text beider Ebenen sehr genau übereinander lag, sodass das Markieren und Kopieren des Textes kein Problem war. Auch das Durchsuchen der Datei hat funktioniert. Die neue Datei benötigt logischerweise mehr Speicherplatz aber es hält sich meiner Meinung nach in Grenzen. Die originale PDF-Datei mit einer DIN-A4-Seite mit den ersten Zeilen von “Der Rabe” von Edgar Allan Poe ist beispielsweise 49,4 KB groß. Die um die Textebene erweiterte PDF-Datei ist 49,8 KB groß.
Veröffentlicht am 25. November 2022
|
Comments
In meinem privaten LAN ist ein Raspberry Pi 4 vorhanden der neben ein paar anderen Dingen eine Kombination von PiHole und unbound zur Verfügung stellt. Vor ein paar Tagen hat die Namensauflösung auf den Rechnern im LAN nicht mehr funktioniert.
Als ich mit SSH mit dem Raspberry Pi verbinden wollte, konnte keine Verbindung aufgebaut werden. Sehr seltsam…
Meine erste Vermutung war, dass die Speicherkarte defekt ist, da ich diese schon einige Jahre nutze und auch schon ein viele Schreibvorgänge stattgefunden haben. Also habe ich die Karte aus dem Raspberry Pi entfernt und mittels eines Kartenlesers an mein Notebook angeschlossen. Sofort wurden die beiden Partitionen auf der Speicherkarte erkannt, ich konnte sie mounten und auf die Dateien zugreifen. Also ist es scheinbar doch nicht die Speicherkarte.
Trotzdem habe ich erst mal ein Image der Karte erstellt und dieses dann mittels PiShrink auf eine annehmbare Größe verkleinert.
Vielleicht steht ja in den Log-Dateien etwas, dass auf das Problem hinweist. Da am Raspberry Pi weder ein Monitor noch eine Tastatur angeschlossen ist, habe ich die größere der beiden Partitionen gemountet. Nehmen wir an im Home-Verzeichnis des Notebooks im Verzeichnis rasp. Dann habe ich mittels journalctl -D ~/rasp/var/log/journal -r auf die Log-Dateien auf der Speicherkarte zugegriffen. Schon nach wenigen Zeilen habe ich die erste und einzige Fehlermeldung gefunden.
alarmpi systemd[1]: Failed to start Wait for Network to be Configured.
alarmpi systemd[1]: systemd-networkd-wait-online.service: Failed with result 'exit-code'.
alarmpi systemd[1]: systemd-networkd-wait-online.service: Main process exited, code=exited, status=1/FAILURE
alarmpi systemd-networkd-wait-online[322]: Timeout occurred while waiting for network connectivity.
Der Raspberry Pi bootet also, kann aber keine Netzwerkverbindung aufbauen. Aber warum? Die Konfigurationen habe ich seit mindestens einem Jahr nicht geändert.
Trotzdem habe ich mir die Konfigurationsdatei eth0.network unter ~/rasp/etc/systemd/network/ angesehen.
Sieht gut aus.
[Match]
Name=eth0
...
Wobei… Moment! Eth0 bei einer Distribution die systemd und somit Predictable Network Interface Names nutzt? Könnte das die Ursache sein?
Einen Versuch ist es wert. Also habe ich Name=eth0 in Name=en* geändert, da der Netzwerkanschluss per Kabel immer eine Bezeichnung zugeteilt bekommt die mit en beginnt. Welche genau, kann ich nicht sagen, da ich ja keinen Zugriff im laufenden Betrieb habe.
Und siehe da, der Raspberry Pi bootet und eine Verbindung per SSH ist wieder möglich. Mittels ip addr habe ich mir dann die Netzwerkverbindungen des Raspberry Pi anzeigen lassen und festgestellt, dass der Netzwerkanschluss per Kabel die Bezeichnung end0 hat. Also habe ich abschließend Name=en* noch in Name=end0 geändert. Wobei das ist in dem Fall nicht nötig ist, da nicht zwei unterschiedliche Netzwerkanschlüsse mit Kabel vorhanden sind. Aber sicher ist sicher.
Aber warum ist das erst jetzt passiert? Predictable Network Interface Names gibt es unter systemd schon ewig und sind in der Standardkonfiguration aktiv. Nachdem ich im offiziellen Forum von Arch Linux ARM gesucht habe, habe ich mehrere Fälle mit dem gleichen Problem gefunden. Z. B. https://archlinuxarm.org/forum/viewtopic.php?f=15&t=16245. Zumindest bin ich nicht alleine. Ich vermute, dass durch ein Update Predictable Network Interface Names aktiviert wurden und es deshalb zu Problemen gekommen ist, weil meine Installation schon sehr alt ist. Aber das ist eine Vermutung.