Die Flexperten Herrlich & Ramuschkat

Archiv für die Kategorie 'Tipps'

CF10 Connector hängt <- Lösung

Des Öfteren kam mir das Phänomen zu Ohren, dass der Coldfusion10 Server sich sporadisch “verabschiedet”, ohne ersichtlichen Grund oder einer besonderen Belastung des Servers.

Das Ergebnis einiger Nachforschungen liessen mich vermuten, dass ein Problem mit dem Connector existiert. Nicht mit dem Connector selbst, sondern mit der Verbindung zwischen dem Webserver (hier: IIS) und der Anbindung an Tomcat via AJP1.3.

Weiterlesen »

ColdFusion 8: Javscript-Fehler “Coldfusion is not defined”

Beim Anlegen eines neuen Entwicklerverzeichnisses bei unserem Kunden auf dem Entwicklungs-Server bin ich gerade wieder über die Problematik gestolpert: direkt nach dem ich das Verzeichnis erzeugt, die Dateien aus’m SVN ausgecheckt und im IIS als Site angelegt hatte verursachte der Aufruf diverser cfm-Seiten einen Javascript-Fehler: “Coldfusion is not defined”. In den jeweiligen cfm-Seiten werden Coldfusion-eigene Skripte (z.B. durch cfajaxproxy erzeugte) verwendet.

Weiterlesen »

Datenbank: Logisches Löschen (“Soft Delete”) datenbankseitig umsetzen

Im aktuellen Projekt gibt es die Anforderung, dass Datensätze nicht physikalisch aus der Datenbank gelöscht werden dürfen, sondern lediglich als “gelöscht” markiert werden sollen.

Um das umzusetzen gibt es verschiedene Ansätze, in der Regel gibt es in den entsprechenden Tabellen eine “deleted” Spalte. Solange der Wert null ist, ist der Datensatz “da”, ist er != null, dann ist er “gelöscht”.

Weiterlesen »

Coldfusion Builder Quicktip: hilfreiche Shortcuts

Hilfreiche Shortcuts im Coldfusion Builder für produktiveres Programmieren:

  • Ctrl + Shift + t öffnet den Tag Wizard. Mit dem Assistenten können auf die Schnelle alle in der jeweiligen Coldfusion-Version vorhandenen Tags mit einer kurzen Beschreibung angezeigt und im Editor eingefügt werden. Dabei fragt der Wizard gleich alle relevanten Attribute mit Hilfe von Dialogen ab.
  • Ctrl + Shift + d fügt ein <cfdump var=##> ein
  • Ctrl + Shift + o umschließt den markierten Text im Editor mit einem <cfoutput>…</cfoutput>
  • Ctrl + Shift + h umschließt den markierten Text im Editor mit einem #…#
  • Ctrl + Shift + m umschließt den markierten Text im Editor mit einem <!— … —>, bzw. entfernt ihn wieder (ein- und auskommentieren)

Die Übersichtsliste alle Shortcuts läßt sich selber leider nicht mit einem Shortcut aufrufen! Die findet sich im Menü unter “Help -> Key Assist…”.

Via E-Mail von Ingo

Coldfusion: <!—<cfset …>—> vs. <!cfset …>

…beide Möglichkeiten sind in ColdFusion zum Auskommentieren beliebt:

<!—<cfset …>—>

<!cfset …>

Wenn man <!cfif …> allerdings in der application.cfm / .cfc in der Methode „onRequestStart“ anwendet und z.B. in einer upload.cfm die fileId zurück gibt, um sie in Flex mit UPLOAD_COMPLETE_DATA zur weiteren Verarbeitung zurück zu erhalten, wird die gesamte <!cfif> Zeile mit eingetragen und es kommt zu Fehlern, da die fileId natürlich nicht numerisch ist. Daher in der Application.cfc immer mit <!— <cfif …> —> arbeiten.

Via E-Mail von Sascha.

Coldfusion: cfquery mit cfqueryparam und cachedWithin

Laut Livedocs für Coldfusion 8 sollte cfquery mit cfqueryparam und cachedWithin ja nicht funktionieren: “You cannot use the cfquery cachedAfter or cachedWithin attributes with cfqueryparam.” Stimmt gar nicht…!

Der (die, das,…?) Query

