Archiv für die Kategorie ‘PHP’

Das böse e

Mittwoch, 02. September 2009

Gestern hat mich ein ganz besonderer Buchstabe in den Wahnsinn getrieben: Das ?! Nicht das jemand glaubt, e = ?. Denn wenn man genau hinsieht, dann ist

e ? ?

Es handelt sich nämlich hierbei um das sog. “estimated e” auf Verpackungen. Dieses ist ein Sonderzeichen, welches Windows, Mac und Linux eigentlich unbekannt ist und sich in Word und HTML aber herbei zaubern lässt. Des Rätsels Lösung lautet Unicode: Hier hat das Estimated Symbol die Position 8494 bzw. U+212e und dementsprechend die HTML-Entität ℮ bzw. ℮.

Wenn jetzt dieses “magische e” in einem HTML-Formular eingegeben wird und das Formular in PHP weiterverarbeitet wird, hat man ein Problem. Denn wie ich nach langem Suchen herausfinden konnte, wird dieses magische e bereits vom Browser in die numerische HTML-Entität umgewandelt, bevor der Request an den Server übermittelt wird. Herausfinden konnte ich das im Übrigen mit der genialen Firefox-Erweiterung “Live HTTP-Headers“.

Zurück zu meinem Problem: Es wurde also in einem HTML-Formular dieses böse ? eingegeben und diese Eingabe sollte später in einer E-Mail-Benachrichtigung ihren Platz finden. Da bereits der Browser die Umwandlung in eine HTML-Entität durchführte, musste diese nun PHP-seitig wieder rückgängig gemacht werden. Leichter gesagt als getan. Denn eine String-Konvertierung mittels mb_convert_encoding führte nicht zum Ziel. Egal, ob ich nach ISO-8859-1, ISO-8859-15, Windows-1252 oder auch UTF-8 konvertierte, das Ergebnis blieb das gleiche: Aus ? wurde ?

Nach Rücksprache mit dem Kunden habe ich dann eines gemacht:

$msg = str_replace('℮','e',$msg);

Da das ? kaum von einem normalen e zu unterscheiden ist, steht zukünftig ein normales e in den Benachrichtigungs-Mails geschrieben.

Die letztendliche Implementierung hat nicht lange gedauert. Die Suche, warum sich das ? so seltsam verhält, allerdings über zwei Stunden :-(

Übernachten beim Symfony Day Cologne 2009

Samstag, 11. Juli 2009

Kleiner Nachtrag zum Symfony Day Cologne 2009:

Wer eine günstige Übernachtungsmöglichkeit sucht, sollte die Jugendherberge in Köln-Deutz ins Auge fassen. Diese liegt nämlich schräg gegenüber vom Veranstaltungsort.

Ich brauche mich zum Glück nicht um ein Zimmer kümmern, da ich nur eine gute Viertelstunde zu Fuss bis zum Köln Triangel brauche :-D

Symfony Day Cologne 2009

Samstag, 11. Juli 2009

Nun ist es also soweit: Symfony kommt am 4. September nach Köln :-) Jetzt aber im Ernst: Nachdem ich die letzten beiden Jahre zum Symfony Camp in die Niederlande gereist bin, gibt es in diesem Jahr eine Symfony-Konferenz in Köln. Veranstaltet wird der Symfony Day Cologne 2009 von Interlutions.

Wie auf der Konferenz-Website zu lesen ist, findet die Veranstaltung im Köln Triangle (was für ein bescheuerter Name für den Turm) statt und kostet 80 Euro. Neben der Konferenz gibt es auch einen Einsteiger-Workshop. Abgerundet wird der Tag durch eine Party am Abend, an der auch das 10-jährige Jubiläum von Interlusions gefeiert wird. Und da der 4. September ein Freitag ist, kann die Party auch ruhig etwas länger dauern ;-)

Via http://www.symfony-framework.nl/nieuws/110

Jobeet-Tuturial als PDF

Montag, 02. Februar 2009

Nachdem als “Adventskalender-Projekt” vom Symfony-Team das “Jobeet-Tutorial” als Ersatz für das mittlerweile veraltete “Askeet-Tutorial” veröffentlicht wurde, steht Jobeet auch als PDF zur Verfügung.

Da es das Jobeet-Tutorial sowohl in einer Ausgabe für Propel und Doctrine als OR-Mapper gibt, sind daher auch beide Tutorials als in verschiedenen PDF-Dateien (Propel-Ausgabe / Doctrine-Ausgabe) verfügbar.

Auf der Dokumentations-Hauptseite sind auch die Links zu finden, um die beiden Ausgaben auch als gedrucktes Werk (Doctrine-Ausgabe / Propel-Ausgabe) zu bestellen. Dort finden sich aber auch weitere interessante Dokus, wie z.B. “What’s new?”, welche die Unterschiede zwischen Symfony 1.0 und 1.2 darstellt.

