Archiv für Februar 2010

Die kleinste Blog Software der Welt, 4. Versuch

Veröffentlicht am 15. Februar 2010 um 21:40 by Fabian Martin Permalink

Nach einem freundlichen Hinweis von Sebastian, bin ich nun bei 138 Byte. Vielen Dank.

<?extract($_GET);$n='><input name';if($p==a)echo"<form$n=t$n=z$n type=submit>";if($t)fputs(fopen(f,a),"<p>$t<p>$z<p>".date(c));include(f);

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

Die kleinste Blog Software der Welt, 3. Versuch

Veröffentlicht am 12. Februar 2010 um 22:28 by Fabian Martin Permalink

Und es ging doch noch etwas. Das Script ist mittlerweile nur noch 145 Byte groß.

<?extract($_GET);$c='<p>';$n='><input name';if($p==a)echo"<form$n=t$n=z$n type=submit>";if($t)fputs(fopen(f,a),"$c$t$c$z$c".date(c));include(f);

Den Wettbewerb findet ihr hier. Meine ersten Versuche findet ihr hier und hier.

Die kleinste Blog Software der Welt, 2. Versuch

Veröffentlicht am 12. Februar 2010 um 12:06 by Fabian Martin Permalink

Und es geht doch noch kleiner. Lässt man die Überprüfung des Passwortes beim Eintragen eines neues Eintrags weg, kann man noch einmal ein paar Byte sparen. Somit schrumpft das Script von 162 auf 148 Byte. Da geht noch was.

<?extract($_GET);$c='<p>';$n='><input name';if($p==a)echo"<form$n=t$n=z$n type=submit>";if($t)fwrite(fopen(f,a),$c.$t.$c.$z.$c.date(c));include(f);

Mit aktivierten register_globals kommt man sogar nur auf 133 Byte.

<?$c='<p>';$n='><input name';if($p==a)echo"<form$n=t$n=z$n type=submit>";if($t)fwrite(fopen(f,a),$c.$t.$c.$z.$c.date(c));include(f);

Meine ersten Versionen findet ihr hier. Den passenden Wettbewerb dazu, findet ihr hier.

Hinweis: Zum Anzeigen des Formulars wird das Passwort natürlich benötigt.

Die kleinste Blog Software der Welt

Veröffentlicht am 11. Februar 2010 um 22:49 by Fabian Martin Permalink

Der PHP Gangsta veranstaltet zur Zeit eine Aktion, in der er die kleinste Blog Software der Welt sucht. Da das natürlich ein Ansporn ist, habe ich mich mal daran gemacht und meine eigenen Versionen geschrieben.

Alle Versionen gehen davon aus, das die Datei ‘f’ existiert, ansonsten bekommt man eine Warnung. Das Passwort wird in allen Versionen per GET übermittelt.

Per POST ohne Fehler (error_reporting=E_ALL), 171 Byte

<?extract($_REQUEST);$c='<p>';$n='><input name';if(@$p==@a){echo"<form method=post$n=t$n=z$n type=submit>";if(@$t)fwrite(@fopen(f,a),$c.$t.$c.$z.$c.@date(c));}include(f);

Per POST, Notices sind in der php.ini deaktiviert, 166 Byte

<?extract($_REQUEST);$c='<p>';$n='><input name';if($p==a){echo"<form method=post$n=t$n=z$n type=submit>";if($t)fwrite(fopen(f,a),$c.$t.$c.$z.$c.date(c));}include(f);

Per GET ohne Fehler (error_reporting=E_ALL), 167 Byte

<?extract($_GET);$c='<p>';$n='><input name';if(@$p==@a){echo"<form$n=t$n=z$n=p value=a$n type=submit>";if(@$t)fwrite(@fopen(f,a),$c.$t.$c.$z.$c.@date(c));}include(f);

Per GET, Notices sind in der php.ini deaktiviert, 162 Byte

<?extract($_GET);$c='<p>';$n='><input name';if($p==a){echo"<form$n=t$n=z$n=p value=a$n type=submit>";if($t)fwrite(fopen(f,a),$c.$t.$c.$z.$c.date(c));}include(f);

Per GET, Notices sind in der php.ini deaktiviert, register_globals=on, 147 Byte

<?$c='<p>';$n='><input name';if($p==a){echo"<form$n=t$n=z$n=p value=a$n type=submit>";if($t)fwrite(fopen(f,a),$c.$t.$c.$z.$c.date(c));}include(f);

Meine kleinste Version ist aktuell 162 Byte (mit register_globals, 147 Byte). Mal sehen ob ich die Entwürfe in den nächsten Tagen noch etwas kleiner bekomme.

Getestet wurde mit einem Zend Server unter Windows 7. Als Browser dienten Firefox 3.5 und Google Chrome 4.

PHP: Getter und Setter mit PDT generieren

Veröffentlicht am 5. Februar 2010 um 12:40 by Fabian Martin Permalink

Eine Möglichkeit, automatisch Getter und Setter mit PDT zu generieren, habe ich noch nicht gefunden. Mit dem unten genannten Code, könnt Ihr das Erstellen von Gettern und Settern mit PDT aber beschleunigen.

Erstellt hierzu ein neues Code Template (Window -> Preferences -> PHP -> Editor -> Templates) und gebt ihm den Namen ‘get’. In das Feld Pattern, fügt ihr den unten gezeigten Code ein.

Um nun Getter und Setter zu generieren, müsst ihr nur noch ‘get’ in euren Editor tippen und die Tastenkombination STRG+Leertaste drücken. Der Code sollte erscheinen und der Cursor in der ersten Variable blinken. Mit Tab könnt ihr zwischen den Werten springen.

/**
* Legt ${field} fest
*
* @param ${type} ${dollar}${field}
* @return void
*/
public function set${funcName}(${dollar}${field})
{
	${dollar}this->${field} = ${dollar}${field};
}

/**
* Gibt ${field} zurück
*
* @return ${type}
*/
public function get${funcName}()
{
	return ${dollar}this->${field};
}

Das ganze geht natürlich auch mit statischen Werten:

/**
* Legt ${field} fest
*
* @param ${type} ${dollar}${field}
* @return void
*/
public static function set${funcName}(${dollar}${field})
{
	self::${dollar}${field} = ${dollar}${field};
}

/**
* Gibt ${field} zurück
*
* @return ${type}
*/
public static function get${funcName}()
{
	return self::${dollar}${field};
}