Fryboyter

Hinweise in Artikeln unter Hugo einfügen

Kürzlich habe ich einen Artikel veröffentlicht, der sich auf einen älteren Artikel bezogen hat, der somit im Grunde nicht mehr relevant ist. Da ich diesen aber nicht löschen will, habe ich mir überlegt in diesem einen entsprechenden Hinweis einzutragen. Also für den Fall, dass jemand den Artikel von 2019 direkt aufruft.

Gelöst habe ich dies mittels eines Shortcodes, der unabhängig von den Artikeln genutzt werden kann. Im Verzeichnis des von mir verwendeten Themes habe ich im Unterverzeichnis shortcodes die Datei notice.html angelegt und folgenden Inhalt eingetragen.

<div class="shortcode-notice {{ .Get 0 }}">
    <div class="shortcode-notice-title {{ .Get 0 }}">
        {{- if len .Params | eq 2 -}}
        {{ .Get 1 }}
        {{ else }}
        {{ .Get 0 }}
        {{- end -}}
    </div>
    <div class="notice-content">{{ .Inner | markdownify }}</div>
</div>

Zusätzlich habe ich im Unterverzeichnis static/css im Theme-Verzeichnis die Datei notice.css angelegt und folgenden Inhalt eingetragen.

.shortcode-notice .notice-content {
    padding: .6em 1em;
	display: block;
	font-size: 1em;
	margin-top: 0;
	margin-bottom: 0;
	color: #666;
    border-radius: 4px;
}

.shortcode-notice-title {
	color: #fff;
	padding-left: 1em;
	font-weight: 700;
	text-transform: capitalize;
    border-radius: 4px 4px 0 0;
}

.shortcode-notice-title.hinweis {
	background-color: rgba(92, 184, 92, .8)
}

 .shortcode-notice.hinweis .notice-content {
	background: #e6f9e6
}

 .shortcode-notice-title.tip {
	background-color: #6ab0de
}

.shortcode-notice.tip .notice-content {
	background: #e7f2fa
}

.shortcode-notice-title.info {
	background-color: #f0b37e
}

.shortcode-notice.info .notice-content {
	background: #fff2db
}

.shortcode-notice-title.warnung {
	background-color: rgba(217, 83, 79, .8)
}

.shortcode-notice.warnung .notice-content {
	background: #fae2e2
}

Will man nun einen entsprechenden Hinweis in einen Artikel eintragen, kann man folgenden Shortcode nutzen.

{{% notice info %}}
Das ist eine Information
{{% /notice %}}

Anstelle von info kann man in der ersten Zeile hinweis, tip und warnung verwenden was zur Folge hat, dass der Hintergrund der Anzeige entsprechend eine andere Farbe hat. Im Falle der Warnung beispielsweise rot. Wem das nicht ausreicht oder zu viel ist, kann natürlich die Einträge in der CSS-Datei erweitern oder entfernen.

Im Falle des bereits angesprochenen, veralteten Artikels von 2019 erzeugt dies folgenden Hinweis.

OSBN | Allgemein

Kommentarfunktion Isso unter Hugo deaktivieren 2.0

