CakePHP Tutorials von IBM updated

Die wahrscheinlich bei allen CakePHP Entwickler bekannten IBM Tutorials (zuerst 2006 erschienen) wurden vor 2 Wochen auf den neuesten Stand gebracht. Unter Cook up Web sites fast with CakePHP, Part 1: Getting started findet sich jetzt für CakePHP Neulinge ein umfassendes Tutorial das viele Features von CakePHP (u.a. Caching, Security, Ajax) relativ gut beleuchtet und sich als Einstieg hervorragend eignet.

via pseudocoder.com

Kostenfreies CakePHP Buch

Beim Pseudocoder gibt es für alle CakePHP Entwickler ein höchst interessantes kostenfreies CakePHP Buch im PDF Format.

For anyone who missed it, I released a free CakePHP book a month ago. Since then it’s been downloaded over 2500 times. I’ve also received some great feedback and have made a bunch of corrections to the code and grammar. The biggest change is that the table of contents is now links and will jump you right to the section. That’s reason enough alone to grab the updated version. The new permanent home page for the book is here.

43 iPhone Development Resources

Arne hat auf Twitter einen interessanten Link geposted, der (in manchen Teilen mit viel Gelaber und einigen „schwachen“ Links) 43 iPhone Development Resources aufzeigt und kurz beschreibt.

Für den ein oder anderen Einsteiger und Fortgeschrittenen iPhone Entwickler sind hier mit Sicherheit einige Perlen dabei.

Programming for the iPhone is still pretty new. It might be a bit tougher to find iPhone developer resources, but we found a bunch that will get you through building any iPhone app you might be starting on. Check out our list of our favorite developer books, blogs, podcasts, screencasts, open-source libraries, communities, forums, conferences, training, and more!

Milliarden von SQL Queries am Tag

Für alle Interessierten und Suchenden gibt es hier eine kleine Präsentation, in dem Dathan Vance Pattishall, dem „database guy“ von meinem Lieblingsfotodienst Flickr beschreibt, auf welche Art und Weise täglich „billions of queries“ abgehandelt werden.

DVPmysqlucFederation at Flickr: Doing Billions of Queries Per Day DVPmysqlucFederation at Flickr: Doing Billions of Queries Per Day dathan Federation at Flickr: Doing Billions of Queries Per Day

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.