TranslationHelper für CakePHP
Jaja.. das gute Cake.. immer wieder lecker ;-)
Ich brauchte gerade ein Tool zur automatischen Übersetzung von Text. Ich dachte ein Helper is da sicherlich nicht schlecht. Also hier ist er.. TransHelper. Entscheidet anhand der vom Benutzer favorisierten Spracheinstellung welche vorhandene Übersetzung angezeigt werden soll. Ich empfehle allerdings eine Datenbank dranzuhängen um nicht in Arrays innerhalb des Views zu versinken.
Die Sache läuft so:
-
'de_de'=>'Titel',
-
'fr_fr'=>'Titre',
-
'it_it'=>'Titolo'))); ?>
Der Helper entscheidet selber was am besten ist. Gerade bei en_EN und en_US von Vorteil. Sollte nur die Sprache (en) überinstimmen wird das nächst beste geliefert. Wenn beides stimmt wird genau dessen Übersetzung zurückgegeben.
SmartyView für CakePHP
Bevor ich mit CakePHP anfing gehörte die Smarty Template Klasse von PHP.net zu meiner Standardausrüstung. Ich habe damit früher quasi meinen eigenes MVC gebastelt. Für mich war es damals ein riesiger Schritt nach vorne als ich Smarty zum erstene Mal in meine Programme gepackt habe. Nun haben wir bei CakePHP allerdings ein etwas "roheres Material".. die thtml-Dateien. Okay.. man hört oft: "Warum eine Templateengine mit eigener Sprache? PHP ist ja quasi auch eine Templatesprache.. ". Da stimme ich auch zu, aber man macht sich damit nur das Leben schwer. Jeder der sich schonmal durch einen Wald von php-tags gemixt mit HTML schlagen durfte wird mir da zustimmen.. spätestens wenn man nach 4 Monaten oder mehr mal eben was ändern will, oder sogar ein komplettes Redesign ansteht..
Lange Rede.. hier mal ein Beispiel zum Vergleich. Was lässt sich besser lesen?
-
<td><?php echo $note['Note']['id'] ?></td>
-
<td><?php echo $note['Note']['title'] ?></td>
-
<td><?php echo $note['Note']['body'] ?></td>
-
<td><?php echo $note['Note']['created'] ?></td>
-
<td><?php echo $note['Note']['modified'] ?></td>
oder...
-
<td>{$note.Note.id}</td>
-
<td>{$note.Note.title}</td>
-
<td>{$note.Note.body}</td>
-
<td>{$note.Note.created}</td>
-
<td>{$note.Note.modified}</td>
Und das ist noch ein einfaches Beispiel. Oft hat man ja noch if(!empty) oder foreach etc.. und alles mit den php tags.. Ich bin zwar schon dazu übergegangen die Shortcuts von CakePHP zu benutzen aber ich kann dem <?php e($html->link()); ?> auch nicht wirklich was abgewinnen..
PHP ist eine sch**** Sprache ;-)
Ich hab grad einen lustigen Artikel gefunden. Es gibt ja seit kurzem die Google Code-Search und die ist verdammt gut. Zumindest konnt ich sogar mich dort wiederfinden und damit hätte ich eigentlich nicht gerechnet so kurz nach dem Launch.. Wie auch immer... Der Autor hatte anderes im Sinn als Code zu suchen. Viele Programmierer schreiben oft lustige Kommentare und manche - naja - fluchen halt auch mal gerne.
Die Statistik zählt wie oft das Wort "fuck" in allen bekannten Sprachen vorkommt. PHP liegt hier weit vorne .. Tja, es gibt mitunter eine Menge frustierter Kollegen ;-)
Der Autor hat das selbe nochmal mit Lizenzen gemacht und es stellte sich heraus das die LGPL wohl die Lizenz ist unter der am häufigsten geflucht wird. Auch wenn auf den ersten Blick eine recht wertlose Statistik, so finde ich die dargestellten Tendenzen recht interessant. Was man nun für sich daraus zieht bleibt jedem selbst überlassen.
Ich habe auch mal für deutsche Schimpfwörter gesucht, aber in unseren Gefilden beschränkt sich das Fluchen bzw. Vorkommen dieser Ausdrücke auf badword-listen.. Sauber Jungs ;)
PrettyBasic – Ein Tag mit CakePHP
Erstmal zu dem Namen: Pretty Basic ist enstanden als Cheesus und ich das Wort "Beta" im Netz nicht mehr lesen konnten.. Irgendwie kamen wir darauf das "pretty basic" wohl zutreffender wäre .. ach .. keine Ahnung.. Ich will nicht tiefer darauf eingehen zu welcher Stunde wir das lustig fanden.. ;-)
Cheesus fand das so gut das er einen Tag danach eine Domain mit dem Namen bestellte. Nicht unbedingt des Scherzes wegen, sondern eher weil der Name eigentlich an sich auch nicht schlecht war. Und ausserdem hatter er noch eine Inklusiv-Domain bei einem Hoster frei, also immer her damit :)
Er kam dann mit der Idee zu mir, einen simplen Blog für unsere Netzfunde im Bereich Beta-Webservices zu starten und ob ich Lust hätte mitzumachen. Ich hab natürlich sofort zugestimmt. Problem war jedoch ein geeignetes System zu finden. Minimale Features und auf eine Funktion ausgerichtet .. das posten von Links mit nem Screenshot.. Wir wollten erst WordPress nehmen aber für sowas ist das nicht wirklich geeignet. . viel zu gross..
Da ich nun mich in CakePHP gut eingelebt habe und im Moment bereits damit auch schon ein grosses Projekt schreibe, dachte ich mir das ich zum "warm werden" mal eben so einen Linkblog basteln könnte. Das hat auch alles wunderbar geklappt, so dass ich nur einen Tag gebraucht habe (inklusive Design) :-) Also ich glaube das sich dafür das Projekt schon sehen lassen kann.
Ziel:
Eine Seite wo Links geposted werden, einfache Administration, Blog-ähnlicher Aufbau, mit Screenshots
Eingebaute Features:
- LoginArea und simples Interface zum schreiben.
- Admin: Liste aller Einträge mit je folgenden Optionen: bearbeiten, de/aktivieren, löschen.
- RSS-Feed mit jeweils den 10 neusten Einträgen
- Bewertungsfunktion mit zwei Möglichkeiten: Gut/Schlecht
- Screenshotupload mit automatischem Resize.
Schon einiges für ein paar Stunden programmieren. Es kommen noch ein paar Features hinzu, aber der erste Milestone ist von mir absolviert worden und jetzt wende ich mich wieder anderen Dingen zu. ^.^
Viel Spass und happy browsing :)
Ich hab einen neuen Server :)
Tja Ja.. wurd mal Zeit.. wie heisst es denn so schön: "Root tut gut!". Ich bin seit heute stolzer Besitzer eines Debian Servers von Hetzner. Ich musste zwar 5 Tage (inklusive Wochenende) darauf warten, aber nun wo ich ihn endlich habe freu ich mich unheimlich. Hier mal ein paar Eck-Daten:
- AMD Athlon 64 3700+
- 1 GB DDR400 RAM
- 2 x 160 GB SATA
- Debian 3.1 64 Bit
Das beste daran: Traffic ist inklusive :)
Ich hab als erste Amtshandlung PHP5 und MySQL5 installiert und direkt danach SubVersion. Ich war es einfach leid ewig die ganzen kleinen Accounts zu pflegen und auch noch zu hoffen das XY installiert ist. Nun hab ich wieder volle Kontrolle (hatte vor einem Jahr zwei Server und im Moment noch einen ja-ich-gebs-zu-Windows Server).
Das SubVersion ist besonders hilfreich, weil ich es sich direkt in meine PHP IDE einbinden lässt. Das heisst ich kann vom Server in mein Projekt ausschecken, eine Änderung machen, Kommentieren und sofort wieder an den Server schicken.
Darüberhinaus habe ich mir Hooks so konfiguriert, dass bei Änderung im SVN automatisch ein Abbild an ein, vom Web erreichbares, Verzeichnis geschoben wird. Somit kann ich quasi live an der Seite (bzw. an der dev.domain.de Testkopie) arbeiten und habe automatische Versionkontrolle dabei :) Ich hab ja vorher immer auf CVS geschworen, aber SVN überwiegt mit Vorteilen welche man hier nachlesen kann.
Ich werd jetzt mal weiter konfigurieren. Ein root braucht Liebe :-)
BehaviourJS Helper für CakePHP
Seit drei Tagen beschäftige ich mich mit dem CakePHP Framework und kann es kaum erwarten damit das nächste Projekt zu beginnen. Nun damit ich auch zufrieden bin und mich heimisch fühle suche ich mir derzeit ein gutes Set an Helpern, Components und Scripts damit ich auch gleich loslegen kann wenn ich möchte.
Der AjaxHelper und JavascriptHelper ist zwar gut, aber leider produzieren diese Inline-Javascript was natürlich nicht so schön ist. Aber so wie ich im IRC Channel mitbekommen habe wird auch nach Verstärkung in diesem und anderen Sektoren gesucht.
Ich benutze derzeit in all meinen Projekten das Behaviour Javascript von Ben Nolan. Damit kann man über CSS Selektoren jedem beliebigem HTML Element ein Script anhängen. Das hat den Vorteil das man Javascript komplett auslagern kann und der Quelltext viel sauberer ist. Auch in der HTML Produktion selbst hat man viel mehr flexiibilität. Wenn man sich ein Set an Behaviour Regeln angelegt hat kann man jederzeit darauf zurückgreifen. Konventionen und dynamik ist die halbe Miete.
Ich habe heute dne Helper fertiggestellt und bin hellauf begeistert, denn er ist mir wirklich gelungen. Hier mal ein Beispiel wie schnell man damit eine Formularvalidierung mit Ajax realisieren kann:
-
// Einfaches Registrierungsformular. Man beachte die "class"
-
<form action="" method="post" name="register" id="register">
-
-
Benutzername:
-
Passwort:
-
E-Mail:
-
-
Homepage (optional):
-
-
<div id="loading" style="display:none">
-
-
<?php $html->submit('registrieren'); ?>
-
-
<div id="message">Keine Fehler</div>
-
</form>
-
-
// Optionen für AJAX
-
'update' => 'message',
-
'url' => '/users/register_ajax',
-
'method' => 'post',
-
'with' => "Form.serialize('register')",
-
'loading' => "Element.show('loading')",
-
'complete' => "Element.hide('loading');"
-
);
-
-
// und jetzt mein Helper
-
$behaviour->addAjaxRule('#login', 'onsubmit', $options);
Ich erstelle eine Ajax Regel (das heisst prototypes Ajax.updater wird verwendet).
- Parameter 1: Alle Input-Elemente mit der Klasse "required"...
- Parameter 2: ... sollen bei "onsubmit"..
- Parameter 3: .. per Ajax die Felder an users/register_ajax schicken und das Resultat in das DIV 'message' schreiben.
Mehr dazu wird auf meiner offiziellen Seite für diesen Helper erklärt
TaskFreak – Freelancers Freund und Helfer
Okay, Freelancer bin ich nicht mehr, aber dennoch brauch ich sowas...
TaskFreak ist eine sehr schicke Todo Liste, geschrieben in PHP und mit AJAX gewürzt. Mit ihr kann man ganz leicht und übersichtlich Projekte pflegen und planen. Es ist nur indirekt eine Groupware, aber wie auf der Seite zu lesen ist hat der Entwickler pläne in diese Richtung (Filesharing soll kommen und kürzlich wurde erst eine Kommentarfunktion eingebaut). Mit TaskFreak bekommt man eine sehr übersichtlichen, auf das wesentliche reduzierten, Aufgabenplaner mit Mehrbenutzerfunktion (Eine Singleuser-Version wird auch angeboten).
In nur 5 Minuten lässt sich das Programm auf jedem beliebigen Server installieren. Man kann also sofort loslegen Projekte anzulegen und Aufgaben einzuteilen. Es gibt mehrere Benutzergruppen und man kann etliche Detaileinstellungen in der gut dokumentierten Konfigurationsdatei ändern. Das Interface ist desweiteren mehrsprachig ausgelegt. Allerdings muss man sich die deutsche Übersetzung zur Zeit noch aus dem Forum herunterladen, was aber auch nicht viel Zeit beansprucht. Was mir besonders gefällt ist, dass die Kategorien nicht angelegt werden müssen. Man kann in der Sprachdatei einfach irgendwas reinschreiben und sich somit in nur wenigen Minuten häuslich einrichten. Ich habe zum Beispiel "Meeting" und "Dokumente" mit "Features" und "Bugs" ersetzt.
Das Interface ist chique, sehr schlank und einfach zu bedienen. Wer also mit einem Kollegen ein Projekt plant und man etwas sucht um online zusammenzusarbeiten ist man bei mittelgrossen Projekten mit TaskFreak bestens bedient. Im übrigen gibt es auch einen RSS Feed zu jedem Aufgabenzetteln, womit man auch mit entsprechender Reader-Software das Geschehen mitverfolgen kann.
Daumen hoch. Ein kostenloses Top-Produkt. So muss das sein!
www.taskfreak.com
PHP6 und die Gross- und Kleinschreibung
Ich komme gerade von der Arbeit und hab mich mal ein wenig in das Thema PHP6 eingelesen. Was mich aber jetzt gerade zum schmunzeln brachte war ein Artikel darüber, ob die Gross- und Kleinschreibung bei Variablen und Funktionen beachtet werden sollte. Ich finde das ist ein interessantes Thema und bietet mit Sicherheit ebensoviele Stunden Diskussionsstoff wie die Frage ob der Internet Explorer nun wirklich böse ist, oder eben nicht.
Also ich muss sagen das mir das absolut egal wäre wenn PHP6 nun die Schreibweise berücksichtigt. Ganz einfach deshalb, weil ich eine Funktion niemals anders schreiben würde als wie ich sie selber deklariert habe. Ich bin CamelCase Fan und steh auch auf "one-true-brace" wegen der Lesbarkeit, aber es ist noch nie vorgekommen das ich die Funktion "getAllFiles" einmal als "getallfiles" aufgerufen habe.
Für Leute die das tun gibt es zwei Möglichkeiten:
- Besorgt euch einen ordentlichen Editor der euch die Funktionen auflistet (so dass ihr nicht vergesst wie ihr sie deklariert habt)
- Hofft das die Schreibweise in PHP6 zählt, einen Parser Fehler ausgibt und lernt daraus.
Ich sehe es als Formfehler an wenn man das selbe meint, aBer eS AnDers SchReiBt...

