<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="https://kniebes.com/assets/xsl/rss.xsl" type="text/xsl" media="screen"?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:media="http://search.yahoo.com/mrss/"
>

    <channel>
        <title>M. Kniebes. · Git Projekt</title>
        <atom:link href="https://kniebes.com/tag/git-projekt.xml" rel="self" type="application/rss+xml" />
        <link>https://kniebes.com</link>
        <description>Beiträge zum Tag Git Projekt</description>
        <lastBuildDate>Sat, 18 Jul 2026 11:17:09 +0200</lastBuildDate>
        <language>de-DE</language>
        <sy:updatePeriod>hourly</sy:updatePeriod>
        <sy:updateFrequency>1</sy:updateFrequency>
        <generator>IO</generator>
        <atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
        <atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
        <atom:link rel="hub" href="https://websubhub.com/hub"/>

                
            
            <item>
                
                <title><![CDATA[Tagebuch]]></title>
                <link>https://kniebes.com/2026/07/18/tagebuch.html</link>
                <dc:creator><![CDATA[Markus Kniebes]]></dc:creator>
                <pubDate>Sat, 18 Jul 2026 11:17:09 +0200</pubDate>
                <guid isPermaLink="true">https://knieb.es/6ad0</guid>
                <description><![CDATA[<p>Vor einer Weile habe ich angefangen, ein digitales Offline-Tagebuch zu schreiben. Also schon in digitaler Form auf einem Rechner, aber nicht im Web veröffentlicht. Das hat zur Folge, dass wesentlich weniger Hirnfürze hier im Blog landen. Und das ist gut.</p>

<p>Inhaltlich geht es im Großen und Ganzen um Fakten zum Tag und um Gespräche oder Ereignisse, an die ich mich später mal erinnern möchte oder muss. Nichts, das zu privat ist.</p>

<p>Die Texte schreibe ich in <a href="https://de.wikipedia.org/wiki/Markdown">Markdown</a> mit einer Art <a href="https://dev.to/dailydevtips1/what-exactly-is-frontmatter-123g">Frontmatter</a>. Jeden Tag erstelle ich eine Datei, e. g. <code>2026-07-18.md</code>, und schreibe dort mehr oder weniger ungeordnet rein. Zettlr hat sich als das ultimative Schreibwerkzeug erwiesen und hat sogar eine <a href="https://languagetool.org/de">LanguageTool</a>-<a href="https://languagetool.org/de/proofreading-api">API-Integration</a>.</p>

<p>Plaintext, was Markdown ja letztendlich ist, erscheint mir als nachhaltiges Format, um Texte längerfristig zu speichern. Wer schon das eine oder andere Jahrzehnt bloggt, hat sich vielleicht auch schon mal Gedanken darüber gemacht, ob es nachhaltig ist, ein Blog ausschließlich in einer Datenbank zu halten.</p>

<p>Damit ich von jedem Gerät aus schreiben kann, lagern die Texte in einem privaten Git-Repository. Um den Spaß bequem lesen zu können, gibt es noch ein <a href="https://github.com/kniebes/tagebuch">kleines Git-PHP-Projekt zur Ausgabe des Tagebuchs im Browser</a>.</p>
<hr>
<p><a href="mailto:m@kniebes.io?subject=Tagebuch (knieb.es/6ad0)">Per E-Mail antworten</a><br>
<a href="https://kniebes.com/frag-mich.html">Du hast Fragen an mich oder ein Thema für die FAQ?</a></p>]]></description>

                            
                    <category><![CDATA[Mein Blog]]></category>
                
                    <category><![CDATA[Tagebuch]]></category>
                
                    <category><![CDATA[Git Projekt]]></category>
                                
            </item>

                            
                
            
            <item>
                
                <title><![CDATA[standard.site || Blogs schnell in die ATmosphere bringen]]></title>
                <link>https://kniebes.com/2026/07/12/standardsite-blogs-schnell-in-die-atmosphere-bringen.html</link>
                <dc:creator><![CDATA[Markus Kniebes]]></dc:creator>
                <pubDate>Sun, 12 Jul 2026 15:49:36 +0200</pubDate>
                <guid isPermaLink="true">https://knieb.es/6ac2</guid>
                <description><![CDATA[<p>Vor einer kurzen Weile bin ich von verschiedener Seite auf <a href="https://standard.site/">standard.site</a> und den <a href="https://standard-reader.app">Reader</a> aufmerksam gemacht worden. Ich fand’s toll und wollte auch dabei sein. Und da das <a href="https://atproto.com/">AT Protokoll</a> eine recht überschaubare Sache ist, habe ich <a href="https://bsky.app/profile/kniebes.com">meinem Blog einen bsky-Account gegönnt</a> und ein <a href="https://github.com/kniebes/io-atmosphere">Composer-Päckchen</a> geschnürt, um eine beliebige PHP-basierte Publikationsplattform recht einfach anbinden zu können.</p>

<p>Und siehe da. Nach nur wenigen Stunden ist <a href="https://standard-reader.app/p/did:plc:h43clckrydhhdh5le3ckk43k/self">mein Blog auf der standard-reader.app sichtbar</a>.</p>

<p>Das Package macht ein Blog und seine Posts im Atmosphere-Netzwerk (eg. <a href="https://standard-reader.app/">standard-reader.app</a>) sichtbar und crosspostet auf BlueSky. Es hat keine weiteren Abhängigkeiten außer <code>ext-curl</code> und <code>ext-json</code> und kann mit ein paar Handgriffen im eigenen PHP Code eingebunden werden. Zurzeit gibt es noch keine Registrierung bei <a href="https://packagist.org/">Packagist</a> und man muss das Repo in der <code>composer.json</code> des Host-Projekts bekannt machen:</p>

<pre><code class="language-json">  "repositories": [
    {...}
    {
      "type": "git", 
      "url": "git@github.com:kniebes/io-atmosphere.git"
    }
  ]
</code></pre>

<p>Naja, und der Rest steht im <a href="https://github.com/kniebes/io-atmosphere/blob/main/README.md">README</a> und im <a href="https://github.com/kniebes/io-atmosphere/blob/main/examples/BlogSyndication.php">Implementierungsbeispiel</a>.</p>
<hr>
<p><a href="mailto:m@kniebes.io?subject=standard.site || Blogs schnell in die ATmosphere bringen (knieb.es/6ac2)">Per E-Mail antworten</a><br>
<a href="https://kniebes.com/frag-mich.html">Du hast Fragen an mich oder ein Thema für die FAQ?</a></p>]]></description>

                            
                    <category><![CDATA[Weblog]]></category>
                
                    <category><![CDATA[Mein Blog]]></category>
                
                    <category><![CDATA[Indieweb]]></category>
                
                    <category><![CDATA[BlueSky]]></category>
                
                    <category><![CDATA[ATmosphere]]></category>
                
                    <category><![CDATA[AT Protokoll]]></category>
                
                    <category><![CDATA[Git Projekt]]></category>
                                
            </item>

                            
                
            
            <item>
                
                <title><![CDATA[Movie Tracker als Standalone Projekt]]></title>
                <link>https://kniebes.com/2026/07/05/movie-tracker-als-standalone-projekt.html</link>
                <dc:creator><![CDATA[Markus Kniebes]]></dc:creator>
                <pubDate>Sun, 05 Jul 2026 17:59:26 +0200</pubDate>
                <guid isPermaLink="true">https://knieb.es/6ab8</guid>
                <description><![CDATA[<p>Ich habe mal den Movie Tracker aus der Blogsoftware herausgepfriemelt und als eigenständiges Projekt auf <a href="https://github.com/kniebes/movie-tracker">GitHub bereitgestellt</a>. Eigentlich sind es nur vier Views:</p>

<h3>Login</h3>

<figure style="view-transition-name: figure-2566"><a href="https://photo.kniebes.com/photo/2026/07/05/movie-tracker-login.webp" ><img src="https://photo.kniebes.com/photo/2026/07/05/movie-tracker-login-1024x762.webp" alt="Movie Tracker Login"></a><figcaption class="cap"><strong>Movie Tracker Login</strong></figcaption></figure>

<p>Der Single-User-Login wird über die .env konfiguriert.</p>

<pre><code class="language-ini">AUTH_USERNAME=mk
AUTH_PASSWORD_HASH='&lt;password_hash&gt;'
</code></pre>

<p>Der Passwort-Hash kann mit einem mitgelieferten PHP-Skript erzeugt werden:</p>

<pre><code class="language-bash">$ php bin/create-password-hash.php mein-passwort
In die .env übernehmen (inklusive Anführungszeichen):
AUTH_PASSWORD_HASH='$2y$12$eKomaqWXRQNHJa0pdrw9huODslOQMADsLwGCfYRqrJu76NlO2Zuxu'
</code></pre>

<hr />

<h3>Movies Übersicht</h3>

<figure style="view-transition-name: figure-2563"><a href="https://photo.kniebes.com/photo/2026/07/05/movie-tracker-movie-list.webp" ><img src="https://photo.kniebes.com/photo/2026/07/05/movie-tracker-movie-list-1024x767.webp" alt="Movie Tracker Movie List"></a><figcaption class="cap"><strong>Movie Tracker Movie List</strong></figcaption></figure>

<p>Im Listview werden die angeschauten Filme und Serien in chronologischer Reihenfolge angezeigt. Ein Klick auf einen Eintrag öffnet den Editview.</p>

<hr />

<h3>Hinzufügen/Bearbeiten</h3>

<figure style="view-transition-name: figure-2564"><a href="https://photo.kniebes.com/photo/2026/07/05/movie-tracker-movie-edit.webp" ><img src="https://photo.kniebes.com/photo/2026/07/05/movie-tracker-movie-edit-1024x766.webp" alt="Movie Tracker Movie Edit"></a><figcaption class="cap"><strong>Movie Tracker Movie Edit</strong></figcaption></figure>

<p>Beim Anlegen eines neuen Elements reicht es, den Titel einzugeben und auf „Von TMDB laden“ zu klicken. Soweit der Film gefunden wird, werden Darsteller, Originaltitel, Jahr und URL automatisch ergänzt.</p>

<hr />

<h3>Cast</h3>

<figure style="view-transition-name: figure-2565"><a href="https://photo.kniebes.com/photo/2026/07/05/movie-tracker-cast.webp" ><img src="https://photo.kniebes.com/photo/2026/07/05/movie-tracker-cast-1024x767.webp" alt="Movie Tracker Cast"></a><figcaption class="cap"><strong>Movie Tracker Cast</strong></figcaption></figure>

<p>Die Darstellerliste enthält den Cast, der mit einem Film gespeichert wurde.</p>

<p>Der schnellste Weg, um die Darsteller mit einer URL auszustatten, geht über ein kleines Skript, das die URL in der TMDb abfragt.</p>

<p>Aber die URLs können auch von Hand bearbeitet werden und man kann eine andere als den automatisch ergänzten Person-Link von TMDb nehmen.</p>

<pre><code class="language-bash">$ php bin/update-movie-cast-urls.php
[1 von 11] Brad Pitt: https://www.themoviedb.org/person/287
[2 von 11] Charlotte Gainsbourg: https://www.themoviedb.org/person/4273
[3 von 11] Jessie T. Usher: https://www.themoviedb.org/person/198847
[4 von 11] LaKeith Stanfield: https://www.themoviedb.org/person/1200864
[5 von 11] Maika Monroe: https://www.themoviedb.org/person/1094091
[6 von 11] Mark Wahlberg: https://www.themoviedb.org/person/13240
[7 von 11] Rosa Salazar: https://www.themoviedb.org/person/973667
[8 von 11] Thomas Jane: https://www.themoviedb.org/person/11155
[9 von 11] Travis Tope: https://www.themoviedb.org/person/1278725
[10 von 11] William Fichtner: https://www.themoviedb.org/person/886
[11 von 11] 杨颖: https://www.themoviedb.org/person/150899
Fertig. 11 von 11 aktualisiert.
</code></pre>
<hr>
<p><a href="mailto:m@kniebes.io?subject=Movie Tracker als Standalone Projekt (knieb.es/6ab8)">Per E-Mail antworten</a><br>
<a href="https://kniebes.com/frag-mich.html">Du hast Fragen an mich oder ein Thema für die FAQ?</a></p>]]></description>

                                
                    <media:content url="https://photo.kniebes.com/photo/2026/07/05/movie-tracker-login.webp" type="" medium="image" duration="10"></media:content>
                    <enclosure url="https://photo.kniebes.com/photo/2026/07/05/movie-tracker-login.webp" length="0" type="image/jpeg" />
                                
                    <category><![CDATA[Movies]]></category>
                
                    <category><![CDATA[PHP]]></category>
                
                    <category><![CDATA[Movie Tracker]]></category>
                
                    <category><![CDATA[Git Projekt]]></category>
                                
            </item>

                            
                
            
            <item>
                
                <title><![CDATA[Simple Anti-FOMO RSS-Reader]]></title>
                <link>https://kniebes.com/2026/05/28/simple-anti-fomo-rss-reader.html</link>
                <dc:creator><![CDATA[Markus Kniebes]]></dc:creator>
                <pubDate>Thu, 28 May 2026 08:34:11 +0200</pubDate>
                <guid isPermaLink="true">https://knieb.es/6a59</guid>
                <description><![CDATA[<p>Das erste Mal, dass ich ein GitHub Repo public mache. Im RSS-Club hatte ich ja schon mal angedeutet, dass ich einen einzigen RSS-Reader geschrieben habe, der per LLM FeedItem für mich nach Relevanz sortieren soll. Ich muss nicht alles lesen, was mir vor die Augen kommt. Man wird heutzutage ohnehin schon wie blöd mit News vollgepumpt. Quasi ein <a href="https://github.com/kniebes/simple-rss-reader/">Anti-FOMO RSS-Reader</a>. Der Name ist noch etwas sperrig.</p>

<p>Feature sind überschaubar:</p>

<ul>
<li>Feeds werden einer OPML-Datei entnommen, gelesen und die Items in einer MySQL Tabelle hinterlegt.</li>
<li>Wenn ein <code>ANTHROPIC_API_KEY</code> hinterlegt ist, werden neu gelesene Items mit dem <span class="nowrap">claude-haiku-4-5-20251001-Model</span> klassifiziert. Dazu wird eine Markdown-Datei mit einer Liste von Kategorien herangezogen. Diese enthält je Zeile eine Kategorie mit Schlüsselwörtern/Definition. Die Reihenfolge der Kategorien entspricht der Relevanz. Was nicht vom LLM klassifiziert werden kann, ist „Nicht kategorisiert“ und steht unten in der Liste. Das sind dann in der Regel Posts, die sich nicht mit meinem Interessenbereich decken. Bei der Klassifizierung entstehen geringfügige Kosten.</li>
<li>Neue Items können als gelesen markiert werden.</li>
<li>Alte Items werden nach 5 entsorgt. 
* Items können favorisiert werden und bleiben dann über 5 Tage hinaus behalten.</li>
</ul>

<p>Mehr gibt es noch nicht. Ich könnte mir vorstellen, die index.php zum Lesen auch wegzulassen und stattdessen das Ganze als RSS-Feed mit (soweit verfügbar) vollständigen Posts einfach nur als Feed bereitzustellen, den ich dann mit NetNewsWire lesen kann. Mal sehen …</p>

<p>Eine DDEV-Config ist im Repo enthalten.</p>

<p>Naja, es ist eher eine Art Proof of Concept als eine ernst gemeinte Anwendung. Ich denke, dass man so etwas vielleicht auch mit ein paar Klicks in Inoreader machen könnte. Aber wo bleibt denn da der Spaß.</p>
<hr>
<p><a href="mailto:m@kniebes.io?subject=Simple Anti-FOMO RSS-Reader (knieb.es/6a59)">Per E-Mail antworten</a><br>
<a href="https://kniebes.com/frag-mich.html">Du hast Fragen an mich oder ein Thema für die FAQ?</a></p>]]></description>

                            
                    <category><![CDATA[Internet]]></category>
                
                    <category><![CDATA[PHP]]></category>
                
                    <category><![CDATA[RSS]]></category>
                
                    <category><![CDATA[LLM]]></category>
                
                    <category><![CDATA[Claude Code]]></category>
                
                    <category><![CDATA[Simple RSS Reader]]></category>
                
                    <category><![CDATA[Git Projekt]]></category>
                                
            </item>

                            
        
    </channel>
</rss>
