sunrise, sunset, sunrise, sunset, sunrise, sunset

Ist doch schön wenn einen die Lieblings Programmiersprache nach all den Jahren noch überraschen kann.

…nein, die Rede ist nicht von JS.

Dass PHP Sonnenauf- bzw. untergangszeiten ausgeben kann wusste ich bisher nicht.

date_sunrise und date_sunset heissen die beiden Funktionen.


/* calculate the sunset time for Lisbon, Portugal
Latitude: 38.4 North
Longitude: 9 West
Zenith ~= 90
offset: +1 GMT
*/

echo date("D M d Y"). ', sunset time : ' .date_sunset(time(), SUNFUNCS_RET_STRING, 38.4, -9, 90, 1);

coole Sache, wie ich finde. Continue reading “sunrise, sunset, sunrise, sunset, sunrise, sunset”

A propos Tags – Symfony 1.2

Ich schlage mich im Moment mit Tags & Behaviors herum. Eigentlich soll das BETA Plugin sfPropelActAsTaggableBehaviorPlugin auch unter symfony 1.2 laufen:

symfony propel-build-all
>> propel    generating form classes
Cannot fetch TableMap for undefined table: sf_tag.  Make sure you have the static MapBuilder registration code after your peer stub class definition.

Das Problem ist in den Foren bekannt.

– Des Rätsels Lösung nach 3 Std. Arbeit: Ein Klassenname aus meinem Projekt glich einer Klassenbezeichnung aus dem Plugin.

Doctrine – Accessoren & Mutatoren

Also erstens, damit man die Doku versteht: Mutatoren sind natürlich “Setter” (setFirstname(string name)),  Accessoren “Getter” (getFirstname()). Doctrine ermöglicht es auf vielfältige Weise, Attribute eines OR-Objekts programmatisch zu erfragen bzw. zu verändern. Da jede Instanz von Doctrine_Record letztlich die abstrakte Elternklasse Doctrine_Access implementiert, wird der Zugriff und alle Änderungen durch die (magischen) PHP-Methoden __get(), __set() und __call() koordiniert. Zusätzlich bietet Doctrine eine Konfiguration, die es ermöglicht, jede Änderung an einem Objekt einem optionalen, zentralen Methodenaufruf zuzuleiten, der dann als eine Art Interzeptor fungiert.

Continue reading “Doctrine – Accessoren & Mutatoren”

Google’s closure Tools jetzt opensource

Google wirft seine Closure Tools in den open source Topf.

Das ist einmal die Closure Library, ein JS Framework. Wenn ich das auf den ersten Blick richtig erkannt habe, geht das in eine ähnliche Richtung wie zb. jQuery UI.

Der Closure Compiler ist ein Javascript Optimizer der Code viel viel viel schneller machen soll.
Um den dann auch weiterhin debuggen zu können gibt es den Closure Inspector in Form einer Firebug Extension direkt dazu. Continue reading “Google’s closure Tools jetzt opensource”

The item has not been saved due to some errors.

Falls symfony und der Admin Generator einem diese Fehlermeldung anzeigt:

“The item has not been saved due to some errors.”

und sonst weiter schweigt und man schon den halben Core debugt hat und auch sonst der Auffassung ist man hat alles richtig gemacht .

Dann nicht durchdrehen, sondern cool bleiben und mal checken ob man nicht zufällig ein Field auf required gesetzt hat, aber es durch die generator.yml nicht anzeigt!

Gosh! Zeit für Feierabend!

Javascript Code Quality Checker

JSLint ist ein Tool zur statischen Codeanalyse wie bspw. Checkstyle, den einem die Javaprofs gerne mal im ersten Semester OOP aufzwingen. JSLint prüft, wie der Name schon sagt – Javascript-Code. Aber Vorsicht:

JSLint will hurt your feelings!

Kleine Randnotiz: Der hier muss natürlich wieder rumstänkern, aber das gehört wohl zu jedem guten Nerd-Blogger, der etwas auf sich hält ;).

Diese Prüfwerkzeuge, die es mittlerweile für so gut wie jede neuere (nicht älter als <>20 Jahre) Programmiersprache gibt, stellen natürlich nur ein Mittel von vielen zur Qualitätssicherung in der Softwareentwicklung, außerdem ist blindes Vertrauen natürlich Fehl am Platze.

symfony 1.2. Admin Generator mit Datepicker

Eigentlich hatte ich gedacht, dass das irgendwie einfacher gehen würde, aber hat mich dann doch einiges an Recherche gekostet.

Nachdem ich irgendwann mal das “My First Project” durchgespielt hatte, war ich der Auffasung, dass der Datepicker immer benutzt wird beim Admin Generator. Doch nachdem ich dann mal eine andere Anleitung benutzt hatte mußte ich feststellen: Das ist nicht immer so!

Den Unterschied macht, wie man den Admin Generator aufruft:

php symfony propel:init-admin backend post BlogPost

ist symfony 1.0 und macht den DatePicker

php symfony propel:generate-admin backend BlogComment --module=comment

ist symfony 1.2 und generiert stattdessen ein häßliches pulldown.

Um nun für 1.2. doch einen DatePicker zu bekommen nützt es auch nix irgendwas in der generator.yml anzugeben. Das wird alles ignoriert.

Continue reading “symfony 1.2. Admin Generator mit Datepicker”