Gratis ColdFusion für Schulen und Studenten nun verfügbar

Wie bereits vor einigen Monaten angekündigt, ist nun endlich auch ColdFusion für Schulen und Studenten kostenlos verfügbar. Mehr dazu auf der Adobe Webseite.

Adobe Zertifizierung

Wurde gerade angefragt, wo sich in der Schweiz ColdFusion Zertifizierungen machen lassen. Die Tests werden durch Pearson Vue durchgeführt und können bequem übers Internet organisiert werden. Die Tests werden bei einem Pearson Vue Partner an dem vereinbarten Termin durchgeführt. In der Schweiz gibt es einige Partner und somit sollte jeder in seiner Nähe etwas finden. Gerade die Migros Klubschulen und Digicomp sind in jeder grösseren Stadt zu finden. Testcenter finden Vor dem Test müssen alle persönlichen Sachen abgegeben werden. Der Test wird an einem Computer durchgeführt, wobei zu achten ist das beim Termin buchen auch die korrekte Sprache gewählt wird. Den ersten Test musste ich leider in Deutsch ausführen was teilweise ein wenig verwirrend war und sich auch so noch Fehler in den Test eingeschlichen haben. Nach dem Test erhält man ein Ausdruck mit dem Ergebnis. Bei bestandenem Test, wird einem ein paar Wochen später noch ein Zertifikat von Adobe zugestellt. Um mich damals auf den ersten Test vorzubereiten habe ich den CFMX Exam Buster gekauft. Unterdessen ist auch der CF8 und ein Dreamweaver Test verfügbar.

Comic passend zu cfqueryparam

Quelle: http://xkcd.com/327/

cfqueryparam!!!!!!!!!!!!!!!!!! Gezielter Angriff auf CF Seiten

Gestern war ein interessanter Tag für einige Systemadmins. Wie es scheint wurden gestern gezielt ColdFusion Webseiten mit SQL Injection angegriffen.

Auch bei uns im Hosting waren wieder ein paar Kunden betroffen, was uns schlussendlich dazu bewogen hat die SQL Injections auf der Firewall zu filtern. Wir haben bisher bewusst darauf verzichtet weil natürlich auch ungewollte Fehler entstehen können, aber gestern war genug.

Dabei wäre es mit cfqueryparam so einfach sich zu schützen. Und wer die SQL Statements dynamisch zusammenbaut sollte die URL und FORM Variablen überprüfen und nicht einfach so übernehmen.

Update
Daniel hat mir noch den Link zu einem Tool gesendet welches den Code nach fehlenden cfqueryparam absucht.

Happy Birthday ColdFusion

Wie Ben Forta berichtet ist heute der 13. Geburtstag von ColdFusion.

Cold Fusion (bis zur Version 4 noch mit einem Leerschlag) wurde im Sommer 1995 durch J.J. Allaire in C++ programmiert mit dem Ziel HTML Programmieren eine einfache Möglichkeit zu geben Daten aus Datenbanken einzubinden. Die erste Version unerstützte EMWACS und WebSite als Webserver und viel mehr als ein cfquery war nicht vorhanden.
Auch der Name Cold Fusion war nicht von Anfang an geplant, eigentlich sollte es Prometheus heissen. Da der Name aber nicht als Marke registrierbar war, musste ein neuer Name her, der zum bereits bestehenden Logo (Faus mit Lichtblitz) passen musste.

ColdFusion Geschichte:
1995 Februar, J.J. Alleire beginnt mit der Programmierung von CF
1995 Juli, Allaire wird gegründet
1995 Juli, Allaire Cold Fusion 1.0
1996 November, Allaire Cold Fusion 2.0 und 10'000 Benutzer
1997 März, HomeSite wird gekauft
1997 Juli, Allaire Cold Fusion 3.0 und 30'000 Benutzer
1997 November, Allaire CF Studio 3.1 und Allaire Cold Fusion 3.1, CF für Solaris
1998 November, Allaire ColdFusion 4.0
1999 März, Französische und Deutsche Version von CF
1999 Juni, CF für HP-UX, CF Express
1999 November, Allaire ColdFusion 4.5
2001 Juni, Macromedia ColdFusion 5.0 (cfgraph, UDF)
2002 Mai, Macromedia ColdFusion MX 6.0 (Wechsel auf Java)
2003 Oktober, Macromedia ColdFusion MX 6.1
2005 Februar, Macromedia ColdFusion 7
2007 Juli, Adobe ColdFusion 8
2007 April, Adobe ColdFusion 8.0.1 (64 Bit)

