Alte Beiträge in Hugo markieren

Ich habe eine kleine Hinweisfunktion eingebaut, die bei Beiträgen erscheint, die älter als ein Jahr sind. Mir war wichtig, dass dieser Hinweis nicht bei reinen Fotobeiträgen auftaucht – Fotos verlieren schließlich selten an Relevanz. Zuerst habe ich selbst eine funktionierende Version geschrieben, anschließend den Code von einem Sprachmodell noch etwas optimieren lassen. Jetzt läuft bei mir folgende Variante: {{- /* Tags prüfen */ -}} {{- $tags := default (slice) .Params.tags -}} {{- $tagsLower := apply $tags "lower" "." -}} {{- $hasPhoto := in $tagsLower "photo" -}} {{- /* Relevantes Datum bestimmen und Stichtag berechnen */ -}} {{- $pageDate := time.AsTime (or .Lastmod .PublishDate .Date) -}} {{- $oneYearAgo := (now).AddDate -1 0 0 -}} {{- /*Hinweis nur auf echten Seiten, mit gültigem Datum, älter als 1 Jahr und nicht beim Tag "photo" */ -}} {{- if and .IsPage (not $hasPhoto) (gt ($pageDate.Unix) 0) (lt $pageDate $oneYearAgo) -}} <div class="alert alert-warning"> Hinweis: Dieser Artikel ist über ein Jahr alt. Die Informationen könnten veraltet sein. </div> {{- end -}}

21. Oktober 2025 · 1 Minute · 166 Wörter

Traditionelle Programmierkenntnisse

Ein spannender Artikel der “Zeit” beleuchtet die Frage, ob es angesichts des KI-Zeitalters noch sinnvoll ist, Programmieren zu lernen. Die zunehmende Automatisierung und der Einsatz von Künstlicher Intelligenz werfen die Überlegung auf, ob traditionelle Programmierkenntnisse an Bedeutung verlieren. Eva Wolfangel schreibt in »Programmieren: Programmieren lernen – kann das weg?« für zeit.de Das Sicherheitsdenken beeinflusst auch seine Perspektive auf ChatGPT und Co. Aus seiner Sicht ist es nicht ratsam, Dinge von KI erledigen zu lassen, die man nicht auch selbst kann: “Man sollte schon wissen, was man tut”, sagt er, “sonst ist es fahrlässig: erkläre mal deiner Versicherung, dass du nicht wusstest, was deine Software tut.” Schließlich sind sogenannte Supply-Chain-Attacken weit verbreitet, bei denen Angreifer an einer Stelle in eine Software oder ein System eindringen und dadurch überall dort Schaden anrichten können, wo das System eingesetzt wird oder die Software als Baustein verwendet. Von daher könne KI zwar Anfängern helfen, Dinge zu entwickeln, mit denen sie sich nicht auskennen – “aber wenn ich das seit zehn Jahren mache, sehe ich sofort die Angriffsmöglichkeiten”. ...

1. November 2024 · 1 Minute · 206 Wörter

Ein Viertel

Ich frage mich bei der nachstehenden Meldung, ob dies der Auslöser dafür sein könnte, dass die Produkte von Google kontinuierlich an Qualität einbüßen. Wie erwartet, weist Google jegliche Behauptungen dieser Art vehement zurück. Mike Faust schreibt in »Künstliche Intelligenz: Google erzeugt ein Viertel seines Codes mit KI« für golem.de Auch die Entwickler von Google verwenden für die Weiterentwicklung ihrer Produkte künstliche Intelligenz. Mittlerweile wurde ein Viertel des verwendeten Codes von KI generiert. Dieser werde geprüft und akzeptiert, bevor er zum Einsatz komme, sagte der CEO von Google und Alphabet, Sundar Pichai, während der Vorstellung des Geschäftsberichts zum 3. Quartal 2024. ...

30. Oktober 2024 · 1 Minute · 100 Wörter

Auto Squash in GitHub Respository