<cfquery
     name="qWerk"
     datasource="#application.dsn#"
     cachedwithin="#CreateTimeSpan( 0, 1, 0, 0 )#">
          SELECT werk_id, werk, organisation, sichtbar
          ...

in CF8 führt nach dem zweiten Aufruf zu:

Ich vermute mal, mit dem 8.01 Update kam die Möglicheit Queries mit cfqueryparam auch zu cachen. Steht aber leider nicht in der Doku. Erst bei den CF9 Livedocs fehlt der Hinweis. Gut also, das wir die Doku immer erst hinerher lesen… 😉

Coldfusion: cfqueryparam mit LIKE-Operator und Platzhaltern

Bin gerade bei einem Kunden über einen Query mit Like-Operator gestolpert, der mit einem cfqueryparam versehen werden soll:

SELECT ...
WHERE UPPER(CONVERT(varchar(500), a.keywords)) like '%#UCASE(x)#%'

Stellte sich zunächst die Frage, wohin mit den Paltzhaltern (%), in die value-Eigenschaft von cfqueryparam oder außerhalb vom Tag? Nach einem kurzen Test war klar, funktioniert unter CF8 nur, wenn der oder die Platzhalter innerhalb der value-Eigenschaft von cfqueryparam angegeben werden:

SELECT ...
WHERE UPPER(CONVERT(varchar(500), a.keywords)) like
<cfqueryparam cfsqltype="cf_sql_varchar" value="%#UCASE(x)#%">

SVN Tipp: “gelockte” Resourcen überschreiben

Vielleicht hattet ihr schon manchmal das Vergnügen, das ihr euch mit Dateien in SVN rumzuschlagen musstet, die von SVN als “locked” angemeckert werden.

So eine Ressource lässt sich selbst mit “Replace with latest from Head” o.ä. nicht überschreiben, auch das Löschen der Datei aus dem Dateisystem und ein nachträgliches SVN Update hilft nicht, da der Lock immer noch wirkt (warum auch immer…)

Weiterlesen »

Coldfusion + JavaScript: SerializeJSON(), eval() und führende Nullen

Es gibt aber auch manchmal Fehler, da muss man erstmal drauf kommen. Bei einem Kunden werden Hexadezimale Identifier fester Länge verwendet, was ich jedoch nicht wußte, auch mit führender Null (z.B. “0437EB6A4A4E2103”)! Nun wurden die IDs zusammen mit anderen Daten als Struct mittels SerializeJSON() codiert und an eine JavaScript-Funktion übergeben (cfajaxproxy läßt grüßen…). In der JavaScript-Funktion wurde dann mittels eval() das ganze wieder in ein JS-Objekt decodiert. Jetzt kommt der Clou mit der führenden Null: JavaScript interpretiert den Wert des Indentifiers dann als oktalen Wert, wegen der Null am Anfang! Bei der folgenden Verarbeitung hat’s dann immer mal wieder gekracht, nämlich dann, wenn ein Benutzer eben den Identifier mit führender Null hatte.

Der einfachste Weg für uns war, einfach vor dem Serialisieren einen Buchstaben, bzw. ein Sonderzeichen dem Identifier voranzustellen und dann nach dem Decodieren diesen wieder zu entfernen. So nimmt JavaScript immer an, das es sich um einen Textwert handelt.

Tour de Coldfusion

Der ein oder andere wird vielleicht schon mal mit der Tour de Flex oder der Tour de LiveCycle in Berührung gekommen sein. Das sind hilfreiche kleine AIR-Desktop-Anwendungen, die einen guten Überblick für Flex- bzw. LifeCylce-Neulinge, sowie einen detailierten Einblick in Flex bzw. LiveCycle für Entwickler geben. Das gibt es jetzt auch für Coldfusion: Tour de Coldfusion

Besonders praktisch finde ich, neben den hunderten von Code-Beispielen, die Kategorie “Language Updates” mit deren Hilfe wir hier schon mal abschätzen können, was sich bei einer Migration auf eine höhere Coldfusion Version ggf. ändert und somit Anpassungen im Code erforderlich macht. Die AIR-Anwendung hat zwar noch Beta-Status, ist aber schon gut zu gebrauchen.

Schaut’s euch einfach mal an unter http://tourdecf.adobe.com/

Nächste Seite »