Cfcontent reset="yes" räumt nicht alles weg

ColdFusion schreibt den generierten Code in einen Buffer und gibt diesen am Schluss oder bei einem cfflush an den Client aus. Für cfhtmlhead gibt es jedoch einen separaten Buffer und dieser wird ganz am Schluss entweder in den Head Tag geschrieben oder wenn keiner vorhanden ist einfach an den Anfang des Inhalts.
Einige CF Tags wie cfmenu verwenden nun diesen Buffer um den benötigen Java Script Code in der Seite einzubinden.

Wer nun versucht mit cfconent reset="yes" den bisher generierten Code zu löschen um z.B. ein CSV oder eine vCard auszugeben findet am Anfang den JavaScript Code. So wie es aussieht wird durch das Reset Attribut nicht alles zurückgesetzt.

Im Internet habe ich Code von Elliot Sprehn gefunden welcher das Problem löst:
function getCFHtmlHeadContent() { var out = getPageContext().getOut(); var field = out.getClass().getDeclaredField("headerBuffer"); var buffer = 0; field.setAccessible(true); buffer = field.get(out); if( isDefined("buffer") ) return buffer.toString(); return ""; }

CFML and Open Source CF Server

Die Hälfte vom 2008 ist durch und bis jetzt war es für den interessierten CF Entwickler ganz schön spannend. Zeit um die Ereignisse mal zusammen zu fassen.

Angefangen hat es mit der Ankündigung Anfang März eine Open Source Version von Bluedragon zu veröffentlichen. Sehr gute Idee, wenn auch durch die Open Source Lizenz Sachen wie der Administrator, cfdocument und der bisherige Microsoft SQL Treiber fehlen.

Einen Monat später wurde dann auch ein OpenBluedragon Steering Commitee präsentiert, welches die Weiterentwicklung von open bluedragon und somit auch des dort verwendeten cfml "Dialekts". Für mich waren dabei am bekanntesten Sean Corefield (ehemals Macromedia und Adobe) und Mark Drew (cfeclipse).

An den CF Konferenz Scotch on the Rocks Anfang Juni hat dann Railo bekannt gegeben das ab Railo 3.1 es auch eine Open Source Version geben wird und auch eine Partnerschaft mit jboss wurde bekannt gegeben.
Ich hatte in der Woche vor der Scotch Michael Streit (er hat Railo inital programmiert) noch zu Besuch im Büro und er hat mir ein wenig die Hintergründe und die geplanten Ziele zum open Source/jboss Deal erklärt. Ich muss wirklich sagen, die haben das ganze perfekt und korrekt durchgezogen. Hut ab.

Zur gleichen Zeit haben Mark Drew und Sean Corfield überreaschend Ihren Rückzug aus dem openBD Steering Committe bekannt gegeben.

Gestern an der CFUnited Keynote wurde dann ein CFML Advisory Committe präsentiert. Mit dabei sind Ben Forta und Senjeev Kumar von Adobe, Gert Granz von Railo sowie Sean Corfield, Ray Camden und Rob Brooks-Bilson. Alles Namen die der interessierte CF Entwickler schon mal gehört hat.
Die CF Entwickler konnten eigentlich schon bisher sehr viel Einfluss auf die CFML Entwicklung bei Adobe nehmen. Wer in den Alphas oder Betas von CF war, der weiss das auf den Mailinglisten rege Diskussion zu Funktionen, Tags und Attributen gegeben hat. Und Adobe hat auch meist auf die Entwickler gehört und auch mal die Pläne extrem geändert.
Das CFML Advisory Board bietet nun dagegen sehr gute Möglichkeiten das Inkompatibilitäten zwischen den Engines verschwinden oder zumindest vermindert werden. Ist ja noch ok wenn ein Produkt ein Tag nicht anbietet, aber wenn jedes ein cfimage anbietet jedoch andere Attribute hat, wird es lästig portablen Code zu schreiben.

