Ich bau mir einen Blog

Letzte Aktualisierung: 14. Januar 2023 um 20:25 Uhr

So schwer kann das doch nicht sein, oder?

Nachdem ich festgestellt habe, dass es wohl kein passendes System für mich gibt, habe ich begonnen mir wieder ein eigenes zu Schreiben. Es fehlen nur noch ein paar Kleinigkeiten wie die Kommentarfunktion, ein Feed (Atom) und schönere URL. Ansonsten ist die Webseite schon voll einsatzbereit und nach dem letzten 3 Punkten geht es nur noch um Feinheiten und netten “Spielereien” die man auf “Fremdsystemen” nur schwer umsetzen könnte. Lasst euch einfach überraschen was da noch so kommt.

Hier sind die Punkte die ich zu Beginn auf meiner Wunschliste hatte. Viele davon sind, nach genauerer Überlegung, unnötig geworden und bei einigen stehen Nutzen und Aufwand in keinen sinnvollen Verhältnis.

Ich habe einige alte Beiträge wieder mit rein genommen, vieles von dem alten Zeug lasse ich aber einfach weg. Teils weil sie so veraltet sind (Wer braucht heute noch eine Umbauanleitung für das wbb1? Oder Vermutungen was nach Inkrafttreten der DSGVO im Netz so passiert oder meinen Spottartikel über die Millennium-Panikmache, welchen ich im Januar 2000(!) auf meiner aller ersten Webseite hatte), anderes interessiert mich einfach nicht mehr (Fertigungsrunen in Runes of Magic, irgendwelche Listen von Gems of War, Baustellengeschichten)

Kleiner Fun fact: Die Webseite besteht aus 18 Dateien mit einer Gesamtgröße von 36,3 kB ohne Bilder. Mit Bildern sind es 53 Objekte mit einer Gesamtgröße von 2048,4 kB , einer MySQL-Datenbank mit 2 Tabellen und ca 20 Spalten (79,6 kB). Damit belegt die Webseite 0,002128 von 250 GB <- da gehen noch paar Beiträge, oder? (Stand 04.05.2022).

