PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Aktion: Die kleinste Blogsoftware der Welt!

with 95 comments

Inspiriert durch Stefan Wienströers Artikel auf SteviesWebsite möchte ich hier dazu aufrufen, den Rekord für das „kleinste Blog System der Welt“ zu brechen! Es geht darum eine Blogsoftware zu schreiben mit möglichst wenig Code. Stefan hat es mit 894 Byte geschafft, ein ganz rudimentäres CMS zu schreiben (das aber nicht ganz unten stehenden Regeln erfüllt).

Die folgenden Regeln werden definiert, damit auch alle Projekte den selben Funktionsumfang bieten:

  1. Die öffentlich sichtbare Seite muss alle Blogartikel in chronologischer Reihenfolge auflisten
  2. Jeder Artikel hat eine Überschrift, einen Artikeltext und eine Zeitangabe der Erstellung
  3. Es gibt einen passwortgeschützten Admin-Bereich, wo man neue Artikel erstellen kann
  4. Es muss kein gültiger HTML-Code sein, aber die Webseite muss im Firefox ≥ 3.5 darstellbar und nutzbar sein
  5. Es kann jede PHP Version ≥ 5.2 genutzt werden, es dürfen keine besonderen Extensions vorausgesetzt werden
  6. Es dürfen Short-Open-Tags genutzt werden
  7. Die Speicherung der Artikel soll in einer Datei stattfinden
  8. Es dürfen alle Tricks genutzt werden um kurzen Code zu schreiben: Weglassen von Umbrüchen und Leerzeichen, kurze Variablennamen usw. Es geht nicht um Lesbarkeit, sondern um Funktion und kleinen Code!
  9. Der SourceCode muss veröffentlicht werden (natürlich 😉 ), evtl. mit Erklärungen falls der Code unlesbar ist 😉
  10. Es ist möglich, seinen Code zu verbessern und mehrere Lösungen einzusenden

Die Aktion endet am 07.03.2010, ihr habt also 4 Wochen Zeit. Um teilzunehmen erstellt in eurem Blog einen Artikel mit einem Link zu dieser Aktion. Damit ich euren Rekord mit aufnehmen kann in die Liste benötige ich einen Trackback, einen Kommentar oder eine Email. Der SourceCode muss natürlich öffentlich zugänglich und herunterladbar sein, damit jeder das Ergebnis überprüfen kann.

Ich bin sehr gespannt wo die Grenze liegt, wenn man es wirklich drauf anlegt!

————————————-

Aktuelle Rekorde:

  1. Kim Kortes Code 78 Byte , WHAO!
  2. Dubbels Code 90 Byte
  3. Fabians Code 138 Byte <— Twitter-fähig!
  4. Oli 165 Byte (Notices werden unterdrückt in der Standard php.ini)
  5. PX 173 Byte
  6. Sebastians Code 183 Byte
  7. Players Code 234 Byte
  8. Unbekannter Code 269 Byte
  9. Jans Code 619 Byte, mit validem Html und Templateengine (formatiert incl. Kommentaren)

Besondere Rekorde:

  • Vincent 138 Byte, läuft nur in Chromium, nicht Firefox
  • Oli 148 Byte, läuft nur unter Unix, da es Backticks und Unixbefehle enthält.
  • Sebastians Code 170/173 Byte, Warnings werden ausgegeben (könnten unterdrückt werden 😉 ) und sehr laschem „Passwortschutz“
  • Players Code 214 Byte, funktioniert nur mit aktiviertem register_globals

Written by Michael Kliewe

Februar 9th, 2010 at 9:40 am

95 Responses to 'Aktion: Die kleinste Blogsoftware der Welt!'

