Debug Informationen in CakePHP

Debugging von Anwendungen, die auf PHP basieren, ist zwar mit Tools wie Zend / Eclipse leichter geworden als noch vor einigen Jahren, aber manchmal bedarf es auch nur einer einfachen Anzeige von Header-, Session- oder anderen Requestdaten während der Laufzeit im Frontend.

Bei der Entwicklung von CakePHP Anwendungen können von Haus aus Informationen z.B. zur Datenbankabfrage mithilfe der Konfigurationsvariable debug und des Befehls

[php]
Configure::write("debug", 1);
[/php]

ausgegeben werden.

Es gibt insgesamt 4 Debug Level, die hier im Kontext einer älteren CakePHP Version (dort wird die Konstante DEBUG genutzt) folgendermaßen bezeichnet werden:

There are 4 levels of debug: 0-production, 1- development, 2- full debug with sql and 3- full debug with sql and dump of the current object. Specifying this setting to a non-zero value will force Cake to print out the results of pr( ) and debug( ) function calls, and stop flash messages from forwarding automatically. In production, the „flash messages“ redirect after a time interval. With the other debug levels you get to click the „flash message“ to continue. For example, if you want to set the debug level to „full debug with sql“, the line should look like this: define(‚DEBUG‘, 2);

Da die Debug Informationen von Cake immer am unteren Seitenende gerendert und – sobald man vom CakePHP Standardlayout abweicht – auch äußerst hässlich werden, gibt es bei Snook.ca die folgenden CSS Klassendefinitionen, um diese Infos generell schicker zu gestalten:
[css]
.cake-sql-log {
position:fixed;
top:99%;
z-index:10;
width:100%;
background-color:#000;
color:#FFF;
border-collapse:collapse;
}

.cake-sql-log caption {
background-color:#900;
color:#FFF;
}

.cake-sql-log:hover {
top:auto;
bottom:0;
}

.cake-sql-log td {
padding:3px;
border:1px solid #999;
background-color:#EEE;
color:#000;
}
[/css]

Wer jetzt noch weitere Informationen braucht (wie oben bereits erwähnt u.a. zu Sessiondaten, Log-Aktivitäten, Timings etc.) der ist mit der CakePHP DebugKit Toolbar von Mark Story gut bedient.

Die Toolbar „versteckt“ sich geradezu absolut positioniert in der rechten oberen Ecke der Webseite und öffnet sich blei Klick auf ein kleines Icon.

Was sie alles bietet, zeigt sich in den folgenden Screenshots:

DebugKit Toolbar in CakePHP
DebugKit Toolbar  in CakePHP - Timings der Prozesse
DebugKit Toolbar - Sessioninhalte, schön ausklappbar

Ich binde die Toolbar dynamisch je nach Umgebung auf folgende Art und Weise im app_controller ein:
[php]
public function __construct(){
parent::__construct();
if(DEVELOPMENT_ENVIRONMENT){
$this->components[] = ‚DebugKit.Toolbar‘;
Configure::write(‚debug‘, 2);
} else {
Configure::write(‚debug‘, 0);
}
}
[/php]

Hier prüfe ich auf die Konstante DEVELOPMENT_ENVIRONMENT, die ich, wie alle anderen Variablen, die global für die App zur Verfügung stehen müssen, in der bootstrap.php definiere. Solche Variablen könnten eben serverseitig zur Auswahl der entsprechenden Pfade (z.B. für Logs oder temporäre Uploads) oder auch für die Auswahl der entsprechenden Datenbankverbindungen herangezogen werden.

CakePHP: Auf Mac OS im Terminal bake ausführen

CakePHP
Wer auf Mac OS versucht, im Terminal das „Bake Script“ von CakePHP auszuführen, wird wahrscheinlich auf die Problematik stoßen, dass die mitgelieferte PHP Version von Mac OS nicht korrekt das Script ausführt.

Hier gibt es – wie ich gelesen habe – hundert Ansätze, das Problem zu umschiffen, der leichteste und praktikabelste ist in meinem Setting (mit MAMP auf Mac OS) folgender, direkter Aufruf einer anderen PHP Version zum Ausführen des PHP Scripts.

Der Aufruf erfolgt in dem Projekt- Konsolenordner (z.B. in meinem Fall /Users/lrheingans/Documents/Workspace/Project_X/cake/console/)