Das Blog wird mit dem CMS Hugo betrieben und die Inhalte versioniert auf GitHub abgelegt. Gelegentlich werden auf GitHub auch Dateien abgelegt, die im Blog verlinkt werden sollen. Diese Dateien befinden sich in einem anderen öffentlichen Repository, für das eine Versionierung nicht erforderlich ist. Um die Anzahl der Commits zu reduzieren, wurde eine Automatisierung mittels Squash Commits implementiert. Dies geschieht durch den Einsatz von GitHub Actions, wodurch alle Änderungen auf einen einzigen Commit zusammengeführt werden. Im Folgenden wird der Prozess beschrieben. ...

25. Oktober 2024 · 2 Minuten · 228 Wörter

Bookmarklet Blogging

Kürzlich bin ich auf ein spannendes Bookmarklet bei Nicolas gestoßen. Es soll das Link-Blogging für alle erleichtern, die ein auf GitHub gehostetes Blog haben. Das Skript ist zwar noch nicht ganz perfekt, aber es hat mich dazu inspiriert, es weiterzuentwickeln. Hier ist meine Version des Bookmarklets (function() { // Funktion zum Erstellen eines "Slug" aus einem Text const slugify = text => { let str = text.toString(); // Den Text als Zeichenkette behandeln str = str.replaceAll("/", " "); // Schrägstriche (/) durch Leerzeichen ersetzen str = str.normalize("NFD"); // Unicode normalisieren (diakritische Zeichen trennen) str = str.replace(/[^\w\s-]+/g, ""); // Sonderzeichen entfernen (außer Buchstaben, Zahlen, Leerzeichen, Bindestriche) str = str.toLowerCase(); // In Kleinbuchstaben umwandeln str = str.replace(/\s+/g, " "); // Mehrere Leerzeichen auf ein einzelnes reduzieren str = str.trim(); // Führende und endende Leerzeichen entfernen str = str.replace(/ +/g, "-"); // Alle Leerzeichen durch Bindestriche ersetzen return str; // Slug zurückgeben }; // Titel der aktuellen Seite aus dem Dokument abrufen let pageTitle = window.document.title; // Falls ein Text markiert ist, diesen als "linkSelection" setzen, ansonsten leer let linkSelection = "getSelection" in window ? window.getSelection().toString().trim() : ""; // Inhalt für den Link ermitteln: // Zuerst den markierten Text verwenden, falls vorhanden, ansonsten eine Meta-Beschreibung, // oder den ersten Absatz im <main>, <article>, oder <p>-Tag let linkContent = linkSelection || window.document.querySelector("head meta[name=description]")?.content.trim() || window.document.querySelector("main p")?.textContent.trim() || window.document.querySelector("article p")?.textContent.trim() || window.document.querySelector("p")?.textContent.trim(); // Die URL der aktuellen Seite let linkUrl = window.location.href; // Eingabeaufforderung für den Link-Titel (Standardwert: Seiten-Titel) let title = window.prompt("Title of the link?", pageTitle); if (title !== null) { // Nur fortfahren, wenn der Benutzer einen Titel angegeben hat // Eingabeaufforderung für den Link-Slug (Standardwert: aus Titel generierter Slug) let slug = window.prompt("Slug of the link?", slugify(title)); if (slug !== null) { // Nur fortfahren, wenn der Benutzer einen Slug angegeben hat // Das aktuelle Datum und die Uhrzeit im ISO-Format abrufen und in lesbare Form bringen const currentDate = (new Date()).toISOString().replace("T", " ").replace(/\.\d{3}Z/, " +00:00"); // Dateiinhalt für den Blogeintrag erstellen let fileContent = `---\n` + `date: ${currentDate}\n` + `title: "${title}"\n` + `authors: "maik"\n` + `tags: []\n` + `---\n\n` + `[${title}](${linkUrl} "${title}") für ${linkUrl}\n\n` + `${linkContent ? linkContent.replaceAll("\n", "\n> ") : ""}\n`; // GitHub-URL für das Erstellen einer neuen Datei zusammenbauen let githubUrl = `https://github.com/Maik-Wi/blog/new/main/?` + `filename=${`content/notes/${currentDate.slice(0, 10)}-${slug}-index.md`}` + `&value=${encodeURIComponent(fileContent)}` + `&message=${encodeURIComponent(`New link: ${title}`)}`; // Die URL in einem neuen Fenster öffnen, sodass der Nutzer sie bei GitHub weiterbearbeiten kann window.open(githubUrl); } } })();

19. August 2024 · 2 Minuten · 403 Wörter