Kategorien
Agavi Debugging Frameworks Linux PHP Shell XML

Agavi Custom Logger implementieren

Um in Agavi custom logfiles zu erstellen, benötigt man einen eigens erstellten logger + appender in der app/config/logger.xml.

<!-- logs only custom messages in a custom log -->
<logger name="custom" class="AgaviLogger" level="'custom'">
    <appenders>
        <appender>CustomLogAppender</appender>
    </appenders>
</logger>

<appender name="CustomLogAppender" class="AgaviFileLoggerAppender" layout="DateTimeLayout">
    <ae:parameters>
        <ae:parameter name="file">%core.app_dir%/log/custom.log</ae:parameter>
    </ae:parameters>
</appender>

Dann kann man den Logger quasi überall wo der LoggerManager verfügbar ist benutzen.

$message = 'Custom logging message';
$this->getContext()->getLoggerManager()->log(new AgaviLoggerMessage($message, 'custom'), 'custom');

Und in der bash das logfile einsehen.

tail -f app/log/custom.log
Kategorien
Agavi Frameworks XML

Agavi routing specials

Um bestimmte Agavi output_types bei speziellen routings zu bedienen kann man die routing.xml wie folgt anpassen.

<!-- cut out leading slash -->
<route name="slasher" pattern="^/" stop="false" imply="true" cut="true" />

<!-- match ajax calls with special http header -->
<route pattern="XMLHttpRequest" source="_SERVER[HTTP_X_REQUESTED_WITH]" stop="false" output_type="ajax" />

<!-- match json calls with special http header -->
<route pattern="application/json" source="_SERVER[HTTP_ACCEPT]" stop="false" output_type="json" />

<!-- cut out special pointer -->
<route name="portal" pattern="^({portal:[a-zA-Z]{3}}/)?" stop="false" imply="true" cut="true">
    <callbacks>
        <callback class="RoutingCallback" />
    </callbacks>
</route>
Kategorien
Deployment Linux Server Shell SVN Versionierung

SVN WorkingCopy Version Format ändern

In verteilten Systemen kommt es des öfteren vor, das unterschiedliche SVN Versionen zum Einsatz kommen.

Wenn euer SVN diese Meldung ausgibt:

svn: This client is too old to work with working copy 'xyz'.  You need to get a newer Subversion client, or to downgrade this working copy. See http://subversion.tigris.org/faq.html#working-copy-format-change for details.

kann das Python Script change-svn-wc-format eine SVN WorkingCopy in ein bestimmtes anderes SVN Versionsformat wechseln.

Kategorien
Deployment Linux Server Shell

Ordner mit gzip packen und entpacken.

Da GZIP selbst keine ganzen Ordner packen kann, kann man TAR das gepackte Archiv erzeugen lassen.

user@server: tar cvzf ordner.tar.gz ordnername
user@server: tar zxvf ordner.tar.gz
Kategorien
CSS Layout & Styles

:nth-of-type Pseudo-Klasse macht Tabellen-Zeilen Highlighting einfach

Das abwechselnd farbliche Absetzen von Tabellenzeilen in HTML kann auch mittels einer CSS 3 Pseudo Klasse umgesetzt werden.

/* heighlight jeder 2ten zeile beginnend mit der ersten */
tr:nth-of-type(2n+1) { background-color:#f7f7f7; }

/* heighlight jeder 2ten zeile beginnend mit der zweiten */
tr:nth-of-type(2n) { background-color:#f7f7f7; }

Der InternetExplorer weigert sich leider bis dato diese CSS 3 Angaben zu interpretieren.

Mehr Informationen zu CSS 3 Selektoren liefert der W3C

Kategorien
Deployment Linux Server Shell

Shell Scripting Guide

Hier findet Ihr den Shell Scripting Guide:

freeos.com/guides/lsst/

Dann kann man beispielsweise so kleine Helferlein zum Löschen von Logs und Caches wie diesen hier basteln:

#!/bin/bash
cd `dirname $0` # go to scripts dir
cd .. # step ahead
arr[0]='Application1/app/cache/*'
arr[1]='Application1/var/cache/*'
arr[2]='Application2/application/cache/*'
arr[3]='Application2/application/logs/*'
arr[4]='Application2/pub/tmp/*'
arr[5]='Application3/application/cache/*'
arr[6]='Application3/application/logs/*'
arr[7]='Application3/pub/tmp/*'

i=0
while [ $i -lt ${#arr[@]} ]
do

rm -rf ${arr[$i]}
echo "${arr[$i]} deleted"

(( i=$i+1 ))
done
Kategorien
Frameworks PHP SOAP Zend

PDF Dokumente mit Zend LiveDocx

Ein sehr interessanter Ansatz zur Erzeugung von Dokumenten im Web wird bei phphatesme.com beschrieben. HTML-zu-PDF-Konvertierung und programmatischer Ansatz sind ja bekannt. Der neue Ansatz bedient sich einer SOAP Schnittstelle und Templates. Unter folgender URL gibts mehr dazu:

phphatesme.com – PDF Dokumente mit Zend LiveDocx

Kategorien
Debugging PHP

PHPBench – PHP auf dem Prüfstand

Hier der Link zu PHPBench. Benchmarks für PHP Funktionen.

phpbench.com

Kategorien
Debugging Linux PHP PHPUnit Server Shell XDebug

Debugging mit XDebug und KCachegrind

XDebug ist das sehr beliebte und allseits bewährte Tool, das nicht nur Stacktrace und var_dumps ausgeben kann, sondern ebenso für CodeCoverage, echtes Debuggen, Profiling und Testen mit PHPUnit gedacht ist.

XDebug kann Profiler Dateien erzeugen, die man mit KCacheGrind perfekt auswerten kann. So bleibt kein Flaschenhals in der Applikation unbemerkt.

xdebug.org
kcachegrind.sourceforge.net

Kategorien
PHP PHPUnit

PHPUnit Manual – Sebastian Bergmann

Hier der komplette PHPUnit Guide um entsprechende Tests zu seiner Applikation zu schreiben.

PHPUnit Manual