Daniel Schmid Webarchitecttag:www.danielschmid.name,2012:/Systemarchitekt mit 10 Jahre Erfahrung in der Entwicklung von Java und ColdFusion Applikationen im Bereich eCommerce, Portalsites, Content Management sowie Intranet LösungenMango 1.6CfObjective Keynote Notizenurn:uuid:E5AE475B-FC8C-F6B2-F7CE77A72217D25A2011-05-12T09:05:03Z2011-05-12T09:05:17Z<p>Gestern war die Keynote. Dazu gibt es <a href="https://docs.google.com/document/d/15xWYyXvizQxBsa_8KOhlxzQO27C4-2DjLOccaY43Nog/edit?hl=en_GB&pli=1" target="_blank">Shared Online Notizen auf Google Docs</a>. Interessant vorallem auch was uns mit CF10 so erwarten wird (Marc Esher).</p>Daniel Schmid
<p>Wäre ja an die cfObjectiven gegangen, Welcher h CF-Developper nicht ;-)</p>
<p>Gestern war die Keynote. Dazu gibt es <a href="https://docs.google.com/document/d/15xWYyXvizQxBsa_8KOhlxzQO27C4-2DjLOccaY43Nog/edit?hl=en_GB&pli=1" target="_blank">Shared Online Notizen auf Google Docs</a>. Interessant vorallem auch was uns mit CF10 so erwarten wird.</p>
<p>Auch beim <a href="http://twitter.com/#!/search/cfobjective" target="_blank">Twitter-Feed</a> lohnts sich mal reinzuschauen.</p>
<p> </p><div class="addthis_toolbox addthis_default_style"><a href="http://www.addthis.com/bookmark.php?v=250&username=xa-4b5354282d4fbfdf" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_facebook"></a><a class="addthis_button_myspace"></a><a class="addthis_button_google"></a><a class="addthis_button_twitter"></a></div><script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4b53552355eca066"></script>
Mylyn und Subeclipse in ColdFusion Builder 2 installierenurn:uuid:BFC0E366-0538-DC6A-D22FDB11534A4A692011-05-05T12:05:55Z2011-06-12T07:06:36Z<p>Leider hat es Adobe auch in Version 2 wieder geschafft, Mylyn nicht in ColdFusion Builder zu integrieren. Daher hier ein kleines Tutorial wie ColdFusion Builder 2 fit zu machen ist für Mylyn, Subeclipse und andere Eclipse Goodies.</p>Daniel Schmid
<p><span style="font-family: Calibri, sans-serif; font-size: medium;"></span></p>
<p>Leider
hat es Adobe auch in Version 2 wieder geschafft, Mylyn nicht in ColdFusion Builder zu integrieren. Daher hier ein kleines Tutorial
wie ColdFusion Builder 2 fit zu machen ist für Mylyn, Subeclipse und andere
Eclipse Goodies.</p>
<ol>
<li>Als
Erstes muss man das Update Repository von Helios
(Eclipse 3.6) , auf dem ColdFusion Builder 2 aufbaut, integrieren.
Dazu "Help -> "Install New Software" öffnen und "http://download.eclipse.org/releases/helios/" in "work with" eintragen und auf "Add" klicken. Beim Prompt
für den Repo Namen kann man "Helios Update" oder einen eigenen
Bezeichner eintragen.</li>
<li>
Nun
heisst es, etwas Geduld zu üben, bis das Repository eingelesen ist
und im Screen eine Liste mit zusätzlichen Eclipse-Modulen
erscheint. Darunter finden sich einige Goodies. Was man braucht,
muss jeder selber entscheiden. Ich beschränke mich jetzt mal auf
Mylyn, da mich hier vor allem die Taskverwaltung interessiert und zudem
wird Mylyn für Subeclipse benötigt. Interessant sind aber
natürlich auch der Git client "eGit" oder die Javascript- bzw.
XML-Tools, wenn man mit den in CB2 mitgelieferten Aptana Modulen
nicht zufrieden ist.<br /><br />
<img src="/assets/content/helios_screen.gif" alt="" width="796" height="812" />
</li>
<li>
Für
Mylyn unter "Collaboration" im Minimum "TaskList", "Task-FocuseInterface", "TeamSupport" und "Bridge Eclipse" auswählen.
</li>
<li>
<p style="margin-bottom: 0cm;">Lizenzvereinbarung
akzeptieren,installieren und Neustart durchführen. Wer auf ganz
sicher gehen will, macht einen Neustart mit dem -clean Parameter.
Unter Windows mit "C:\Program Files (x86)\Adobe\Adobe ColdFusion
Builder 2\CFBuilder.exe -clean".</p>
</li>
<li>
Nach
dem Neustart können wir nun Subeclipse installieren. Dazu "Install New Software" wiederum öffnen und die Subeclipse Update Site
eintragen "<a href="http://subclipse.tigris.org/update_1.6.x">http://subclipse.tigris.org/update_1.6.x</a>"
</li>
<li>
Eclipse
prüft nun die Abhängigkeiten, aber alle Subeclipse Module sollten
nun problemlos installierbar sein.<br /><br />
<p style="margin-bottom: 0cm;"><img src="/assets/content/image/subeclipse_cb2.gif" alt="" width="790" height="489" /></p>
</li>
</ol>
<p>
Das
wars. Nun kann ich auch den <a href="http://unfuddle.com/plugins/mylyn" target="_blank">Unfuddle Mylyn Connector</a> zur
Verwaltung meiner Tickets installieren.</p><div class="addthis_toolbox addthis_default_style"><a href="http://www.addthis.com/bookmark.php?v=250&username=xa-4b5354282d4fbfdf" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_facebook"></a><a class="addthis_button_myspace"></a><a class="addthis_button_google"></a><a class="addthis_button_twitter"></a></div><script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4b53552355eca066"></script>
ColdFusion Builder 2 veröffentlichturn:uuid:B4D4B474-FF51-B34C-65292B1EFD5EF1932011-05-03T09:05:45Z2011-05-04T05:05:33Z<p>Heute wurde ColdFusion Builder 2 veröffentlicht. Die zweite Version enthält nun einiges was im Erstling schmerzlich vermisst wurde wie zum Beispiel sinnvolles Codeformating.</p>Daniel Schmid
<p> </p>
<p>Heute wurde<a href="http://www.adobe.com/products/coldfusion-builder.html" target="_blank"> ColdFusion Builder 2 veröffentlicht</a>. Die zweite Version enthält nun einiges was im Erstling schmerzlich vermisst wurde wie zum Beispiel sinnvolles Codeformating. Eine Zusammenstellung aller Verbesserungen findet sich <a href="http://www.adobe.com/devnet/coldfusion/articles/cfb2-whatsnew.html" target="_blank">hier</a>.</p>
<p>Offenbar hat man bei Adobe die Kritk an der allzu offensiven Preisgestaltung ernst genommen. Vom CF Builder 2 gibts nun eine "Free Express Version" mit ehrlich gesagt vertretbar eingeschränktem Funktionsumfang. Nach dem 60 Tage dauernden Testphase lässt sich CF Builder immer noch in der "Express Edition" öffnen. Verzichtem muss man dann auf FTP-Support, Refactoring, die neuen Suchfunktionen und auch das Codeformatiing. Die Codeassisten sind jedoch noch genau so freigeschaltet wie RDS - für viele wird das bereits reichen ;-).</p>
<p>Die Features Matrix von der Standard und Express Version (von Raymond Camden)</p>
<p> </p>
<p><img src="/assets/content/image/standard_express_cfbuilder2.gif" alt="" width="479" height="839" /></p>
<p> </p>
<p><span style="font-family: Arial, Helvetica, sans-serif; color: #333333; font-size: x-small;"><span style="line-height: 18px;"></span></span></p><div class="addthis_toolbox addthis_default_style"><a href="http://www.addthis.com/bookmark.php?v=250&username=xa-4b5354282d4fbfdf" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_facebook"></a><a class="addthis_button_myspace"></a><a class="addthis_button_google"></a><a class="addthis_button_twitter"></a></div><script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4b53552355eca066"></script>
Wochennummern in Google Kalenderurn:uuid:A1343C53-B309-09D3-F7BEAEDB758AD1252011-04-29T02:04:39Z2011-04-29T02:04:38Z<p>Der Google Kalender ist wohl neben Gmail die überragende WebApp. Was mit immer fehlte, waren die Wochentagen.</p>Daniel Schmid
<p>Der Google Kalender ist wohl neben Gmail die überragende WebApp. Was mit immer fehlte, waren die Wochentagen. Lässt sich aber <a href="http://sites.google.com/site/gcalweeknumbers/googlecalendarweeknumbers" target="_blank">hier</a> ergänzen. </p>
<p><img src="/assets/content/image/wknumber.jpg" alt="" width="344" height="123" /></p>
<p> </p>
<p><img src="/assets/content/image/wknumber2.jpg" alt="" width="311" height="453" /></p>
<p> </p><div class="addthis_toolbox addthis_default_style"><a href="http://www.addthis.com/bookmark.php?v=250&username=xa-4b5354282d4fbfdf" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_facebook"></a><a class="addthis_button_myspace"></a><a class="addthis_button_google"></a><a class="addthis_button_twitter"></a></div><script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4b53552355eca066"></script>
Hibernate SQL in ColdFusion Builder Console ausgebenurn:uuid:21554CFC-FDF3-F0E4-3046D1B7FF8E861D2010-04-21T06:04:35Z2010-04-21T07:04:27Z<p>Es ist sicherlich nicht schlecht, sich gelegentlich den von Hibernate in
ColdFusion 9 erzeugte SQL-Code anzuzeigen. Unverzichtbar wird es bei der Fehlersuche.</p>Daniel Schmid
<p>Es ist sicherlich nicht schlecht, sich gelegentlich den von Hibernate in ColdFusion 9 erzeugten SQL-Code anzuzeigen. Unverzichtbar wird es bei der Fehlersuche, wenn man sich die Datenbank-Tabellen von Hibernate anhand der Objektdefinitionen erzeugen lässt (highly recoomanded); denn was anderes als "DLL error" erhält man von ColdFusion bei einem Fehler nicht zurückgeliefert.</p>
<p>Am liebsten hätte man den SQL-code natürlich gleich in der Console. Das geht mit einer Anpassung der log4j.properties. Die finden sich in {cfserverroot}/lib.</p>
<p>Auf circa line 16 & 17 unkommentiert man die beiden Angaben:</p>
<p><textarea cols="50" rows="15" name="code" class="cf">log4j.logger.org.hibernate.SQL=DEBUG, HIBERNATECONSOLE
log4j.additivity.org.hibernate.SQL=false</textarea> </p>
<p>Wer noch die Parameter der 'Prepared Statements' angezeigt haben möchte, unkommentiert auch Line 19:</p>
<p><textarea cols="50" rows="15" name="code" class="cf">log4j.logger.org.hibernate.type=DEBUG</textarea> </p>
<p>Ganz wichtig dann Line 23:</p>
<p><textarea cols="50" rows="15" name="code" class="cf">### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=DEBUG, HIBERNATECONSOLE</textarea> </p>
<p>Dann werden auch die Schema Updates angezeigt.</p>
<p>Das vollständiges log4j.properties file zur Ausgabe der hiberbate SQL in der ColdFusion Builder Builder <a href="/assets/content//files/log4j.txt" target="_self">liegt hier zum Download</a>. </p>
<p>Achtung: Für die Ausgabe in der Comsole sollte man den Server aus CFBuilder starten.</p>
<p> </p><div class="addthis_toolbox addthis_default_style"><a href="http://www.addthis.com/bookmark.php?v=250&username=xa-4b5354282d4fbfdf" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_facebook"></a><a class="addthis_button_myspace"></a><a class="addthis_button_google"></a><a class="addthis_button_twitter"></a></div><script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4b53552355eca066"></script>
ColdFusion Builder am SWCFUG Meetingurn:uuid:9B16C8CD-ACF4-16F4-C11C3F6F968896AB2010-03-26T04:03:45Z2010-03-26T05:03:26Z<p>Am nächsten Montag, 29. März 2010, findet um 18h00 das nächste User
Group Meeting statt. Es geht um die ColdFusion Builder IDE, welche im
Detail vorgestellt wird.</p>Daniel Schmid
<p>Am nächsten Montag, 29. März 2010, findet um 18h00 das nächste User Group Meeting statt. Es geht um die ColdFusion Builder IDE, welche im Detail vorgestellt wird.</p>
<p>
Die Finalversion von ColdFusion Builder ist letzte Woche vorgestellt worden. Seit ColdFusion Studio anno... ja wann war das den... so circa 1997...nun die erste IDE für ColdFusion von Adobe, die seit einiger Zeit schon als freie Beta ausprobiert werden konnte. Der Preis beträgt 299 US$, was relativ viel ist, da mit <a href="http://www.cfeclipse.org">CFEclipse</a> ja auch eine gute OpenSource Variante zur Verfügung steht. Das sieht wohl auch Adobe so und bündelt die ColdFusion Builder Lizenz mit einer für den ebenfalls brandneuen Flex Builder 4.</p>
<p>Anwesend wird auch wieder Claude Englebert von Adobe sein, welcher Fragen zu ColdFusion und dem Builder beantworten wird.</p><div class="addthis_toolbox addthis_default_style"><a href="http://www.addthis.com/bookmark.php?v=250&username=xa-4b5354282d4fbfdf" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_facebook"></a><a class="addthis_button_myspace"></a><a class="addthis_button_google"></a><a class="addthis_button_twitter"></a></div><script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4b53552355eca066"></script>
ColdFusion ORM sorting by composite propertiesurn:uuid:6CB42B56-9975-CCE0-8A33C2A121FC1B392010-03-17T03:03:04Z2011-04-05T05:04:06Z<p>Die Hibernate Integration in CF9 ist wirklich ein Meilenstein.
Objektorientierte Programmierung macht mit einer Pesistenzschicht bzw.
einem Data Mapper zu relationalen Datenbanken erst richtig Spass. Dabei
tauchen natürlich auch neue Fragestellungen auf. Notabene zu
oberflächlich einfachen Tasks wie: das zurückgespielte Array von
Objekten einer Hibernate-Abfrage zu sortieren.</p>Daniel Schmid
<p>How do I sort an hibernate object array to properties of composite object (pe persons with an address than sort by city). Finally I found the hibernate criteria- and order object which solve this problem in a very nice way.</p>
<hr />
<p>Die Hibernate Integration in CF9 ist wirklich ein Meilenstein. Objektorientierte Programmierung macht mit einer Pesistenzschicht bzw. einem Data Mapper zu relationalen Datenbanken erst richtig Spass. Dabei tauchen natürlich auch neue Fragestellungen auf. Notabene zu oberflächlich einfachen Tasks wie: das zurückgespielte Array von Objekten einer Hibernate-Abfrage zu sortieren:</p>
<p>Bei einfachen Objekten ist es dank dem CF-Wrapper lediglich ein Argument zum Sortieren zu übergeben. Auch bei Composite Objekten kann damit einfach nach einem Property des Parent-Objekt sortiert werden. Im Beispiel: eine Personen-Entity, deren ORM-Abfrage nach Nachnamen sortiert wird.</p>
<p><textarea class="cf" style="height: 248px; width: 698px; margin: 2px;" cols="50" rows="15" name="code">component hint="I'm an person class" output="false"
{
property name="person_id" type="uuid" ormtype="string" fieldtype="id" generator="uuid" hint="the key";
property name="forename" ormtype="string" type="string";
property name="surname" ormtype="string" type="string";
property name="phone" ormtype="string" type="string";
property name="mobile" ormtype="string" type="string";
property name="email" ormtype="string" type="string";
property name="messanger" ormtype="string" type="string";
property name="address" cfc="address" fieldtype="one-to-one" fkcolumn="person_address_id";
}
persons = entityLoad("person",{},"surname asc");</textarea></p>
<p>Das Personen-Objekt ist ein Composite mit einem Address-Objekt. Hier in einer einfachen 0ne-to-One Relation. Die Diskussion, wie sinnvoll 'One-to-One' Realtionen sind, lasse ich jetzt mal aussen vor. </p>
<p><textarea class="cf" style="margin-left: 2px; margin-right: 2px; width: 699px;" cols="50" rows="15" name="code">component hint="I'm an address class" output="false" persistent="true"
{
property name="address_id" type="uuid" ormtype="string" fieldtype="id" generator="uuid" hint="the key";
property name="street1" ormtype="string" type="string";
property name="street2" ormtype="string" type="string";
property name="zip" ormtype="string" type="string";
property name="city" ormtype="string" type="string";
}</textarea></p>
<p>Gerne würde man jetzt die Person nach der Stadt im Address-Objekt sortieren. Direkt geht das aber nicht. Hibernate bietet dazu jedoch die "query-criterias" an. Ein sehr mächtiges Feature, das sich lohnt eingehender zu studieren. <a href="http://docs.jboss.org/hibernate/core/3.3/reference/en/html/querycriteria.html">http://docs.jboss.org/hibernate/core/3.3/reference/en/html/querycriteria.html </a>.</p>
<p>Um nun die Person nach der Stadt zu sortieren, erzeugt man eine Hibernate Order-Objekt und fügt der Hibernatesession eine 'Criteria' hinzu. Wobei das "Criteria"-Objekt mit einer weiteren "Criteria" für Child-objekt 'Addresse' ergänzt wird. Die fertige Abfrage mit Sortierung nach Städten sieht dann so aus:</p>
<p><textarea class="cf" style="margin-left: 2px; margin-right: 2px; width: 693px;" cols="50" rows="15" name="code">order = createObject('java',"org.hibernate.criterion.Order");
criteria = ormGetSession().createCriteria('person');
criteria.createCriteria("address").addOrder(order.asc('city'));
arrayOfSortedPersonsByCity = criteria.list(); </textarea></p><div class="addthis_toolbox addthis_default_style"><a href="http://www.addthis.com/bookmark.php?v=250&username=xa-4b5354282d4fbfdf" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_facebook"></a><a class="addthis_button_myspace"></a><a class="addthis_button_google"></a><a class="addthis_button_twitter"></a></div><script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4b53552355eca066"></script>
Instanz Daten aus ColdFusion 9 ORM Entity auslesenurn:uuid:1B711243-BBD9-C370-5A42F4C79D5A130A2009-11-22T11:11:16Z2010-07-11T04:07:01Z<p>Wie so viele andere auch, war ich vor CF9 gewohnt in <span class="misspell">Datenbeans</span> eine "<span class="misspell">Instance</span>"-Struktur als <span class="misspell">Memento</span>-Speicher für die <span class="misspell">instanzierten</span> Daten eines Objekts aufzubauen. Die <span class="misspell">Instance</span>-Struktur ist sehr praktisch. Lässt sich doch mit einer Methode <span class="misspell">getMemento</span>() die aktuellen Eigenschaftwerte der Instanz zur Laufzeit auslesen. Das ist <span class="misspell">äusserst</span> hilfreich beim Debuggen oder auch um die Daten an einen <span class="misspell">AJAX</span>-<span class="misspell">Request</span> oder in eine Form zurückzuspielen.</p>
<p>Mit den Property-Metadaten lassen sich jedoch auch die Instanzwerte von ColdFusion 9 ORM Entities bequem als Struktur auslesen.</p>Daniel Schmid
<div><br /></div>
<div>Wie so viele andere auch, war ich vor CF9 gewohnt in <span class="misspell">Datenbeans</span> eine "<span class="misspell">Instance</span>"-Struktur als <span class="misspell">Memento</span>-Speicher für die <span class="misspell">instanzierten</span> Daten eines Objekts aufzubauen. Die <span class="misspell">Instance</span>-Struktur ist sehr praktisch. Lässt sich doch mit einer Methode <span class="misspell">getMemento</span>() die aktuellen Eigenschaftwerte der Instanz zur Laufzeit auslesen. Das ist <span class="misspell">äusserst</span> hilfreich beim Debuggen oder auch um die Daten an einen <span class="misspell">AJAX</span>-<span class="misspell">Request</span> oder in eine Form zurückzuspielen.</div>
<p>Beispiel vor CF9:<br /><textarea class="cf" cols="50" rows="15" name="code"><cfcomponent>
<cfset variables.instance = StructNew() />
<cffunction name="init" access="public" returntype="any" output="false">
<cfargument name="prop" default=""/>
<cfset setProp(arguments.prop)/>
<cfreturn this/>
</cffunction
<cffunction name="setProp" access="public" returntype="void" output="false">
<cfargument name="Prop" type="string" required="true" />
<cfset variables.instance.Prop = arguments.Prop />
</cffunction>
<cffunction name="getProp" access="public" returntype="string" output="false">
<cfreturn variables.instance.Prop />
</cffunction>
<cffunction name="getMemento" output="false" access="public">
<cfreturn instance>
</cffunction>
</cfcomponet</textarea> </p>
<div>In CF9 haben wir ja jetzt implizite <span class="misspell">Getter</span>/<span class="misspell">Setter</span>.
Die müssen also nicht mehr extra geschrieben werden, was kaum jemand
beklagen dürfte, zumal sie ja immer auch überschrieben werden können.
Gespeichert werden die <span class="misspell">Eigenschaftswerte</span> zur Laufzeit aber im Variables-<span class="misspell">Scope</span>. Das direkte Auslesen der gesamte Instanzdaten wird dadurch erschwert. Schöne wäre IMHO, Instanzdaten hätten einem eignen <span class="misspell">Scope</span>, aber der <span class="misspell">This</span>-<span class="misspell">Scope</span> bezeichnet in <span class="misspell">CFML</span> leider eine ganz andere Funktion als in Java.<br /><br />Trotzdem lassen sich aber mit den <span class="misspell">Metadaten</span> der <span class="misspell">Properties</span> die Laufzeitdaten auslesen. Auf "Adobe <span class="misspell">Cookbook</span>" findet sich denn auch bereits eine Funktion, die genau dies macht:</div>
<div><a href="http://cookbooks.adobe.com/post_A_getMemento___method_when_using_implicit_getter_a-16334.html" target="_blank">http://cookbooks.adobe.com/post_A_getMemento___method_when_using_implicit_getter_a-16334.html</a></div>
<div><br /></div>
<div>So
weit so gut, doch was passiert, wenn im Klassendesign Vererbung benutzt
wird? Obige Funktion berücksichtigt das nicht. Da erinnerte ich mich doch an meine noch mit CF6 geschriebene <span class="misspell">Activce</span>-<span class="misspell">Record</span> <span class="misspell">Persistancekomponente</span>. Auch dort lese ich die Laufzeitwerte über die <span class="misspell">Metadaten</span> des <<span class="misspell">cfproperty</span>> Tags aus - aber rekursive, um auch die vererbten Eigenschaften auszulesen. Also ab ins eigene Code-Depot... </div>
<div><br /></div>
<div>Unten nun der für CF9 angepasste Code. Er liesst <span class="misspell">Instance</span>-Daten auch aus vererbten Objekten aus. Um die Methode übergreifend in allen <span class="misspell">Entity</span>-Objekten zu verwenden, erstellte ich eine Abstrakte Klassen, von der sich alle <span class="misspell">Entities</span> ableiten.</div>
<div><span class="misspell"></span><textarea class="cf" cols="50" rows="15" name="code">component hint="I am an abstract class for entities" output="false"
{
/*======================================================================================
Purpose: Abstract Entity
Created By: Daniel Schmid
History: 18. Nov. 2009
----------------------------------------------------------------------------------------
I am a abstract class and should never be instantiated directly, only extended.
========================================================================================*/
/**
* @hint get the properties from a specific meta data or component instance (by default, this)
* @output false
*/
public struct function getProperties(
required struct metaDataToCheck = getMetaData(this)
)
{
var i = -1;
var theseProperties = structnew();
var thisProperty = "";
var md = arguments.metaDataToCheck;
//if this metaData has properties, loop through them, populating a struct of properties
if(structKeyExists(md,"properties")){
for(i = 1; i LTE arrayLen(md.properties); i = i + 1){
thisProperty = md.properties[i];
theseProperties[thisProperty.name] = thisProperty;
}
}
return theseProperties;
}
/**
* @hint a method for traversing the metaData to get properties up the tree, by default, looks at this
* @output false
*/
public struct function getAllProperties(
required struct metaDataToCheck = getMetaData(this)
)
{
var ii = 1;
var allProperties = structnew();
var md = getMetaData(arguments.metaDataToCheck);
//if this component is extended, recurse up the tree
if(structKeyExists(arguments.metaDataToCheck,"extends")){
allProperties = getAllProperties(arguments.metaDataToCheck.extends);
}
//append these properties to allProperties; allow overwrite to allow children properties to over-ride parents
structAppend(allProperties,getProperties(arguments.metaDataToCheck),true);
return allProperties;
}
public struct function getMemento()
{
var instance = structNew();
for(key in getAllProperties()){
if(structKeyExists(variables,key))
instance[key] = variables[key];
}
return instance;
}
/**
* @hint return properties structures in an array
* @output false
*/
public array function getAllPropertiesArray()
{
var allProps = getAllProperties();
var aProperties = arraynew(1);
for(key in allProps){
prop = allProps[key];
arrayappend(aProperties,prop);
}
return aProperties;
}
}</textarea> <br /></div><div class="addthis_toolbox addthis_default_style"><a href="http://www.addthis.com/bookmark.php?v=250&username=xa-4b5354282d4fbfdf" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_facebook"></a><a class="addthis_button_myspace"></a><a class="addthis_button_google"></a><a class="addthis_button_twitter"></a></div><script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4b53552355eca066"></script>
FCKEditor Flash File Upload invalid file typeurn:uuid:EC1647D4-044C-EB5F-5ECF3C2180A84E2A2009-09-24T02:09:20Z2010-03-26T05:03:55Z<p>Im FCKeditor 2.5 gibt es einen kleinen Bug, der den Upload von
Flash/SWF-Files über den CFML-Connector verhindert. Wer also trotz
korrekt konfiguriertem Connector
(fckeditor/editor/filemanager/connectors/cfm/config.cfm) keine
Flash-Files uploaden kann und die Fehlermeldung "invalid file type"
erhält, braucht ne kleien Modifikation im File cf_util.cfm.</p>Daniel Schmid
<p>Im FCKeditor 2.5 gibt es einen kleinen Bug, der den Upload von Flash/SWF-Files über den CFML-Connector verhindert. Wer also trotz korrekt konfiguriertem Connector (fckeditor/editor/filemanager/connectors/cfm/config.cfm) keine Flash-Files uploaden kann und die Fehlermeldung "invalid file type" erhält, braucht ne kleien Modifikation im File cf_util.cfm.</p>
<p>Dort auf Line 63 in der Funktion isImageValid "swf" aus der List entfernen. Neu muss es heissen:</p>
<p><textarea cols="50" rows="15" name="code" class="cf"><cfif not ListFindNoCase("gif,jpeg,jpg,png,psd,bmp,iff,tiff,tif,swc,jpc,jp2,jpx,jb2,xmb,wbmp", ARGUMENTS.extension)>
<cfreturn true>
</cfif></textarea></p><div class="addthis_toolbox addthis_default_style"><a href="http://www.addthis.com/bookmark.php?v=250&username=xa-4b5354282d4fbfdf" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_facebook"></a><a class="addthis_button_myspace"></a><a class="addthis_button_google"></a><a class="addthis_button_twitter"></a></div><script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4b53552355eca066"></script>
Scotch-On-The-Rocks in Zürichurn:uuid:03E79B87-C470-43AC-44E84F74BCC657CD2009-08-10T12:08:36Z2009-08-11T11:08:59Z<p>Die <a href="http://www.scotch-on-the-rocks.co.uk" target="_blank">Scotch-On-The-Rocks</a> Tour mit namhaften Speakern von Adobe und dem Europäischen ColdFusion Umfeld hat macht dieses Jahr Halt in Zürich.</p>Daniel Schmid
<p>Die <a href="http://www.scotch-on-the-rocks.co.uk" target="_blank">Scotch-On-The-Rocks</a> Tour mit namhaften Speakern von Adobe und dem Europäischen ColdFusion Umfeld hat macht dieses Jahr Halt in Zürich. Nachdem man in den vorhergehenden Jahren jeweils eine 2-3 tägige Konferenz in Edinburgh durchführte, gemäss Insidern mit legendären, bierseligen "after-conference" Meetings, entschloss man sich aufgrund der aktuell knappen Reisebudgets mit der Konferenz selber auf Tour zu gehen. Man darf annehmen, dass Adobe dafür die entsprechenden finanziellen Mittel beisteuerte. Ein Indiz: Die Konferenz ist jetzt für alle Teilnehmer kostenlos. Anmeldung mit dem Link unten</p>
<p><a href="http://sotr09zurich.eventbrite.com/" target="_blank">http://sotr09zurich.eventbrite.com</a></p><div class="addthis_toolbox addthis_default_style"><a href="http://www.addthis.com/bookmark.php?v=250&username=xa-4b5354282d4fbfdf" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_facebook"></a><a class="addthis_button_myspace"></a><a class="addthis_button_google"></a><a class="addthis_button_twitter"></a></div><script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4b53552355eca066"></script>
Subversion 1.6.x in ColdFusion Builderurn:uuid:AC800AE6-9362-7D33-3266C1E9046B2D5C2009-07-24T01:07:55Z2010-04-21T07:04:28Z<p>Für alle die sich - wie ich - schon rumärgerten bei Installation von Subeclipse im ColdFusion Builder eine kleine Anleitung. Die <a href="http://help.adobe.com/en_US/ColdFusionBuilder/Using/WSf01dbd23413dda0e3d098bb81213a52da18-7fff.html" target="_blank">Help-Sektion von Adobe</a>
ist da leider sehr unvollständig und empfiehlt erst noch die völlig
veraltete Subeclipse Verison 1.0.x, die bei vielen SVN-Hosts gar nicht
mehr verwendet werden kann.</p>Daniel Schmid
<p>Für alle die sich - wie ich - schon rumärgerten bei Installation von Subeclipse im ColdFusion Builder eine kleine Anleitung. Die <a href="http://help.adobe.com/en_US/ColdFusionBuilder/Using/WSf01dbd23413dda0e3d098bb81213a52da18-7fff.html" target="_blank">Help-Sektion von Adobe</a> ist da leider sehr unvollständig und empfiehlt erst noch die völlig veraltete Subeclipse Verison 1.0.x, die bei vielen SVN-Hosts gar nicht mehr verwendet werden kann.</p>
<p>Das Vorgehen für Subeclipse 1.6.x:</p>
<ul>
<li>Als erstes (!) Mylyn in ColdFusion Builder nachinstallieren dazu unter "Help -- Software Updates" die neue Remote Site "http://download.eclipse.org/tools/mylyn/update/e3.4" eintragen.</li>
<li>Wer den Connector für Trac oder JIRA benötig sollte noch als weitere Site "http://download.eclipse.org/tools/mylyn/update/extras/" hinzufügen.</li>
<li>Mylyn Installieren.</li>
<li>Nachdem nun Mylyn integriert ist funktioniert nun auch die Installation der neusten, nur zu empfehlenden Subeclipse Version 1.6.x . Dazu als Site "http://subclipse.tigris.org/update_1.6.x" hinzufügen und installieren. </li>
<li>ColdFusion Builder neu starten, das wars ;-)</li>
</ul>
<p>Update für ColdFusion Builder Beta 3: Vor der Installation von Mylyn unbedingt auch die Galileo Repo einbinden --> <span style="white-space: pre-wrap;">http://download.eclipse.org/releases/galileo</span></p><div class="addthis_toolbox addthis_default_style"><a href="http://www.addthis.com/bookmark.php?v=250&username=xa-4b5354282d4fbfdf" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_facebook"></a><a class="addthis_button_myspace"></a><a class="addthis_button_google"></a><a class="addthis_button_twitter"></a></div><script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4b53552355eca066"></script>
Google Notebook Extension Firefox 3.5urn:uuid:A7EBCDFA-FDE1-29DC-C65BC54F8DCE99572009-07-16T11:07:20Z2009-07-24T12:07:57Z<p>Google Notebook ist seit Jahren eines meiner nützlichsten Tools. Inzwischen ist es sowas wie eine persönliche Knowlegebase geworden. Für Recherchen zu bestimmten Themen kann ich nach wie vor nichts besseres vorstellen. Ein wichtiges</p>Daniel Schmid
<p>Google Notebook ist seit Jahren eines meiner nützlichsten Tools. Inzwischen ist es sowas wie eine persönliche Knowlegebase geworden. Für Recherchen zu bestimmten Themen kann ich nach wie vor nichts besseres vorstellen. Ein wichtiges Element war schon immer die Firefox Extension: Einfach Textpassagen oder auch ganze Bereich einer Seite markieren, im ContextMenu "Notiz erstellen" anklicken und schon ist der markierte Bereicht im Notizbuch.</p>
<p>Leider stellte Google die Weiterentwicklung des Dienstes inklusive der Firefox Erweiterung anfangs Jahr ein . Auch werden inzwischen keine Neuanmeldungen mehr akzeptiert.</p>
<p>Will am die Erweiterung auch unter Firefox 3.5 nutzen, hilft eine kleiner Trick:</p>
<ul>
<li>Extension <a href="http://dl.google.com/firefox/google-notebook.xpi" target="_blank">downloaden</a></li>
<li>Mit <a href="http://www.7-zip.org/">7-zip</a> und dem Befehl "open archiv" öffen, aber nicht entpacken</li>
<li>Im 7-zip Fenster install.rdf auswählen und mit Rechtsklick "edit" zum Bearbeiten öffen.</li>
<li>Im File den Wert von "<em:maxVersion>3.0.*</em:maxVersion> auf 3.5 erhöhen.</li>
<li>Speichern und schliessen und die Frage von 7-zip, ob das Archiv aktualisiert werden soll bejahen.</li>
<li>Das geänderte Paket "google-notebook.xpi" Doppeklicken oder aus Firefox installieren.</li>
</ul><div class="addthis_toolbox addthis_default_style"><a href="http://www.addthis.com/bookmark.php?v=250&username=xa-4b5354282d4fbfdf" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_facebook"></a><a class="addthis_button_myspace"></a><a class="addthis_button_google"></a><a class="addthis_button_twitter"></a></div><script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4b53552355eca066"></script>
Erfolgreicher mit individueller Shopprogrammierungurn:uuid:A7EBCD4E-BD09-BD10-098B79C891C21F4B2009-06-29T11:06:02Z2009-07-23T11:07:28Z<p>Standardshopsysteme wie Magento oder OSCommerce sind ausgesprochen beliebt, bieten sie doch eine breite Palette an Standardfunktionen quasi kostenlos an. Dass dann für die Installation und Konfiguration einiges KnowHow benötigt wird und</p>Daniel Schmid
<p>Standardshopsysteme wie Magento oder OSCommerce sind ausgesprochen beliebt, bieten sie doch eine breite Palette an Standardfunktionen quasi kostenlos an. Dass dann für die Installation und Konfiguration einiges KnowHow benötigt wird und die entsprechende Spezialisten ihr Honorar beanspruchen, realtiviert dann die Kostenersparnis aber merklich. Doch zweifellos ermöglichen Sie die schnelle Umsetzung eines Shopsystems und haben ihre Berechtigung.</p>
<p>Entscheidend ist die Frage, ob ein Standardshopsystem dann auch wirklich den Geschäftserfolg bringt oder ob nicht eine individuelle, den Bedürfnissen angepasste Shopprogrammierung längerfristig höheren Umsatz und bessere Betriebsergebisse erzielt.</p>
<p>Genau diese Frage untersuchte die Fachhochschule Nordwestschweiz FHNW und mit Untestüzung der Datatrans AG. Die Ergebnisse der Studie sind auf der <a href="http://www.e-commerce-report.ch/CMS4.ASPX?NID=23&CMD=SEND">E-Commerce Plattform </a>publiziert.</p>
<p>Das erstaunliche Resultat: Sieben von 19 befragten erfolgreichen schweizerischen Onlineshops wie Digitec setzen auf individuelle Lösungen und bezeichneten in der Studie "die spezifisch ausdifferenzierte Gestaltung und laufende Weiterentwicklung ihrer eingesetzten IT-Systeme im Zusammenspiel mit den Geschäftsprozessen als Kernkompetenz."</p>
<p>Dazu noch ein Zitat aus der Studie von von Marcel Dobler, Digitec:<br />
<br />
?Mit unseren selbst entwickelten ITSystemen sind wir effizienz- und know-howmässig vielen anderen Firmen überlegen. Jeder einzelne Prozess wurde auf uns zugeschnitten. Durch die automatisierten Abläufe benötigen wir weniger Personal und daraus resultiert dann der Preisvorteil für<br />
den Kunden.?</p><div class="addthis_toolbox addthis_default_style"><a href="http://www.addthis.com/bookmark.php?v=250&username=xa-4b5354282d4fbfdf" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_facebook"></a><a class="addthis_button_myspace"></a><a class="addthis_button_google"></a><a class="addthis_button_twitter"></a></div><script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4b53552355eca066"></script>
Railo 3.1 wird OpenSourceurn:uuid:A7EBCE0A-92C7-8D3E-7CF4D029BF3E3FC02008-06-16T06:06:07Z2008-06-16T06:06:07Z<p>Da tut sich richtig was in der CF-Community: Nachdem an der cf.Objective() mit Open BlueDragon offiziell lanciert wurde, war an der Scotch on the Rocks zu vernehmen, dass nun auch Railo ab Version 3.1 im LGPL Lizenmodel für die Professional Daniel Schmid
<p>Da tut sich richtig was in der CF-Community: Nachdem an der cf.Objective() mit Open BlueDragon offiziell lanciert wurde, war an der Scotch on the Rocks zu vernehmen, dass nun auch Railo ab Version 3.1 im LGPL Lizenmodel für die Professional Version angeboten wird. Die GNU Lesser General Public License ist zudem erst noch eine der 'offensten' OpenSource Lizenmodellen überhaupt.</p>
<p>Doch damit nicht genugt. Railo ist ab Version 3.1 Teil der JBoss Community und wird als JBoss Modul zum Download aufgeführt.</p>
<p>Das Ziel von Railo und JBoss scheint klar. CFML soll als RAID Tool der Java Gemeinde schmackhaft gemacht werden. Gerade Web-Applikation sind in Java immer noch unverhältnismässig aufwendig. Mit CFML als mächtige Tag-Library steht eien Toolkit zur Verfügung, der die Erstellung und Wartung von WebApplikationen im Java-Umfeld massiv erleichtert. Railo und JBoss bilden die entsprechende integrierte kostenlos OpenSource Java Serverumgebung .</p>
<p>Whou, das sind ausserordentlich gute News für die CF Community und alle CFML-Entwickler. Als Teil von JBosst erhält CFML plötzlich einen ernstzunehmenden Platz im Java-Umfeld und wird gerade im Präsentationslayer ein Alternative zu Java Server Faces und anderen Java Frontend Technologien.</p>
<p>Railo 3.1 mit LGPL Lizenz soll in der zweiten jahreshälfte 2008 lanciert werden. Weiterhin kostenpflichtig sein wird die Enterprise Variante von Railo.</p><div class="addthis_toolbox addthis_default_style"><a href="http://www.addthis.com/bookmark.php?v=250&username=xa-4b5354282d4fbfdf" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_facebook"></a><a class="addthis_button_myspace"></a><a class="addthis_button_google"></a><a class="addthis_button_twitter"></a></div><script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4b53552355eca066"></script>
Open BlueDragon Steering Committeeurn:uuid:A7EBCD7D-B320-F949-BDFF0BD18A891BAE2008-04-16T04:04:49Z2008-04-16T04:04:49Z<p>Auf dem Blog von <a href="http://alan.blog-city.com/bluedragon_steering_committee.htm" name="Alan Williamson">Alan Williamson</a> finden sich Interviews mit den Members des Open Blue Dragon Steering Committee. Die Liste des Steering Committee istDaniel Schmid
<p>Auf dem Blog von <a href="http://alan.blog-city.com/bluedragon_steering_committee.htm" name="Alan Williamson">Alan Williamson</a> finden sich Interviews mit den Members des Open Blue Dragon Steering Committee. Die Liste des Steering Committee ist durchsetzt mit bekannten Namen aus der CF Community wie Andy Allan, Sean Corfiled oder Mark Drew, dem Entwickler von CFEclipse. Die hochkarätige Besetzung lässt einiges erhoffen. Die Interviews sind durchwegs spannend zu lesen.</p>
<ul>
<li><a href="http://alan.blog-city.com/interview_markdrew.htm">Open BlueDragon Steering Committee Interview Series - Mark Drew</a></li>
<li><a href="http://alan.blog-city.com/interview_seancorfield.htm">Open BlueDragon Steering Committee Interview Series - Sean Corfield</a></li>
<li><a href="http://alan.blog-city.com/interview_mikebrunt.htm">Open BlueDragon Steering Committee Interview Series - Mike Brunt</a></li>
<li><a href="http://alan.blog-city.com/interview_peteramiri.htm">Open BlueDragon Steering Committee Interview Series - Peter Amiri</a></li>
<li><a href="http://alan.blog-city.com/interview_andyallan.htm">Open BlueDragon Steering Committee Interview Series - Andy Allan</a></li>
</ul><div class="addthis_toolbox addthis_default_style"><a href="http://www.addthis.com/bookmark.php?v=250&username=xa-4b5354282d4fbfdf" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_facebook"></a><a class="addthis_button_myspace"></a><a class="addthis_button_google"></a><a class="addthis_button_twitter"></a></div><script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4b53552355eca066"></script>