Fryboyter

VSCode - Snippet für Front Matter anlegen

Meine Artikel erzeuge ich mittels Markdown-Dateien. Am Beginn dieser Datei ist der sogenannte Front-Matter-Bereich vorhanden in dem Informationen wie der Titel, das Datum der Veröffentlichung oder die Tags eines Artikels hinterlegt werden.

Diesen Bereich jedes mal manuell zu erzeugen ist auf Dauer nervig. Der von mir verwendete statische Website-Generator Hugo bietet hierfür Templates an, so dass man mit einem Befehl wie hugo new vscode-snippet-fuer-front-matter-anlegen.md einen neuen Artikel anlegen kann.

Ich bevorzuge es allerdings alles mit dem Editor zu machen. Aktuell nutze ich VSCode. Dieser bietet sogenannte Snippets mit denen man Vorlagen erstellen kann.

Hierfür wählt man in den Einstellungen im Menü “Datei” “Benutzerausschnitte” aus. Im nun angezeigten Drop-Down-Menü wählt man “Neue globale Codeausschnittsdatei…” aus und gibt der Snippet-Datei einen aussagekräftigen Dateinamen.

Die nun angezeigte Datei füllt man mit folgendem Inhalt.

{
  "Blog post frontmatter": {
    "prefix": "fmc",
    "description": "Erzeugt Frontmatter für Hugo-Artikel",
    "body": [
      "---",
      "title: ${1}",
      "date: ${2:${CURRENT_YEAR}-${CURRENT_MONTH}-${CURRENT_DATE}T${CURRENT_HOUR}:${CURRENT_MINUTE}:${CURRENT_SECOND}+0100}",
	  "categories:", 
	  "- ${3}", 
	  "tags:",
    "- ${4}",
    "slug: ${5}",
      "---",
      "$0"
    ]
  }
}

In der ersten Zeile gibt man den Namen des Snippets an der im Editor angezeigt wird. Der Prefix dient als Shortcode mit dem man den Inhalt des Snippets schnell einfügen kann. Hier kann man auch etwas anderes eintragen. Ich habe mir für fmc (front matter create) entschieden.

Im Body wird der Inhalt des Snippets angelegt, der automatisch eingefügt werden soll. In meinem Fall wird mit --- der Front-Matter-Bereich begonnen. Dann folgt der Titel, das Datum, die Kategorien, die Tags sowie der Slug über den der Artikel erreichbar ist. Mit --- wird der Front-Matter-Bereich wieder beendet.

Abschließend speichert man die Datei ab. Legt man nun einen neuen Artikel an, trägt man in der Datei fmc ein. Dies sollte bewirken, dass ein Menü erscheint in dem man das Snippet ausführen kann. Macht man das, sollte automatisch folgender Inhalt eingetragen werden.

---
title: 
date: 2021-01-02T13:01:02+0100
categories:
- 
tags:
- 
slug: 
---


Im obigen Code-Beispiel werden dem einen oder anderen sicherlich ${1}, ${2} usw. aufgefallen sein. Dies sind Sprungmarken. Hat man mittels fmc das Snippet eingefügt, kann man mit der Tabulator-Taste diese Stellen der Reihe nach anspringen und somit die betreffenden Bereiche ausführen.

OSBN | Allgemein

Update auf Wallabag 2.4.0 - Row size to large

Bei Wallabag handelt es ich um ein Tool zum selbst hosten mit dem man interessante Internetseiten abspeichern kann um sie später zu lesen. Vor ein paar Tagen wurde Version 2.4.0 veröffentlicht auf die ich meine Instanz eben aktualisieren wollte.

Das Update ist leider mit der (gekürzten) Fehlermeldung “Syntax error or access violation: 1118 Row size too large.” abgebrochen und die Installation war nicht mehr nutzbar.

Die Ursache ist, dass in der Wallabag-Datenbank mindestens eine Tabelle das Zeilenformat “REDUNDANT” oder “COMPACT” hat. Die betroffenen Tabellen kann man sich mit folgender Datenbankabfrage anzeigen.

SELECT CONCAT(TABLE_SCHEMA, '.', TABLE_NAME) 
FROM information_schema.TABLES 
WHERE ENGINE = 'InnoDB' AND ROW_FORMAT IN('Redundant', 'Compact') 
AND TABLE_NAME NOT IN('SYS_DATAFILES', 'SYS_FOREIGN', 'SYS_FOREIGN_COLS', 'SYS_TABLESPACES', 'SYS_VIRTUAL', 'SYS_ZIP_DICT', 'SYS_ZIP_DICT_COLS');

