Home-Produkte-Testarea-Kontakt-Aktualisiert: 24-Apr-2015
< Voriger Tag

Freitag, 24. April 2015

Intern: Serverwechsel (Update 1)

Meine Homepage wechselt in den nächsten Tagen den Server.

Nachdem Wechsel kann es einige Stunden bis Tage dauern bis alle DNS-Server auf dem neuesten Stand sind und man beim Aufruf von www.sven-drieling.de auf dem neuen Server landet - dies betrifft auch die E-Mailadressen.

Update 1

Einrichtung des Servers ist abgeschlossen. Nun werden die DNS-Einträge auf den neuen Server gesetzt.

[Direktlink]

Dienstag, 21. Oktober 2014

PHP: Formatierung via __get()

In ydLinks benutze ich $link->§title, zur maskierten HTML-Ausgabe. Mit $link->title (Raw) und $link->§title (HTML-maskiert) gibt es aber nur zwei Varianten mehr bietet dieses Beispiel.

Das Prinzip ist wie in Link.php nur diesmal steht das '§' in der Mitte des Attributes und dahinter folgt das gewünschte Format.

__get_format.php:

$obj = new Model();
$obj->foo = 'aBcDeF " &';

echo 'raw         : ', $obj->foo, "\n";
echo 'uppercase   : ', $obj->foo§uppercase, "\n";
echo 'lowercase   : ', $obj->foo§lowercase, "\n";
echo 'specialchars: ', $obj->foo§specialchars, "\n";
echo 'noquotes    : ', $obj->foo§noquotes, "\n";

In __get($name) wird mit preg_match() der Name und das Format extrahiert und daraufhin via switch($format) die gewünschte Ausgabe zurückgegeben.

__get_format.php:

    public function __get($name) {
        // $obj->foo§uppercase
        if(preg_match('#^([^§]+)§([^§]+)$#', $name, $matches)) {
            $name   = $matches[1];
            $format = $matches[2];

            $value  = $this->_values[$name];


            switch($format) {
                case 'lowercase'   : return strtolower($value); break;
                case 'uppercase'   : return strtoupper($value); break;
                case 'specialchars': return htmlspecialchars($value, ENT_QUOTES   | ENT_HTML5, 'UTF-8'); break;
                case 'noquotes'    : return htmlspecialchars($value, ENT_NOQUOTES | ENT_HTML5, 'UTF-8'); break;

                default:
                    throw new Exception("Unknown format '{$format}'.");
                    break;
            }
        } else {
            return $this->_values[$name];
        }
    }

Callback

Mit einem Callback wie im __get_format_callback.php-Beispiel wird das Ganze noch flexibler.

$obj->addGetFormat('reverse', function($value) {return strrev($value);});

echo 'reverse     : ', $obj->foo§reverse, "\n";

Das $this->_formats-Array enthält formatName => Callback-Paare, wobei die Callbacks in diesem Fall anonyme Funktionen sind, die in __get($name) ausgewählt und ausgeführt werden.

public function __construct() {
    $this->addGetFormat('raw'         , function($value) {return $value;});
    $this->addGetFormat('lowercase'   , function($value) {return strtolower($value);});
    ...
}


public function addGetFormat($formatName, callable $callback) {
    $this->_formats[$formatName] = $callback;
}


public function __get($name) {
    // $obj->foo§uppercase
    if(preg_match('#^([^§]+)§([^§]+)$#', $name, $matches)) {
        $name   = $matches[1];
        $format = $matches[2];
    } else {
        $format = 'raw';
    }

    $value  = $this->_values[$name];


    return $this->_formats[$format]($value);
}

Beispiele: Revision 192

[Direktlink]

Freitag, 10. Oktober 2014

ydlinks: Templates als JSON speichern

Für die Eingabe der Bookmarks gibt es nun beliebig viele Templates, die aus einer Liste gewählt werden können.

Gespeichert werden sie als JSON, das macht es einfach verschiedene Templates in einer Datei zu speichern und auch Sonderzeichen wie der Zeilenumbruch werden automatisch von json_encode()/json_decode() verarbeitet.

Fehlende Tests zeitaufwendig

Die im ydLinks-Prototyp fehlende Tests waren in diesem Entwicklungsschritt sehr zeitaufwendig, da ich so ständig selbst die Eingaben, das Speichern und die Kontrolle der richtigen Anzeige wiederholen musste.

Download: Revision 188

svn checkout --revision 188 https://svn.sven-drieling.de/repos/trunk/yd/links/ yd-links-188

[Direktlink]

Freitag, 17. Januar 2014

das fernsehen

ist ein
disney channel

[Direktlink]

Montag, 06. Januar 2014

ydlinks: Atom-Feed für die Bookmarks

Die Bookmarks haben nun einen Atom-Feed.

Feed für Linkblog?

Nehme erst einmal http://www.sven-drieling.de/diary/atom.xml als Grundlage für den Atom-Feed der Bookmarks.

Hmm, aber für Links gibt es doch eine spezielle Variante... - später suchen.

Programmier... Läuft.

Ah, How to make a linkblog in Atom.

Anpassen...

http://www.sven-drieling.de/bookmarks/1 habe ich noch nicht implementiert und dieser Link ist im Gegensatz zum eigentlich verlinkten Inhalt nun sehr präsent... Also, erst mal wieder die vorige Version nehmen.

Fehler als HTML-Seite

Ähnliches Spiel bei den Fehlermeldungen wie "500 Internal Server Error".

Da habe ich zunächst die Ausgabe als Atom-Feed mit einem Eintrag, der die Fehlermeldung enthält ausprobiert aber diese wird in Opera, Firefox nicht sinnvoll angezeigt und im Feedreader macht es IMHO wenig Sinn, dass dann die Fehlermeldungen als Einträge gespeichert werden. Daher werden die Fehlermeldungen nun als HTML-Seite ausgeliefert. Macht sich auch gut im Feedreader.

Fazit

Bei Gelegenheit müsste ich mich mal wieder ausführlicher mit Atom- und RSS-Feeds beschäftigen.

Download: Revision 154

svn checkout --revision 154 https://svn.sven-drieling.de/repos/trunk/yd/links/ yd-links-154

[Direktlink]

Dienstag, 24. Dezember 2013

friede

auf
erden

[Direktlink]

Sonntag, 15. Dezember 2013

ydlinks: Bookmarks in die Datenbank

Die erste neue Komponente für meine Homepage ist ydlinks mit der Schritt für Schritt die Bookmarks in die Datenbank kommen.

Das Skript ist zunächst einmal in PHP ohne Framework geschrieben und dient so zusätzlich dazu darüber nachzudenken was ein Framework enthalten und wie es aufgebaut sein sollte. Weshalb diese 1. Version von ydlinks absichtlich chaotisch ist und verschiedene Ideenansätze enthält.

Statt einer REST-API probiere ich z.B. eine befehlsorientierte API aus, so entfällt bei den Formularen die Umleitung vom POST- zum GET-Request.

Download: Revision 147

svn checkout --revision 147 https://svn.sven-drieling.de/repos/trunk/yd/links/ yd-links-147

[Direktlink]

< Voriger Tag

  RSS V0.91

<April 2015  
  0102030405
06070809101112
13141516171819
20212223242526
27282930   

Home-Produkte-Testarea-Kontakt-Aktualisiert: 24-Apr-2015
(C) 2000-2015 by Sven Drieling