Schreib ich mal wieder zu viel? Also – hier kurz und knapp die Punkte:

  1. Schöne URL
    Ganz ehrlich /index.php?id=XXX sieht nicht schön aus. Auch /impressum.php haut mich nicht gerade vom Hocker. Es sollte also /ID-Beitragsüberschrift (/14-halloechen) und /impressum in der Adresszeile des Browsers stehen – sieht hübscher aus und ist irgendwie auch logischer. Mein Problem: Ich habe noch nie eine Rewrite-Engine gebaut, betrete also da komplettes Neuland. Bevor ich damit aber “rumspiele und teste” (so funktioniert bei mir Programmieren, da ich eigentlich keine Ahnung hab, was ich da mach – behaupte ich zumindest immer) will ich aber erst alles soweit fertig haben, dass das die Struktur sich nicht mehr ändert. Ich glaub vorher macht das noch keinen Sinn.
    Nachtrag vom 06.05.2022:
    Sind schöne URL auch wirklich immer schöner, oder kann man sich den Aufwand sparen? Ich habe von Anfang an bewusst auf Kategorien oder Archive verzichtet, da man so immer über viele Wege zum gleichen Ziel kommt. Diesen Beitrag hier erreicht man über https://madekozu.de/beitrag.php?id=2 – das ist eine kurze URL und jeder erkennt – es geht um Beitrag Nr. 2 – das kann man sich sogar merken und aus dem Kopf eintippen. Die “schöne” URL wäre jetzt https://madekozu.de/2-mades-blog-selbst-ist-der-mann oder https://madekozu.de/2/mades-blog-selbst-ist-der-mann oder – auch die beiden sagen aus, es geht um Beitrag 2. Aber kann ich die aus dem Kopf eintippen? Nein, weil das wieder für Maschinen gemachte Schönheit ist und es für Menschen nicht eindeutig zu erkennen ist. Ich denke ich muss auch nicht verheimlichen, dass ich diese Seite mit PHP erstelle. Ob ich also nun https://madekozu.de/impressum.php oder https://madekozu.de/impressum habe, ist mir völlig egal, die müssen nur da und mit einem Klick erreichbar sein, selbst wenn die Datenbank mal streikt. und bei der beitrag.php?id=ZAHL ist das für mich schön, kurz, nachvollziehbar und passt komplett in fast jede Adresszeile. Mit anderen Worten – meine URL sind schön, da brauch ich nichts ändern.
  2. RSS 2.0 – Feeds
    Wenn man mal wieder genau weiß was man will, dann sagt man den einen Tag – nö, keine Feeds, ein Tag später – ach doch, die sind schon besser als Mails…
    So auch hier. Es gibt nun also 2 Feeds, einen der die zuletzt bearbeiteten Beiträge (mir ist es wichtig, dass auch Änderungen bemerkt werden) und einen, der die letzten Kommentare ausgibt. So muss niemand mehr was verpassen. Die Feeds sollten eigentlich mit den meisten Readern funktionieren, auch wenn sie noch nicht zu 100% valide sind. Das bekomme ich aber auch noch hin.
  3. Kommentare
    Sobald die Beiträge auf der dynamischen Seite angezeigt werden können, stürze ich mich auf die Kommentare. Hier ist mir wichtig, dass keine Registrierung nötig ist. Es muss nur ein Name und der Kommentar selbst angegeben werden. Emailadresse oder Website sind freiwillig, IP interessiert mich gar nicht. Die Kommentare landen, sofern sie meinen Botfilter (auf den ich hier nicht weiter eingehe) passiert haben in der Datenbank. Dort entscheiden ein true oder false-Eintrag, ob dieser auf der Webseite angezeigt wird (mit anderen Worten – jeder Kommentar braucht mein OK). Wie ich die sortiere oder vom Leser sortierbar mache, ob ich nach X Kommentaren eine Blätterfunktion einbaue – das weiß ich jetzt alles noch nicht. Das kommt in erster Linie auf die Nutzung an – lohnt es sich, oder eher nicht.
  4. Volltextsuche
    Wie schon erwähnt, wird es auch eine Volltextsuche geben – so jedenfalls der aktuelle Planungsstand. Was die macht ist bekannt – alle Beiträge werden nach einer Zeichenfolge abgesucht. Dabei spielt es keine Rolle ob diese als Hashtag (welcher gleichzeitig auch den Suchbegriff für die Metadaten generiert), in der Kurzbeschreibung oder im eigentlichen Artikel sind. Auch eine Suche nach Datum etc. wird da mal rein gebaut. Allerdings – das wird die Funktion sein, welche ich erst fast ganz zum Schluss angehen werde.
  5. Design erstellen/anpassen
    Das war erst mal nicht sehr schwer, da ich in FlatPress (tolles Blogsystem, leicht zu installieren, aber leider nichts für mich) das Design eh schon umgebaut hatte, brauchte ich nur das HTML-Gerüst (ist ein Standardaufbau mit div’s) übernehmen und anpassen. Die CSS sind aktuell noch 1:1 übernommen und ein ziemliches Chaos, die schreibe ich aber nochmal komplett neu und viel kompakter, weil da eigentlich fast alles raus fliegen kann. Mir ist aktuell aber wichtig, dass es erst mal funktioniert, man es wiedererkennt und ich schnellstmöglich umstellen kann.
  6. Die statischen Seiten
    Alles was statische Seiten sind (z.Bsp. Impressum, Datenschutzerklärung, Fehlerseiten und so ein Zeug) wurde erstellt. Diese sind hier wirklich statisch, werden also nicht erst von Dateien oder Datenbanken eingelesen wie es in CMS oder Blogsystemen sonst üblich ist. Das ist auch wichtig, da es immer mal zu Datenbankausfällen oder Fehlern in meiner Software kommen kann. Auf diese Weise ist sicher gestellt, dass diese wichtigen Seiten immer funktionieren, selbst dann, wenn der Rest zerschossen ist, außer der Server hat sich mal aufgehangen, aber dann ist es eh egal – in dem Fall ist die Seite ja eh nicht erreichbar.
  7. Ordnerstruktur
    Ich hasse langes Suchen. Wenn ich eine Grafik brauche, dann finde ich die unter /img/, biete ich etwas als Download an, dann ist das auch unter /download/ abgelegt. Ich fange nicht an, das in irgendwelchen Jahresarchiven oder ähnlichen abzulegen, da nicht nur meine Software es finden soll, sondern auch ich. So einfach und logisch wie es nur geht. Ich suche Smilies -> /img/smilie/. Nur so hab ich eine Chance, auch in 20 Jahren noch zu wissen, wo ich was hin geschmissen hab. Bilder für Beiträge /img/beitrag/madesblog/22-05-02-001.jpg = Ein Bild/Screenshot von diesem Blog, der erste den ich am 2.5.2022 aufgenommen habe – das ist logisch, man kann es sortieren und auch schnell finden. Vor vielen Jahren habe ich noch das Format 22050201.jpg verwendet, da der Name nur 8 Zeichen haben durfte – funktioniert hat es aber nach den gleichen Prinzip und für mich hat sich das bewährt. Ein upload/9q232a2esd928263daw89761.jpg dagegen sagt mir nichts, das kann ich mir nicht merken und ich kann es nicht zuordnen. Ein kleinen Nachteil hat aber auch mein System – keine eindeutigen Dateinamen. Ohne den richtigen Ordner, weiß ich auch nicht wozu die Datei gehört. Eigentlich sollte ich madesblog-22-05-02-001.jpg als Dateinamen verwenden, aber – der Mensch ist ein Gewohnheitstier, ich glaub das bekomme ich nur schwer wieder raus.
  8. Sitemap
    Warum warten bis Google & Co vorbei schauen und suchen – besser ist es doch, gleich mit den Finger drauf zu zeigen und zu sagen: “Ey – schau doch einfach dort”. Aktuell verwende ich einfach einen Generator dafür, der erstellt die und ich lad sie dann hoch. Auf Dauer ist das natürlich keine Lösung und sie soll natürlich automatisch generiert werden. Bevor ich das aber in Angriff nehme, sollte ich die unten stehende RewriteEngine (Schöne URL) erst mal fertig haben, dann brauch ich das Ding nur einmal anfassen. Bis dahin tut es der Generator und der macht sehr gute Arbeit. Die Sitemap wird inzwischen automatisch generiert und beinhaltet die Links zu jeden einzelnen Beitrag. Alle anderen Seiten (Impressum und so) sind da nicht dabei.
  9. Datenbankstruktur
    Für die nicht statischen Inhalte, also die Beiträge verwende ich eine MySQL-Datenbank die ich je nach Bedarf erweitern kann. Aktuell befindet sich darin nur die Grundstruktur für die Beiträge, einige Testbeiträge und auch dieser Beitrag. Wie das alles genau aufgebaut ist, zähle ich jetzt natürlich nicht auf – zum Einen sprengt es den Rahmen und zum Andern ist es manchmal besser, nicht zu gläsern zu sein. Grob in der Funktion: Jeder Beitrag hat feste Informationen, wie z.Bsp eine ID, diese gibt es immer nur einmal und sie ist eine fortlaufende Nr, welche automatisch bei der Erstellung eines Beitrages angelegt wird. Dann enthält jeder Beitrag neben den sichtbaren Inhalt noch Suchbegriffe und eine Kurzbeschreibung, welche ich später für die Metadaten in Html-Kopf verwende (das ist noch nicht fertig, aber würde auch jetzt schon funktionieren. Hier auf der aktuellen Seite (index.php) wird gezielt dieser Beitrag ausgelesen und auch nur dieser angezeigt. Später werden diese über index.php?id=XXX (und da kommt die oben genannte ID zum Einsatz) und noch viel später wäre dieser Beitrag hier unter /14-halloechen zu erreichen, aber dafür muss ich erst noch eine Rewrite-Engine erstellen – das kommt später mal. Zu den Beitragsinformationen gehört auch das Erstellungsdatum, die Erstellungsuhrzeit und selbiges auch für die letzte Änderung. Auch hier mache ich mir das Leben etwas einfacher. Gespeichert wird 2022-05-02-23-13 – was heißt, dass ich diesen Beitrag am 02.05.2022 um 23:13 erfasst oder geändert habe. Warum mache ich das so? Ganz einfach – ich will mit einem Blick sehen woran ich bin und dies auch manuell jederzeit ohne groß zu überlegen in der Datenbank ändern können. Es werden auf dieser Seite eh keine Zeitzonen eine Rolle spielen und das hat auch einen einfachen Grund. Ich erstelle diese Seite für den deutschsprachigen Raum, wir haben also alle die gleiche Zeit. Ich schreibe nun in einem Beitrag um 23 Uhr “Wird Zeit ins Bett zu gehen” und durch Zeitzonenkorrektur steht da als Uhrzeit bei einem Leser in Japan auf einmal 06:00 Uhr morgens – nun – der denkt dann wohl ich hatte Nachtschicht, während ein New Yorker der Meinung ist ich mach ein Mittagsschläfchen. Das macht für mich einfach keinen Sinn. Hier steht fix und fest die lokale Zeit und ich speichere sie in der gezeigten Form, die kann ich lesen und mit PHP gut verarbeiten. Man kann damit Rechnen, Sortieren, Filtern, also alles, was man auch mit einem timestamp könnte – aber – ich kann es einfach so lesen und auch verändern.
  10. Dynamische Seiten
    Der wichtigste Teil und auch das, worum es im Kern geht. Inhalte, Beiträge. Das muß nicht groß erklären, jeder weiß wie ein Blog funktioniert. Beiträge, die sich in einer Datenbank befinden, sollen irgendwie auf den Bildschirm gebracht werden. Man sagt also – zeig mir Beitrag 134 und schon wird der angezeigt. Wie man auf die 134 kommt, hat wieder etwas mit dem strukturellen Aufbau, Suchfunktionen uns ähnlichen zu tun – hier geht es erstmal um die gezielte Anzeige. Woher die Seite weiß, welchen Beitrag sie anzeigen soll, hab ich oben bei der Datenbankstruktur schon erklärt. Die Seite macht also nichts weiter, als den gewünschten Beitrag aus der Datenbank zu holen und hier anzuzeigen. Dabei werden Meta-Daten mit berücksichtigt.
  11. Startseite
    Wie man es kennt, werden auf der Startseite die aktuellsten 5 Beiträge (Änderungsdatum – nicht Erstellungsdatum) angezeigt. Hierbei wird der Titel, das Änderungsdatum und die Kurzbeschreibung verwendet. Dazu kommt dann noch ein Link, mit dem man zu der oben genannten dynamischen Seite gelangt. Optisch kann ich das jederzeit erweitern, zum Beispiel durch die Anzeige von Beitragsbildern, verwendete Hashtags (dazu später mehr) und was mir sonst so einfällt.
  12. #Hashtags
    Jeder kennt #Hashtags und ich werde diese anstelle von Kategorien oder Stichworten verwenden. Am Anfang wird es lediglich der #Hashtag selbst sein, den man einfach anklicken kann und so alle Beiträge findet, die ebenfalls diesen #Hashtag benutzen. Dieses System wird im Laufe der Zeit immer mehr erweitert, weil ich die Idee dahinter schon immer einfach und auch genial fand. Mögliche Spielereien wären die Top10 – #Hashtags aber – und das ist mir sogar wichtiger, eine Entlastung der Datenbank. Jeden verwendeten #Hashtag kann ich in der Datenbank speichern mit dem Verweis auf die Beiträge die ihn verwenden. Anstatt die Datenbank mit einer Volltextsuche (sie es dennoch auch geben wird) zu quälen, werden einfach die #Hashtags nach Treffern durchsucht. Und ganz ehrlich, wem juckt es nicht in den Fingern und will einfach mal #fckptn in seinem Beitrag verwenden. Die Tags sollten theoretisch sogar schon erkannt werden, allerdings haben sie noch kein Linkziel, da es die Funktion selbst ja noch nicht gibt.
    Nachtrag vom 04.05.2022:Warum das Rad 2x erfinden? Die Tags machen nichts anderes als die Volltextsuche – nur eben mit einer # davor
  13. Atom-Feed
    Es wird später 2 Atomfeeds geben. Der erste informiert, genau wie die Startseite über die aktuellsten 5 Beiträge (auch hier – Aktualisierungs- nicht Erstellungsdatum relevant). Der zweite Feed kann verwendet werden, um über neue Kommentare informiert zu werden. Hier werden ALLE freigegebenen Kommentare berücksichtigt, egal zu welchen Beitrag und die neuesten 5 ausgegeben.Nachtrag vom 04.05.2022:Ich habe gerade je einen RSS und einen Atom Feed zusammengebastelt. Beide haben ihre Arbeit recht gut gemacht, der atom-Feed hat sich gelegtlich mal verschluckt – das war nicht weiter tragisch. Bei der Fehlersuche und Informationen dazu bin ich aber immer wieder über Seiten gestolpert, die das Anbieten von Feeds doch recht stark in Frage gestellt haben. Die SEO-Aspekte lasse ich mal außen vor – mich wurmt da etwas ganz anderes. Jeder kennt die Seiten, welche wahllos zusammengewürfelte Inhalte haben – bei mir wären es zwar nur Titel(max 120 Zeichen) und Beschreibung (max 160 Zeichen), aber auch die müssen erstmal ausgeliefert werden. Ich hab mir daraufhin mal die Mühe gemacht und die letzten 30 Tage meiner Serverlogs (länger bleiben die bei mir nicht gespeichert) genauer unter die Lupe genommen. Die Zugriffe auf die Feeds gegenüber den Zugriffen direkt auf die Seite waren ein Unterschied, da fallen einem die Ohren ab. Spitzenreiter war der 17.April, mit knapp 900.000 Anfragen, was mehr als 10 pro Sekunde waren. Dem gegenüber standen rund die üblichen rund 10.000 Anfragen auf den Rest der Seite – und da sind auch noch viele Bots dabei. Nein – es gibt keine Feeds mehr von mir. Ich werde dann doch auf Email-Abos zurückgreifen mit Opt-In wie sich das gehört. Einmal als Abo für die Hauptseite – also Info über neue Beiträge und dann nochmal für jeden Beitrag einzeln die Kommentare. Man trägt sich ein – bekommt ne Mail die man bestätigen muß und zum Austragen auch einzeln für die Beiträge oder auch komplett – so wie man will. Das macht einfach mehr Sinn (auch wenn der Aufwand etwas größer ist), als massig an Daten permanent durchs Netz zu schicken der dann auf irgendwelchen zweifelhaften Seiten als Inhalt dient.
  14. Adminbereich
    Brauche ich einen Adminbereich? Nein, aber er macht einige Dinge angenehmer. Dort kann ich z.Bsp. einen schönen Rich-Text-Editor einbauen, der für mich den HTML-Code schreibt den ich als Beitrag abspeicher (ja – ich speichere direkt in HTML). Solche Editoren gibt es aber auch online – muß ich den also haben, nein. Ich habe das System gebaut, ich weiß wie es funktioniert und wie ich direkt in der Datenbank meine Beiträge schreiben kann. Einen Adminbereich brauche ich also absolut nicht, phpmyadmin und eventuell ein Onlineeditor reichen mir völlig aus, um Beiträge zu schreiben. Gemütlicher würde es über einen Adminbereich gehen, den müsste ich wieder sichern (.htaccess und .htpasswd) – ein Loginbereich oder der so würde er von mir eh nicht bekommen. Ich schreibe allein – also brauch ich das Zeug einfach nicht.
  15. Cookies und Scripte
    Auf LdtW werden NIE Cookies benötigt werden (Man kann sich nirgends einloggen, es gibt keine Einstellungen die sich das System merken muss) und es werden auch nie irgendwelche Javascripts zum Einsatz kommen. Warum? Wer mit Bildern “Wischiwaschi” machen will, der soll zu TikTok oder anderen Seiten gehen, der ist hier wirklich am total falschen PLatz. Hier gibt es aneinander gereihte Buchstaben, welche Wörter bilden und zu teils gigantischen Texten werden. Bilder gibt es nur manchmal und wenn ich der Meinung bin, da kann man nicht erkennen worum es geht, kann man drauf klicken und sieht es in einem neuen TAB in ganzer Schönheit. Ehrlich – mehr braucht es nicht und so wie ich Bilder einsetze, wird das auch eher die Ausnahme sein.
  16. LdtW als Download
    Wenn alles soweit ist, dass ich der Meinung bin – ja – damit kann man Arbeiten, wenn man weiß was man tut, wird es LdtW auch als Download geben. Ich kann aber nur darauf hinweisen: Das ist nichts für jedermann, auch wenn es wirklich sehr einfach gestrickt ist. Wer bis hier unten gelesen hat, weiß auch warum. Es gibt keine Installtionsroutine, für die Datenbank lediglich eine MySQL-Abfrage, welche die Struktur der Datenbank anlegt, die PHP-Dateien selbst und das war es auch schon. Es kommen keine Grafiken, keine Anleitung, zu 99,9% kein Adminbereich – nur die *.php und die müsst ihr alle anpassen (dabei würde ich aber unter die Arme greifen), sonst läuft nix. Es ist/wird eben ein System, welches auf meine Bedürfnisse zugeschnitten ist.
    Nachtrag vom 04.05.2022: Da ich keinen Adminbereich bauen werde, gebe ich LdtW auch nicht weiter. Jeder Beitrag kann das Design zerschießen, die Administration direkt über die Datenbank ist nur möglich, wenn man auch weiß, wie das komplette System arbeitet. Meine Empfehlung an dieser Stelle ist weiterhin FlatPress, das ist leicht zu bedienen, läuft schnell und stabil – in meinen Augen das beste Blogsystem was man derzeit frei bekommen kann. (Nein: WordPress ist KEIN Blogsystem mehr sondern eine eierlegende Wollmilchsau, kann von allen etwas, aber kaum was davon richtig gut und schon gar nicht schnell und sparsam.

Nachtrag vom 19.09.2022: Leider musste ich mich doch wieder vom Eigenbau abwenden. Wie ich Anfangs schon befürchtet hatte – es raubt zu viel Zeit und die Inhalte kommen dadurch zu kurz. Seit letztem Wochenende läuft nun wieder WordPress als Blogsystem. Komplett auf Eis gelegt ist der Eigenbau aber nicht – wenn es mir in den Fingern juckt, bastel ich daran auch noch weiter. Einen passenden Einsatzort werde ich dafür sicher noch finden. Aber hier bleibt nun erstmal WP drauf.

2 Gedanken zu „Ich bau mir einen Blog“

  1. Ja mein liebes Brüderchen, der „Millennium bug“ wird wirklich kommen auch wenn er sich dann anders nennt 🙂
    Aber erst ein bissel später, um genau zu sein in 12 Tagen …. Und 15 Jahren früh 3 Uhr xD

    Das Problem ist dann aber ein Überlauf des 32 Bit integer der Unixzeit. Alle EDV-System die mit der Standart-Zeit von Unix arbeiten werden wegen der sekündlichen Inkrementierung seit 01.01.1970 00:00 Überlaufen…

    Sicher wird es viele Ausfälle in der Industrie geben und bei vielen Geräten wo kein Mensch mehr daran denkt das darauf Unix läuft.

    „Never change a running system“ wird dann das genaue Gegenteil bewirken und das running system mal abwürgen…

    Antworten
    • Oh ja, mein heiß geliebter Unix-Timestamp – ich hab das Ding schon immer gehasst und versucht zu ersetzen. Da ging es mir zwar nicht darum, was nach 19. Januar 2038 ist, sondern dass ich auch gern ein Datum vor dem 01.01.1970 hätte – sei es auch nur, um unseren ältesten Bruder mit Geburtsdatum in der Datenbank ablegen zu können, ohne auch noch hier ins Minus zu rutschen – reicht ja auf der Bank 😀

      Eins ist aber sicher – die Faxe unserer Behörden haben dann immer den 01.01.1970 als Sendedatum, falls das nicht sogar heute schon so ist, weil keiner weiß, wo man die Uhrzeit einstellt und es keine entsprechende Arbeitsanweisung gibt …

      Antworten

Schreibe einen Kommentar