2019 hatte ich bereits einen Artikel veröffentlicht, wie man das Kommentarsystem Isso für bestimmte Artikel unter Hugo deaktiviert. Hierbei wurde aber nur der Code entfernt der für das Anlegen neuer Kommentare und das Anzeigen vorhandener Kommentare zuständig ist. Im Hintergrund wurde beispielsweise die JavaScript-Datei “embed.min.js” weiterhin geladen. Auch wenn diese nur ca. 25 kB groß ist (was einen Großteil von https://fryboyter.de ausmacht), bin ich mit der Lösung unzufrieden.

Da ich aktuell privat etwas Zeit habe, und ich diese Funktion demnächst wohl öfter nutzen werde, habe ich mir eine bessere Lösung überlegt.

Als Erstes habe ich mir die Datei single.html vorgenommen. Diese ist für das Anzeigen von einzelnen Artikeln zuständig. Den betreffenden Code habe ich wie folgt geändert.

{{ if and ( isset .Params "nocomments" ) ( eq .Params.nocomments true ) -}}
    <p>Die Kommentarfunktion ist für diesen Artikel deaktiviert</p>
{{ else }}
    <section id="isso-thread" data-title="{{ .Title }}"></section>
	<noscript>
		<p>Die Kommentarfunktion kann nur mit aktiviertem Javascript genutzt werden</p>
	</noscript>
{{ end }}	

Wichtig ist hier im Grunde genommen die erste Zeile. Damit wird geprüft, ob im Front-Matter-Bereich des jeweiligen Artikels die Zeile nocomments: vorhanden ist und ob diese den Wert true hat. Wenn ja, wird der Hinweis angezeigt, dass die Kommentarfunktion für diese Artikel deaktiviert ist. Wenn nicht, wird der Code eingetragen, mit dem man als Nutzer neue Kommentare erzeugen kann und vorhandene Kommentare anzeigt. Also im Grunde genommen, was im Artikel von 2019 beschrieben wurde.

Als Nächstes habe ich die Datei metadata.html angepasst. Diese erzeugt die Zeile direkt unter dem Titel des Artikels, in der bisher unter anderem die Anzahl der Kommentare angezeigt wird. Was bei einer deaktivierten Kommentarfunktion nicht wirklich nötig ist.

{{ if or (not ( isset .Params "nocomments" )) ( ne .Params.nocomments true ) -}} | <a href="{{ .Permalink }}#isso-thread">Comments</a>{{ end }}

Hiermit wird geprüft, ob die Zeile nocomments: nicht hinterlegt ist oder wenn doch, ob dessen Wert nicht true entspricht. Wenn eines der beiden zutrifft, wird der Code für die Anzahl der vorhandenen Kommentare angezeigt. Den Code habe ich bewusst etwas verkompliziert, da ich verhindern wollte, dass beispielsweise nocomments: treu unabsichtlich dazu führt, dass die Kommentare deaktiviert werden. Wer hierfür eine bessere Lösung hat, die weniger Code benötigt, kann sich gerne melden. Oder einfach einen Pull Request erstellen. Denn an der Stelle zeigt es sich, dass ich nicht wirklich programmieren kann.

Abschließend ist die Datei head.html an der Reihe.

{{ if or (not ( isset .Params "nocomments" )) ( ne .Params.nocomments true ) -}}
	<script data-isso="https://isso.fryboyter.de/" data-isso-feed="true" data-isso-css="false"
		data-isso-lang="{{.Site.Language.Lang }}" data-isso-max-comments-top="inf" data-isso-max-comments-nested="inf"
		data-isso-vote="false" data-isso-reply-notifications="true"
		src="https://isso.fryboyter.de/js/embed.min.js"></script>
	{{ end }}

Hier kommt unterm Strich die gleiche Abfrage wie für metadata.html zum Einsatz. Nur das in diesem Fall nicht die Anzeige der vorhandenen Kommentare ausgeblendet wird, sondern die Datei embed.min.js geladen wird oder eben nicht.

Das ganze Changeset kann man sich unter https://github.com/Fryboyter/Hugo/commit/5dfb4459aa7f9c8b08a21a9568d775808e290b49 ansehen.

Warum nun diese Änderung? Im Grunde aus zwei Gründen.

Zum einen schalte ich bereits jetzt weniger als 80 Prozent der Kommentare frei, da viele Kommentare nur SEO-Spam oder Kommentare sind, die nicht weiterhelfen. Daher auch die manuelle Freischaltung der Kommentare.

Das größere Problem ist aber, dass ich oft keine Lust oder Zeit habe Kommentare zeitnah freizuschalten, so dass diese oft Tage oder gar Wochen nicht angezeigt werden. Das nützt daher weder den Nutzern noch mir etwas. Daher verzichte ich im Zweifelsfall zukünftig lieber auf Kommentare Dritter.

OSBN | Allgemein

Alle Repositories eines Nutzers bei Github klonen

Manchmal möchte man alle Repositories eines Nutzers bei Github auf den eigenen Rechner klonen. Je nach Anzahl der Repositories kann dies etwas aufwändig sein, jedes manuell mit “git clone” herunterzuladen. Um dies zu automatiesieren kann man folgendes Script nutzen. Nennen wir das Script beispielsweise gitdownload.sh.

#!/bin/bash

if [ $# -eq 0 ]
  then
    echo "Usage: $0 <user_name> "
    exit;
fi

USER=$1

for repo in $(curl -s https://api.github.com/users/"$USER"/repos?per_page=1000 |grep git_url |awk '{print $2}'| sed 's/"\(.*\)",/\1/');do
git clone "$repo";
done;

Um damit die betreffenden Repositories herunterzuladen führt man einfach ./gitdownload.sh $benutzername aus. Anstelle von $benutzername trägt man den jeweiligen Namen des Nutzers bei Github ein.

Allgemein | OSBN

WLAN-Verbindung unter KDE Plasma auf 5 GHz umstellen

Ein Notebook ist mit einem WLAN verbunden das sowohl 2,4 als auch 5 Ghz unterstützt. Es verbindet sich allerdings immer nur mit 2,4 Ghz. Der Grund hierfür könnte sein, dass keine BSSID oder die falsche hinterlegt wurde.

Unter KDE Plasma ruft man hierfür die Systemeinstellungen (systemsettings5) auf und klickt in der linken Spalte im Bereich Netzwerk auf Verbindungen. Beim betreffenden WLAN öffnet man den Reiter Wi-Fi und wählt bei BSSID den Eintrag mit 5 Ghz aus (z. B. Frequenz: 5.180 Mhz). Nun klickt man noch auf Anwenden und trennt anschließend die WLAN-Verbindung und baut sie neu auf. Nun sollte die Netzwerkverbindung über 5 Ghz aufbauen.

Linux | OSBN

AUR-Pakete wegen Python-Update neu erstellen

Als ich eben die über AUR installierte Software aktualisieren wollte, habe ich folgende Fehlermeldung erhalten.

Der Vorgang konnte nicht durchgeführt werden (In Konflikt stehende Dateien)
tortoisehg: /usr/lib/python3.9/site-packages/hgext3rd/__init__.py existiert im Dateisystem (gehört zu mercurial)
tortoisehg: /usr/lib/python3.9/site-packages/hgext3rd/__pycache__/__init__.cpython-39.pyc existiert im Dateisystem (gehört zu mercurial)
Fehler sind aufgetreten, keine Pakete wurden aktualisiert.

Die Ursache ist, dass in den offiziellen Paketquellen von Arch Linux Python auf Version 3.10 aktualisiert wurde. Was es leider nötig macht die Pakete, die Python nutzen und über AUR installiert wurden, neu zu erstellen.

Als Erstes sollte man mittels pacman -Syu die Pakete aus den offiziellen Paketquellen aktualisieren.

Um sich nun die betroffenen Pakete im AUR anzusehen, kann man folgenden Befehl ausführen.

pacman -Qqo /usr/lib/python3.9 | pacman -Qm -

In meinem Fall werden drei Pakete angezeigt, die ich neu erstellen muss. Wer als AUR-Helper paru verwendet, kann diese mit folgendem Befehl automatisch neu erstellen. Mit anderen AUR-Helpern die eine Rebuild-Funktion anbieten sollte es vergleichbar funktionieren.

pacman -Qoq /usr/lib/python3.9 | pacman -Qmq - | paru -S --rebuild -

Führt man den Befehl nun spaßeshalber noch einmal aus, sollte man die Meldung “Fehler: Kein Paket besitzt /usr/lib/python3.9” erhalten.

Und ja, das ist einer der Nachteile an AUR. Dafür lassen sich die dortigen Rezepte leichter prüfen als beispielsweise fertige Pakete aus einem PPA. Und leichter erstellen lassen sie sich in der Regel auch.

Linux | OSBN