Adobe ColdFusion Server neu kostenlos für Schulen und Studenten

Ähnlich wie es bereits Flex Builder 3 gratis für Schulen und Studenten gibt, wird neu auch ColdFusion gratis abgegeben.
Das Programm ist aktuell noch nicht verfügbar, sollte aber in den nächsten Wochen präsentiert werden.

CF 8 Hot Fixes

Adobe hat in den letzten Tagen neue Hot Fixes für ColdFusion 8 zum Download bereit gestellt.

ColdFusion 8.0.1 Cumulative Hot Fix 1
In diesem zusammengefassten Hot Fix werden folgende Probleme behoben:
- ArithmeticException 64Bit Apache Webser bei *nix Betriebsystem
- diverse cfimage/image Probleme
- cfftp Problem wenn kein Connection Attribut verwendet wird
- cftooltip ignorierte Variablen
- cfmenu Attribut type achtete auf Gross-/Kleinschreibung

Technote CF 8.0.1 CHF1

Hotfix für HTML Grid und cfmenu
Mit diesem Patch wir ein Problem in Verbindung von HTML Grid und Auswahlfeldern sowie die Position des Submenu Pfeils in vertikalen Menus gefixt.

Technote CF 8.0.1 Grid/cfmenu Patch

ColdFusion 8 Updater 1 verfügbar

Adobe hat heute Morgen den Updater 1 für ColdFusion 8 veröffentlicht. Die Entwickler waren fleissig und haben einiges verbessert und nachgerüstet. 64 Bit Support
Als erstes der Hinweis das 64 Bit Support nur in der Enterprise und Developer Version verfügbar ist - nicht aber in der Standard Version. Wer sich überlegt mit 64 Bit zu fahren sollte auch daran denken das die CFX Tags entsprechend kompiliert sein sollten. Also hier vorher bei den Herstellern der Tags nachfragen. Unterstützt werden folgende Betriebssysteme:
- Windows Vista, 2003 und XP
- Mac OS X Leopard
- Suse Linux 10
- Solaris 9 & 10
- RedHat Linux 5
Mac OS X Leopard Support
ColdFusion lässt sich nun einfach und ohne spezielle Tricks auf einem Max OS X Leopard installieren.
Aktualisierte Komponenten
CF bindet unterdessen einige Komponenten von Drittherstellern ein, welche entsprechend aktualisiert wurden. Die wichtigste ist wohl der FCK Editor 2.5 mit Safari Support. Weiters wurden auch die Zugriffe auf den FCK Editor mittels Javascript verbessert.

- FCK Editor 2.5
- ExtJS 1.1.1
- Verity 5.5 SP3
- Yahoo UI 2.3
- Spry 1.6
Attribut Collections
Bisher konnten Attribute Collections nur Keys enthalten wo der Namen mit einem Attribut des jewiligen Tags übereingestimmt hat. Wurde ein Key mit einem nicht unterstützten Namen übergeben ist ein Fehler generiert worden. Nun lässt sich im CF Admin, im Application.cfc mit this.allowExtraAttributes=true oder im Tag mit allowExtraAttributes=true das Verhalten umstellen und unbekannte Keys generieren keinen Fehler mehr. Somit lassen sich generelle Collections definieren. Weiters überschreiben nun ein Attribut im Tag den Eintrag aus einer Attribute Collection.
cfml Updates
- cfdocumentitem (evalAtPrint)
- cfexchangecalendar (category und label)
- cfexecute (errorVariable und errorFile)
- cfftp (timeout)
- cffunction
- cfimage (EXIF Daten bleiben erhalten, +normale img Attribute)
- cfimage action=captcha (width und height sind neu optional)
- cfmail (remove Attribut um Anhänge nach Versand zu löschen)
- cfmailparam (content Attribut um Anhänge als Variable zu übergeben)
- cfpdf (addwatermark, keepbookmark default geändert, Ausgabe ohne zu speichern an den client möglich)
- cfregistry (update für 64 Bit Windows)
- cftextarea (Spellchecker)
- Verschachtelung von Arrays und Structures beim erstellen mit [] und {}.
Nebst den bisher veröffentlichten Hotfixes sind auch einige andere Bugs behoben worden. Wer es genauer wissen möchte, der schaut am besten in die Release Notes. CF 8.0.1 Release Notes
CF 8.0.1 Support Matrix
CF 8.0.1 Downlod