Da sich die Ausgabe nur auf ein paar Tabellen beschränkt hat und ich gerade keine Lust auf eine komplexere Lösung habe, habe ich bei diesen kurzerhand das Zeilenformat manuell mit folgendem Befehl auf “DYNAMIC” geändert.

ALTER TABLE $TABLENAME ROW_FORMAT=DYNAMIC;

Anstelle von $TABLENAME trägt man eine der Tabellen ein die man mit der Datenbankabfrage angezeigt bekommen hat.

Hat man die betreffenden Tabellen entsprechend geändert hat, sollte das Update ohne Fehler abschließen und die betreffende Wallabag-Instanz sollte danach nutzbar sein

OSBN | Allgemein

Änderung an der Suchfunktion

Letztes Jahr hatte ich in https://fryboyter.de eine Suchfunktion eingebaut, die DuckDuckGo nutzt. So wirklich glücklich war ich damit nie, da ich somit auf Dritte angewiesen bin.

Daher habe ich vor ein paar Tagen die Suchfunktion umgebaut. Über https://fryboyter.de/search/ bzw. über das Lupen-Symbol im Footer der Seite ist nun die neue Suchfunktion erreichbar die unabhängig von Dritten ist. Intern wird hierfür eine JSON-Datei erzeugt, die als Datenquelle dient. Mittels eines kleinen Java-Scripts lässt sich diese Datei durchsuchen. Wer also die Suchfunktion nutzen will, muss Javascript aktivieren. Zumindest bei genannten Link.

Einen kleinen Nachteil hat das ganze natürlich auch. Die JSON-Datei wird auf den Rechner des jeweiligen Nutzers heruntergeladen, da die Suche lokal erfolgt. Hierbei werden aktuell etwas mehr als 300 kB übertragen. In Anbetracht dessen, dass heutzutage viele Internetseiten an sich um ein Vielfaches größer sind und die Datei nur bei Aufruf des genannten Links heruntergeladen wird, finde ich die Datenmenge vertretbar.

Die Änderung basiert auf der Anleitung von https://weitblick.org/post/simple-static-site-search-hugo-jamstack/. Vielen Dank dafür.

OSBN | Allgemein

Git - Nicht übergebene Änderungen rückgängig machen

Gestern habe ich begonnen Änderungen in einem Repository auf meinem Notebook durchzuführen. Die bisherigen Änderungen habe ich allerdings noch nicht mit einem Commit gepflegt.

Da ich die Änderung heute schnellstmöglich einpflegen wollte, habe ich die Änderungen kurzerhand komplett auf einem anderen Rechner durchgeführt und einen entsprechenden Commit erstellt und diesen hochgeladen.

Eben wollte ich die Kopie des Repository auf meinem Notebook mit git pull aktualisieren. Das Ergebnis war allerdings folgende Fehlermeldung.

git pull
error: Pull mit Rebase nicht möglich: Sie haben Änderungen, die nicht zum Commit vorgemerkt sind.
error: Bitte committen Sie die Änderungen oder benutzen Sie "stash".

Da ich ziemlich viel getestet hatte, habe ich mir erst einmal mit git status angesehen um welche Dateien es überhaupt geht. Eine der Dateien war style.css. Nach etwas Recherche bin ich auf git restore gestoßen. Mittels folgendem Befehl habe ich die Änderungen in der Datei style.css kurzerhand rückgängig machen können.

git restore themes/fryboyter/static/css/style.css

Das ganze habe ich dann auch auf die restlichen geänderten Dateien angewandt und konnte dann die bereits eingepflegten Änderungen mit git pull herunterladen.

OSBN | Allgemein

Repository mit Submodulen klonen

Ich habe eben ein Repository bei Github auf einen meiner Rechner geklont und festgestellt, das ein Teil der Daten nicht vorhanden ist. Was daran lag, dass der fehlenden Teil als Submodul eingebunden ist. Die Daten liegen also in einem anderen Repository. Um ein Projekt inklusive der Submodule zu klonen kann man folgende Befehl nutzen.

git clone --recursive <LINK-ZUM-REPOSITORY>

Was aber wenn man das Hauptprojekt bereits geklont hat? Man wechselt einfach in das Verzeichnis und führt folgende Befehle aus. Hiermit werden nachträglich auch die Dateien der Submodule heruntergeladen.

git submodule init
git submodule update
OSBN | Allgemein