via Symfony Project Blog

Die XING-Gruppe “Symfony PHP Framework”

Montag, 15. September 2008

Wie ich auf dem Symfony-Camp festgestellt habe, haben zwar viele der Camp-Teilnehmer ein Xing-Profil, jedoch kennt nicht jeder auch die Symfony-Gruppe bei Xing. Daher möchte ich auf diesem Wege einfach mal auf die Symfony-Gruppe hinweisen:

Die Symfony-Gruppe bei Xing

Es wäre doch vielleicht schön, wenn diese Gruppe ein wenig lebendiger wird. Im deutschsprachigen Symfony-Forum ist ja anscheinend auch nicht so viel los und in der deutschen Symfony-Google-Group ist auch eher tote Hose.

XING

Mißverständisse in der Web-Entwicklung

Dienstag, 22. Juli 2008

Eran Galperin hat in seinem Blog die fünf größten Mißverständnisse in der Entwicklung von Web-Anwendungen zusammen getragen:

  1. Prozeduraler Code sei schneller als Objektorientierter Code – hier wird alzu oft Äpfel mit Birnen verglichen
  2. Das Backend sei wichtiger als das Frontend – liegt wohl oftmals an der Abneigung / Geringschätzung von HTML / CSS / JavaScript durch “richtige” Entwickler
  3. Grafik-Designer sind auch gute Interface-Designer – beide sind zwar Designer, aber der erstere will Aufmerksamkeit erreichen und der zweite soll den Benutezr glücklich machen
  4. Es gibt DIE überlegene Programmiersprache – es gibt nicht die eine seelig machende Sprache
  5. XML sei schneller bzw. produziere geringeren Overhead als Datenbanken (bzw. DBMS) – auch hier wird nicht sauber verglichen

Der Artikel ist sehr interessant und ich kann Eran in allen fünf Punkten nur beipflichten.

Imagick unter Windows

Samstag, 27. Oktober 2007

Für unsere Applikation, die wir seit über einem halben Jahr entwickeln, setzen wir zur Erzeugung von Thumbnails und Seiten-Previews von PDF-Dateien bevorzugt ImageMagick ein. Wer mehr zu ImageMagick wissen will, der Besuche die Homepage oder lese sich den Wikipedia-Artikel durch. Der Vollständigkeit halber sei an dieser Stelle erwähnt, dass wir ImageMagick in Kombination mit Ghostscript einsetzen, damit auch PDF (und natürlich auch PostScript-Dateien) gerendert werden kann.

Aus PHP heraus rufen wir ImageMagick sowohl unter Windows als auch unter Linux per exec() auf. Nicht gerade besonders elegant, aber wirkungsvoll ;-) Vor allem ist das Ansprechen per exec() in einer Objekt-orientierten Umgebung alles andere als intuitiv. (Wir setzen bei besagtem Projekt Symfony als Framework ein). So haben wir uns also eine Adapter-Klasse geschrieben, die den Zugriff auf ImageMagick hübsch objektorientiert verpackt.

Unter Linux bereitet diese Art der Einbindung von ImageMagick uns keinerlei Kopfschmerzen. ImageMagick ist ebenso wie GhostScript auf den meisten Linux-Servern schon installiert oder mit geringem Aufwand über die Distributions-eigene Paketverwaltung schnell nachinstalliert. Auch die Performance lässt sich sehen. Und unter Windows? Die Installation von IM und GS klappt mit den grafischen Installern noch ohne Probleme. Aber die Performance von ImageMagick lässt per PHP und exec() doch ein wenig zu wünschen übrig (für das Rendern einer Vorschau benötigt unsere Applikation die doppelte bis dreifache Zeit unter Windows – trotz schnellerem Prozessor und mehr Hauptspeicher). Man merkt halt schon, für welche Plattform sowohl IM als auch GS entwickelt wurden.

Als native Schnittstelle gibt es schon seit Jahren das PECL-Paket Imagick. Es wurde jedoch seit 2004 nicht mehr weiter entwickelt. Erst im Frühjahr dieses Jahres haben sich wieder zwei Entwickler der Weiter-Entwicklung angenommen. Mittlerweile ist Imagick auch als Version 2.0.x stabil. Die 2er-Version wurde konsequent auf PHP5 und Oojekt-Orientierte Programmierung ausgelegt, so dass es keine Probleme bereiten sollte, Imagick in vorhandenen Projekten einzusetzen. Einziges Problem unter Windows ist jedoch, das PECL-Pakete nicht in PHP, sondern in C implementiert sind und man deshalb entweder vorkompilierte DLLs benötigt, oder selber den Compiler anwerfen muss. Da ich nicht über Microsoft Visual Studio verfüge und auch sonst ein wenig mit C auf Kriegsfuß stehe, blieb nur noch Variante eins übrig.

(weiterlesen…)