Adobe Developer Week - 20 Online Session diese Woche

Vom 24. bis 28. März ist die Adobe Entwickler Woche mit 20 Online Session zu den Themen AIR, Flex, ColdFusion, Dreamweaver und Flash.

Opensource Version von BlueDragon

New Atlanta hat ein Press Release rausgegeben worin eine Opensource Version von BluDragon/J2EE engekündigt wird. Eine erste Version soll im Juni 2008 verfügbar sein. New Atlanta wird wie MySQL ein Dual-Licensing machen, d.h. es wird auch weiterhin käufliche Versionen von BlueDragon/J2EE geben. Die Versionen BlueDragon.net und BlueDragon Server JX sind davon nicht betroffen und werden wie bis anhin verkauft.

cfquery - ID eines Records nach einem Insert

In ColdFusion 8 wurde beim cfquery eine neue Funktion eingefügt welche die ID des mit INSERT eingefügten Records zurückgibt. Diese ist je nach Datenbank in einer anderen Variable, z.B. bei MySQL result.generated_key oder bei MSSQL ist es result.identycol. Da ein Projekt, wo ich mitarbeite, auf allen CF Engines laufen sollte fand ich die Implementation etwas unglücklich. Wieso kann CF dies nicht einfach in eine Variable packen? Ansonsten macht ja CF alles um möglichst OS oder Datenbank unabhängig zu programmieren. Eine Anfrage bei Adobe hat dann auch etwas Klarheit gebracht. Das Feature war nicht nicht ofiziell auf der Feature Liste und wurde durch einen Entwickler einfach so eingebaut ohne das es vorher spezifiziert wurde. Es sind wohl auch Gedanken da dies in einer nächsten Version entsprechend zu korrigieren.

cfdirectory recurse

In sehr altem Code lese ich die Verzeichnisse rekursiv aus um die Ordner und/oder Dateien in einer Listbox anzuzeigen. Ich habe dies damals gemacht indem ich nach einem cfdirectory action=list bei jedem directory wieder den Inhalt auslese, entweder in einem Loop oder durch einen rekursiven Aufruf eines CF Tags. Leider dauert es bei vielen Dateien sehr lange bis die Liste erstellt ist. Mit CF 7 wurde ein recurse Attribut eingeführt womit ein einziger cfdirectory Aufruf für das gewünschte Resultat genügt. Zu meiner Überrschung ist der Aufruf mit recurse langsamer als der mehrmalige Aufruf von cfdirectory inkl. dem Overhead mit Loop oder Tag. Also abgesehen von weniger oder schönerem Code bringt also ein rewrite kein bessere Performance.

cfprint/cfreport und Umlaute

Nachdem ich gestern im Hosting Netzwerk einen neuen HP Drucker installiert habe wollte ich nun heute morgen schnell mittels cfprint die Rechnungen inkl. ESR direkt mit einem Klick im Web ausdrucken lassen. Hat eigentlich auch alles ganz schnell funktioniert, nur leider wurden die Umlaute nicht gedruckt. Wenn ich jedoch das PDF abgespeichert und auf dem Server, mit dem Acrobat Reader, ausgedruckt habe war alles in Ordnung. Die Hilfe zu zu cfprint und cfreport haben auch nichts gezeigt was helfen könnte. Beim Durchstöbern der Einstellungen im Report Builder habe ich dann unter Preferences/General Information das PDF Character Encoding gefunden. Zum Testen habe ich dies von CP1252 auf Identity-H umgestellt. Das Report Template habe ich nochmals gespeichert und nun war der nächste Ausdruck perfekt.