[source]
/Applications/MAMP/bin/php5/bin/php cake.php bake
[/source]

Von hier läuft dann alles wie gewohnt.

Um das Bake Script unter Eclipse ausführen zu können, gibt es auch in der Bakery einige Tutorials (mir war der mini Aufwand allerdings nicht wert, ich mag meine Konsole)

Microsofts neue Suchmaschine: BING

binglogoMicrosoft hat letzte Woche relativ überraschend seine neue Suchmaschine Bing vorgestellt, wobei es sich laut Microsoft eher um eine „Decision Engine“ als um eine Suchmaschine handeln soll.

Neben lautem Gelächter wegen direkt auf Bing ablaufender Pornoinhalte und einer amüsanten Erklärung des Namens (“But It’s Not Google”) macht die Webseite allerdings einen überaschend guten Eindruck:

Neben den relativ treffenden Suchergebnissen (unter anderem auch ganz andere Ergebnisse, als Google zu finden sind) erscheinen kurze Zusammenfassungen (übrigens bei mir nur im Firefox, nicht im Safari), die eine kleine Preview bieten:
Suchergebnisse für Lasse Rheingans

Bei Bing kann wie üblich neben Texten auch nach Bildern, Videos, News oder Shopping-Ergebnissen gesucht werden, ausserdem bietet die Suchzeile eine Auto-Vervollständigung (bei Google heisst das Google Suggest) an.

In den Ergebnissen bietet Bing, wie auch die Konkurrenz, direkte Verweise auf Teilbereiche der Webseite an, so am Beispiel „Google“ auch direkt ein Formular für eine Google Suche:
bing searches for google
Neben der Decision Search Engine bietet Bing, ähnlich wie Google, einen Maps Dienst an. Nach kurzem Test macht dieser einen ordentlichen Eindruck, wobei das Kartenmaterial bei großen Zoomstufen von Google Maps etwas besser anmutet und eine bessere Auflösung bietet.

Techcrunch hat einen schnellen a-b Vergleich von Google und Bing durchgeführt, und kommt zu dem allgemeingültigen Ergebnis

Google and Bing at the very least feel very different, and while you can argue about the quality of one engine versus the other back and forth as much as you want, it’s painfully clear both need improvement.

Mein persönliches Fazit:
Ja, Bing ist besser als erwartet und scheint gut zu funktionieren. Für Microsoft ein mittlerer Erfolg, nach den miesen Ergebnissen von MSN / LiveSearch.

Allerdings ist für Microsoft hiermit allein noch nichts gewonnen: User, die jetzt mit Google suchen, wissen, wie und welche Suchtermini eingegeben werden müssen um Lösungen oder Webseiten auf ihre Fragen zu finden. Ich fühle mich noch nicht in der Laune, diesen „Kennenlern“-Aufwand bei Bing betreiben zu wollen, und weiss auch nicht, wieso das andere tun sollten…. oder? (Michael Arrington sieht es übrigens ähnlich)

Bing kann übrigens (genau wie Google) auch angerufen werden oder einfach leicht mit diesem Bing Firefox Add-on als Search Engine in den Firefox Browser integriert werden.

Page Speed Firefox Extension

Google hat gestern ein bisher bei Google intern genutztes Tool als Firefox Extension veröffentlicht:

Page Speed

Page Speed integriert sich in Firebug und verhält sich ähnlich wie das von Yahoo! herausgebrachte YSLOW Plugin, mit einigen weiteren Extrafeatures die eine Seitenoptimierung erfolgreicher machen können:

So bietet Page Speed eine ausgefeilte CSS Analyse an, die Hinweise auf ungenutztes (und ineffizientes) CSS Styling ausgibt:

css_summary

In der Performance Summary bietet sich ein von YSlow bekanntes Bild, wenn auch mit einigen weiteren Hinweisen:

performance_summary

Eine besonders interessante Funktion ist der sogenannte Acticvity Recorder, bei dem sämtliche Aktivität von der Page Speed Extension anhand einer mitlaufenden Zeitleiste dargestellt wird:

activity_recording

Ich werde mir unsere Webseiten in den nächsten Tagen einmal genauer mit Page Speed ansehen, und schauen, wie es sich gegenüber YSlow verhält.

Probleme mit FCKEditor und PHPList

Die OpenSource Software PHPList eignet sich relativ gut zum schnellen Aussenden von kleinen Newslettern auf Servern mit PHP und MySQL.