Subscribe to comments with RSS or TrackBack to 'Aktion: Die kleinste Blogsoftware der Welt!'.

  1. Ronald Kirschler

    13 Feb 10 at 12:35

  2. @Player: Du kannst es aktivieren, kommst aber dann in die zweite Rangliste. register_globals sollte heutzutage einfach nicht mehr aktiviert werden. Es soll eine Standard php.ini genutzt werden, und da ist es gottseidank deaktivert.
    Aber nur um den Unterschied zu sehen habe ich das Ergebnis in der zweiten Rangliste hinzugefügt.

    Michael Kliewe

    13 Feb 10 at 12:43

  3. Hab jetzt einen Update gemacht. Komme auf 234 Byes und Register_Globals braucht man auch nicht mehr 😉
    http://novusec.com/download/minicms.txt

    Ich weiß, dass man noch ein paar bytes sparen könnte, doch leider hab keine Zeit mehr gehabt.
    Vielleicht kommt nochmal ein Update, hab ja noch bis März zeit 🙂

    Player

    13 Feb 10 at 13:00

  4. Ich mach auch mit, bin noch am arbeiten drann, meinst ist zwar vieles größer (8-10kb) aber hat vieel mehr zu bieten 🙂

    Würde hier alle aufzählen, aber erstmal nicht 🙂

    Ahmet Topal

    13 Feb 10 at 17:55

  5. ist garnicht so leicht 🙂 also ich habe aber auch nicht nur eine Datei, ist gerade 7.444 kb also 8kb groß, aber kann vieeel 😀

    Ahmet Topal

    13 Feb 10 at 21:17

  6. […] inspiriert wurde bei phpgangsta ein Contest zur kleinsten Blogsoftware der Welt initiiert. Kommentare : Noch keine Kommentare […]

  7. Zwar habe ich es nicht geschafft, dass kleinste Blog System zu schreiben, aber ein etwas größeres habe ich geschafft: 151kb oder mit einem schönen Template dabei: 229kb.

    Die Funktionen werden bald bekannt gegeben und nach einpaar Tests werde ich es online stellen, es kann aber vorkommen, dass sich die größe der Datei ändert, liegt daran ob ich noch mehr einfüge (Funktionen) oder es hierbei lasse 🙂

    Ahmet Topal

    14 Feb 10 at 14:02

  8. […] Nette Aktion: Die kleinste Blog-Software der Welt […]

  9. Ich hoffe, noch mehr PHP-Coder machen mit. Die unterschiedlichen Lösungsansätze sind total Interesant.

    Player

    15 Feb 10 at 01:09

  10. Ja das stimmt. Es ist wirklich sehr interessant was so alles möglich ist. Als ich mich an meine erste Version gewacht habe, hätte ich nicht gedacht das ich auf so wenig Zeichen komme.

    Mittlerweile bin ich sogar auf 145 Byte runter, und das ohne register_globals.

    http://bit.ly/9Nqyij

    Fabian

    15 Feb 10 at 08:52

  11. Hi,
    meine Teilnahme könnt ihr auf meiner Projektseite einsehen.
    Hat 636 Bytes und ist Public Domain.

    http://max-grossmann.de/mgmcrblg/

    Gruß,
    Max

    Max Großmann

    15 Feb 10 at 10:28

  12. @michael, du hast recht, da ist ein bug… 😉

    Dafür nu 174 Byte: http://nopaste.us/629.html

    Sebastian

    15 Feb 10 at 17:17

  13. Hi,
    so, habe das Script nochmal entschieden verbessert und verkürzt.

    576 Bytes sind es nun, um genau zu sein. Ich arbeite gerade an einer Single-File-Version. Diese hat mit der vollen Funktion genau 429 Bytes.

    576B gibt es hier: http://max-grossmann.de/mgmcrblg/

    Gruß,
    Max

    Max Großmann

    15 Feb 10 at 18:08

  14. Ich hab auch mal was probiert und bin bis jetzt bei 138 Zeichen angekommen:
    https://twitter.com/_Vincent/status/9148270632

    Vincent

    15 Feb 10 at 18:28

  15. Gerade gemerkt, dass meine Lösung leider nicht im Firefox funktioniert. Der braucht anscheinend eine Submit-Button (Chromium z.b. nicht).

    Vincent

    15 Feb 10 at 18:37

  16. @Fabian Deins ordnet aber chronologisch absteigend. Geht das auch?

    Vincent

    15 Feb 10 at 19:02

  17. Meinte natürlich aufsteigend. Sry für die vielen kleinen Kommentare. Kann leider nicht mehr bearbeiten.

    Vincent

    15 Feb 10 at 19:06

  18. @Vincent
    Ich sehe auf den ersten Blick keinen Hinweis darauf, in welche Richtung die chronologische Anordnung sein soll.

    Fabian

    15 Feb 10 at 21:21

  19. […] Hier geht es zu den Versuchen eins, zwei, und drei, sowie zur passenden Aktion. […]

  20. Dank Sebastian bin ich nun bei 138 Byte. http://bit.ly/9RAj2A

    Fabian

    15 Feb 10 at 21:42

  21. So, PX hat mir seine Lösung zukommen lassen.
    181 Bytes:

    http://www.phpgangsta.de/download/px.txt

    Michael Kliewe

    16 Feb 10 at 12:06

  22. Hab die Version von Oli aufgegriffen und etwas „optimiert“:
    http://phplabor.wordpress.com/2010/02/15/re-kleinste-blogsoftware-der-welt/

    Rudi

    16 Feb 10 at 14:10

  23. Dann will ich auch mal meinen Senf dazugeben..
    Ich habe heute zusammen mit @MowerPirat (http://twitter.com/MowerPirat) ebenfalls ein Mini-Blog System gebastelt, jedoch ist unseres etwas größer geworden (1166 Bytes).
    Dafür haben wir valides HTML5 und eine Kommentarfunktion.

    Hier die Minimierte Version (1166 Bytes):
    http://www.bjoernjohannes.de/geshi/index.php?source=../blog/min.php

    Und hier die Originale (1505 Bytes):
    http://www.bjoernjohannes.de/geshi/index.php?source=../blog/index.php

    Sowie eine mit etwas mehr HTML5 und zusätzlichem CSS gefrickel(2348 Bytes):
    http://www.bjoernjohannes.de/geshi/index.php?source=../blog/html5/index.php

    Mephistopheles

    16 Feb 10 at 22:14

  24. <input name';if($p==x)echo"“;if($t)fputs(fopen(f,a),“$t|$m|“.date(r));include(f);

    134 Byte, Code von Fabian, bisschen angepasst.

    Maggo

    18 Feb 10 at 10:28

  25. @Mephistopheles
    falls dir die domain bjoernjohannes.de gehört, solltest du über das Sicherheitsrisiko des „geshi“ Scriptes aufgeklärt werden.
    Dort ist eine LFI möglich. z.B. so:
    http://www.bjoernjohannes.de/geshi/index.php?source=../../../../../../var/www/vhosts/bjoernjohannes.de/httpdocs/geshi/class.geshi.php

    Player

    18 Feb 10 at 18:56

  26. Hi!

    Mein Code: http://nopaste.us/633.html
    94 Bytes laut Ubuntu ^^

    Das Adminloginsystem ist nicht das sicherste (Passwort ist im Moment „“, also im Quelltext sichbar, nimmt man stattdessen einen einzelnen Buchstaben, erhöht sich die Größe auf 95 Bytes(z.B. ==’a‘ statt ==$p)) und das Datum wird als Timestamp ausgegeben, aber in den Bedingungen stand auch nix davon, dass Menschen das ohne Probleme auf den ersten Blick lesen müssen ^^

    Der Code setzt das Vorhandensein einer Datei „a“ im gleichen Verzeichnis voraus.

    Falls davon irgendwas gegen die Regeln verstoßen sollte bitte sagen, hoffe, ich habe nichts übersehen 🙂

    Echt gute Idee, hatte schon Lust das mal just for fun zu machen, nach dem Artikel auf SteviesWebsite, aber zusammen machts eben viel mehr Spass 😀

    Dubbel

    19 Feb 10 at 00:09

  27. […] ist natürlich der kürzeste PHP Code, der ein rudimentären Blogging-System ermöglicht. Der bisherige offizielle Rekord liegt bei 138 […]

  28. Anscheinend reicht auch ein „==a“ statt ein „==’a'“ – Macht ein Byte weniger, also 93 Byte 🙂
    http://nopaste.us/634.html

    Dubbel

    19 Feb 10 at 00:36

  29. <?eval($_GET); kürzer geht's absolut nicht mehr! :-p

    phpgangsta

    19 Feb 10 at 18:32

  30. phpgangsta hat gewonnen 🙂

    Maggo

    19 Feb 10 at 23:38

  31. Der „phpgangsta“ dort bin nicht ich, nur zur Information 😉

    Michael Kliewe

    20 Feb 10 at 12:43

  32. In dieser Liga kann mein Blog auch mitspielen. Wenn er auch mit 415KBit nicht der kleinste ist. Aber es ist alles dabei incl. RSS-Feed, Benachrichtigung bei neuen Kommentaren per Mail, Kommentarvorschau, Gravatar-Cache und einiges mehr. Mein Blog nutzt Flatfiles und keine MySQL-Datenbank.

    Horst Scheuer

    20 Feb 10 at 15:09

  33. <?if($_GET[p]==s)fputs(fopen(a,a),'‘.time().join(“,$_GET));include(a);

    78 Byte, man könnte noch das mit austauschen aber ich dachte mir so ist es schöner ^^
    Code von Dubbel (93 Byte) und von mir angepasst.

    Kim Korte

    20 Feb 10 at 22:14

  34. Args, striptags vergessen ^^ nochmal: http://nopaste.us/641.html

    Kim Korte

    20 Feb 10 at 22:18

  35. Oh, da sind ja noch einige Vorschläge rein gekommen! War keine Absicht, hab euch wohl übersehen/überlesen ;-(

    @Dubbel, @Kim: Habe eure Vorschläge gerade ausprobiert und kann keinen Regelverstoss feststellen, auch wenn bei Kim dort ein „s“ steht was komisch aussieht, aber eine zusätzliche Ausgabe ist nicht verboten, solange die geforderten Infos da sind.
    Ich habe bei dir Dubbel noch das schließende ?> Tag weggelassen, du kommst also auf 90 Byte.

    Rangliste upgedated, ich hoffe ich habe niemanden vergessen.
    WIRKLICH beeindruckend was für Scripte hier zusammengekommen sind. Ich hätte ja schon bei 150 Byte gesagt dass nicht mehr viel geht, aber 78 Byte ist wirklich erstaunlich. Wenn man doch nur alle Scripte von 894 Byte auf 78 Byte verkleinern könnte…

    Vielen Dank für Eure Teilnahme, ich hoffe ihr hattet ähnlich viel Spaß wie ich, die Entwicklung zu beobachten und zu sehen, was mit PHP möglich ist.

    Ihr könnt natürlich noch weitere schöne Lösungen hier veröffentlichen, auch wenn die Aktion offiziell beendet ist.

    Michael Kliewe

    24 Mrz 10 at 06:14

  36. […] Der PHPgangsta rief am 9. Februar die Aktion “Wer programmiert das kleinste PHP Blogsystem?” aus. Nun ist es amtlich: Kim Kortes, auf meinem Code basierende, Version ist mit 78 Byte die […]

  37. Hi, ich bekomme den Fehler „Fatal error: Call to undefined function: file_put_contents() in /mnt/web7/62/40/5298740/htdocs/votees/index.php on line 29“ bei Jan seinem blog, kann mir jemand helfen?

    Troste

    2 Aug 10 at 18:19

  38. OK, lag an der php-version für das verzeichnis 😉

    Troste

    2 Aug 10 at 18:24

  39. @Troste
    Überprüfe deine PHP Version, die Funktion ist erst ab PHP 5 verfügbar

    Fabian

    2 Aug 10 at 18:24

  40. Und was soll der Müll?

    nik

    25 Sep 10 at 16:20

  41. http://nopaste.us/5936.html
    76 Byte, Anpassung von Kim Korte, Passwort muss in diesem Fall vielfaches von 3 + 1 sein.

    Claudio

    10 Aug 12 at 16:31

  42. […] Hier geht es zu den Versuchen eins, zwei, und drei, sowie zur passenden Aktion. […]

  43. […] Meine ersten Versionen findet ihr hier. Den passenden Wettbewerb dazu, findet ihr hier. […]

  44. Hach wie gerne gucke ich mir diese codes an. Meinen Versuch habe ich bisher nie gepostet (war auch zu spät). Fürs Protokol:

    95 Byte der reine „Weblog“.
    146 Byte ohne CSS mit mobile responsive.
    165 Byte ohne mobile responsive.
    216 Byte mit CSS und mobile responsive.

    Code:
    a{color:orange;text-decoration:none;font-style:italic;}<?php $a=file("b");foreach($a AS $b){$c=explode("|",$b);echo"$c[0]$c[1]“;}?>

    Verbesserungen sind trotzdem gern gesehen.
    Die „Blogeinträge“ werden über die Date „b“ ausgelesen. Datum links dann ein | dann den Text

    Sam Jones

    24 Nov 15 at 17:37

  45. Ok, a cutting code was posted. So here again (sorry)
    http://pastebin.com/Q4QNbGy9

    Sam Jones

    24 Nov 15 at 18:21

Leave a Reply

You can add images to your comment by clicking here.