Grundsätzlich geht die Installation und Einrichtung relativ zügig vonstatten, allerdings gibt es bei einzelnen Stellen diverse Konfigurationsschwierigkeiten – so sollte u.a. auf die Installations-Dokumentation gehört werden und die Installation von PHPList tatsächlich in das Verzeichnis www.deinedomain.de/lists/ gelegt werden, um Verlinkungsprobleme im Administrationsbereich zu umgehen.

Bei all denjenigen, bei denen unter dem Punk „Nachricht erstellen“ (in der englischen Variante unter „send a message“) kein Rich Text Editor (FCKEditor kommt hier zum Einsatz) erscheint, können die folgenden Schritte eine Lösung sein:

1. Im Unterverzeichnis „/admin“ in der Datei fckphplist.php die Zeile 589 mit dieser austauschen
[php]// FCKConfig.ProtectedSource.Add( /<s>/g ) ; // ASP style server side code[/php]

Evtl. erlaubt die installierte PHP Version „short ASP Tags“, und somit werden hier Fehler geworfen.

2. Im Unterverzeichnis „/admin/FCKEditor/editor“ die Datei fckeditor.html bearbeiten, und den Befehl zum Laden des Editor auswechseln, indem Zeile 120 auskommentiert und 119 wieder „einkommentiert“ wird:
[php]
// Base configuration file.
LoadScript( ‚../fckconfig.js‘ ) ;
// LoadScript( ‚../../?page=fckphplist&action=js4‘ ) ;
[/php]

Fehlermeldungen, die (schön zu Sehen unter Einsatz von Firebug) hervorgerufen werden, lauten zum Beispiel:

FCKConfig.CustomConfigurationsPath is undefined
A.PluginsPath is undefined
FCKConfig.ContextMenu is undefined
C is undefined

PHPList FCKEditor Fehler

via http://forums.phplist.com

Live Streaming Anbieter

Eine günstige Variante, qualitativ (vermeintlich?) hochwertige Live Stream Videos anbieten zu können, scheint durch den neuen Anbieter StreamAPI am Markt angekommen zu sein:

StreamAPI

Beispielrechnung:
1 Stunde Live Stream von z.B. einer Pressekonferenz, eines Workshops oder einer Kundenpräsentation, wie wir es hin und wieder für verschiedene Kunden und Produkte brauchen) mit 1.500 gleichzeitigen Viewers in Full HD Auflösung kostet weniger als unschlagbare 300 Dollar.

Berechnet werden kann der Preis hier.

Wir testen den Dienst direkt beim nächsten Projekt.

via Techcrunch.

Exotische Zimmerpflanzen und Links dorthin

Das Logo der Palmenoase

Ich frage mich gerade, ob die Praxis, bestimmte URLs, die nah an bestimmten Suchanfragen im Palmenbereich liegen, direkt auf bestimmte Unterseiten eines Onlineshops zu verlinken, Sinn macht.

Die Seiten liegen auf dem Server meiner Freunde der PALMENoase, die winterharte Palmen und exotische Zimmerpflanzen verkaufen, und lauten z.B. Phoenix Canariensis, Butia Capitata, Trachycarpus Fortunei, Trachycarpus Wagnerianus, Phoenix Canariensis oder Jubaea Chilensis.

Was sagt Ihr dazu, straft Google das ab oder wie sind Eure Erfahrungen?

Amazon bietet im PartnerNet jetzt auch MP3 Widgets an

Für den kleinen oder großen Blogger gibt es ja geradezu unzählige Möglichkeiten, mit seinem Geschwafel und hilfreichen Tutorials etc. den ein oder anderen Groschen dazu zu verdienen.

Neu hinzugekommen im Amazon PartnerNet, das ursprünglich hauptsächlich die Möglichkeit bot, Links auf Amazon Artikel (für deren Verkauf dann Provision an den Blogger zurückfloss), ist das MP3 Widget.

Da ich großer Musikfan bin und gerne meine Lieblingstitel und -bands unter die Leute bringe, werde ich das Widget hiermit gleich einmal testen.

Mein Auswahlalbum dazu und passend zu dem großartigen Frühlingsanfang:
The Cat Empire. Two Shoes

(Hier sollte das Amazon MP3 Widget stehen. Scheint ja 1a zu klappen – NOT)