Mit cfDocument kommt man leider nicht weit auch nicht in der ColdFusion Version 9. Daher habe ich mir mal, zusammen mit dem Marco, die Programmierung etwas näher angeschaut und festgestellt das ColdFusion da natürlich auch nichts selbst macht, sondern einfach auf bestehende Java-Klassen zugreift. Und genau das haben wir auch gemacht.

Erfolgreich würde ich sagen. Man gibt nun einfach eine xhtml-Datei an und erhält ein fertiges PDF. Natürlich auch mit Kopf und Fusszeilen.

Das eigentlich tolle daran ist das man nun auch die Umbrüche als ganze Einheit (Schusterjungen oder orphans) mitbekommt.

Schön das es mit dem ORM langsam vorwärts geht (auch bei Railo). Bisher musste man immer eine Zeile pro Feld schreiben, was ziemlich mühsam ist.





Nun gibt es auch die Möglichkeit (bei Structs ab cf 8 üblich) das ganze in eine Zeile zusammen fassen zu können, bzw. als Struct zu übergeben.


Wie der Dan Vega in seinem Blog erwähnt. Danke schön für den Tip!

Als Structübergabe dann wie folgt



Das Programmierer sehr wohl fantasievoll sind, zeigt deren Schreibeweise. Ich selbst achte darauf das ich zb. Firmennamen immer so schreibe wie sie sich selbst schreiben.

Beim programmieren ist das leider nicht immer so einfach. Da kommt man dann schnell auf Begriffe wie SCREAMING CASES, was so viel wie GROSSBUCHSTABEN bedeutet. Den meisten Programmierer ist es aber gar nicht bewusst wie sehr eine GrossKleinschreibung den Lesefluss beeinflusst. Mann muss nicht mal die weRksTabeN VeRbuCHseLn um unleserlich zu wirken.

Unter Winddows ist man PascalCase gewohnt, also das schreiben des ersten Buchstabens als Grossbuchstabe und in der javaWelt eher das camelCase, also das Schreiben des ersten Buchstabens in kleinbuchstaben. Schwieriger finde ich dann das Schreiben dann in WIKICASE, was bedeutet das man mind 1 Wortkombination haben muss.

Persönlich finde ich es allerdings wichtiger das man als Programmierer sprechende Variablen schreibt und eben kein i oder so zum loopen nimmt, sondern myCategory oder so und myCategories wenn mehrere Elemente enthalten sind. Allerdings sollte man auch nicht übertreiben und alle Datenbanktabellen mit einem tbl-Prefix versehen oder alle Variabelen mit str als String zu deklarieren etc.

Manchmal praktisch finde ich die zusätzliche Trennung_derWorte_mit_Unterstrich, so kann ich mit ListFunktionen einfach auf bestimmte Teile der Variable zugreifen. Nur kann man solche Variablen in einer URL oft nicht so gut erkennen.

Eigentlich ziemlich hässlich finde ich die benennungvonvariableninreinen Kleinbuchstaben, hat allerdings den Vorteil das sie auch unter Linux immer funktionieren und auch in vielen Frameworks benutzt werden.

Alles geht in die Wolke und diesmal – sonst eher verschlafen was neue Technologien betrifft – ist sogar Microsoft gleich zu Begin mit im Boot.

Nachdem, glaub Amazon mit dem S3 das Ganze angezettelt hat, gibt es immer mehr Cloud-Firmen wie RackSpace. Und nun eben auch die Produkte von Microsoft, angefangen mit Windows und dem SQL Server. Schauen wir mal wie sich das so weiter entwickelt. Tönt auf jeden Fall sehr spannend.

Die Jungs von PIXELTEX haben sich bereits darauf spezialisiert und wie in einem früheren Blogeintrag erwähnt, auch schon das API für ColdFusion zugänglich gemacht.

Ich hab ja mal bei einem Interview der Infoweek mitgemacht, als es um Quereinsteiger ging – als Mitarbeiter.

Was dabei unbeachtet blieb, ist die Tasache, dass viele Chefs auch Quereinsteiger sind. Deren Programmierkenntnisse sind in der Regel veraltet und neue Technologien wie TaskTools, SVN, Eclipse etc. werden gar nicht erst versucht.

Dabei vergessen sie das man als Chef das gar nicht braucht. Mitarbeiter führen ist das was Chefs dann können sollten. Aber irgendwie ist das aus deren Sicht überhaupt nicht notwendig. Da werden dann reine Projektleiter eingestellt, statt Teamleiter benannt etc. Teamleitung ist schliesslich unnötig.

Das der GAP zwischen Programmierer und Chef schwierig ist, ist auch klar. Aber hey, wenn ich Chef sein will, sollte ich auch den Anspruch haben, es können zu wollen. Das wird einem als Programmierer ja auch nahe gelegt.

Leider haben die Chefs nicht mal dann das Problem auf dem Bildschirm, wenn die Mitarbeiter reihenweise kündigen. Das man nicht als Chef geboren wurde und etwas Talent dazu haben sollte ist klar, aber etwas Weiterbildung ist hier dringend angesagt.

Ich bin mir zwar noch nicht sicher auf welches Abenteuer ich mich da einlasse, aber es ist sehr verlockend!

Irgendwie frisch verliebt, habe mich heute für meine erste kleine Wolke 7 registriert und fand es suuuuper! Nicht nur dem schnellen und guten RackSpaceCloud-Support wegen, sondern auch vom Interface das sie einem bieten (hübsch, pratisch, einfach, schnell). Auch gibt es auf riaForge ein Rackspace Cloud Files CFC cfMosso-Tool vom Louis Brauer, mit dem man per API auf seinen Space (oder was wozu auch immer) zugreifen kann.

Hey, und natürlich gibt es auch ein iPhone App Cloud Mobile, dafür *hehe* Serveradmin beim Heimweg aus der Tram raus? Coooool!

Nach einer Registrierung wird darauf bestanden das man vom RackSpaceCloud-Support, zwecks Validierung, zurückgerufen wird. Ungewöhnlich, aber lässig. Man kann kann sich bei der Gelegenheit gleich alle Fragen von der Seele reden, bekommt kompetente Antwort und zum Schluss heisst es dann: „Welcome to the Cloud„!

Da gibt es komplette Cloud-„Server“s die man sich dann selbst aufbauen muss (vorerst noch nur *nix) oder fertige Cloud-Sites zum einrichten von Datenbanken (mySQL und msSQL), eMail-Accounts und Domains, sowie Cloud-Files bei denen man sich Container (wozu auch immer) mit entsprechenden Objekten anlegen kann.

Irgendwie komme ich mir vor wie einer der ersten Bewohner einer neuen Welt – mal schauen was ich von der alten mitnehmen kann. Auf jeden Fall kommt Railo mit! Soweit ich gehört habe nun auch endlich mit einer Installationsroutine…also bis später 😉

Achja, kostenlos ist das Ganze natürlich nicht, aber unter Umständen bekommt man einen Promo-Code, mit dem man dann sich für 25 Dollar (statt 100) monatlich eine Could-Site mieten kann 😉

Nachdem nun alles geplant ist. Das Produkt, eine Web-Applikation, in seine Features und Releases, sowie alle dazu norwendigen Tasks eingeteilt ist. Kann es auch schon mit den täglichen Meetings beginnen. Immer am gleichen Ort, immer zu gleicher Zeit und immer im stehen, damit es nicht zu gemütlich wird.

In der Regel sollte ein Scrum-Meeting max. 15 Minuten dauern und danach beendet oder notfalls abgebrochen werden. Jeder Teilnehmer des Scrum-Meetings muss sich zu folgenden 3 Themen äussern und das in einem bestimmten Zeitrahmen. Bei nur 3 Teilnehmer ist es noch lässig. Bei 15 Teilnehmer und einer Zeit von 15 Minuten, hat jeder logischer Weise nur 1 Minute Zeit die folgenden Fragen zu beantworten.

1. Was habe ich bisher erledigen können (prozentual)
2. Was mache ich morgen
3. Wo sehe ich evtl Probleme

Ist eine komplette Nikolausliste mit allem Wünschen (aus dem ersten Teil dieses Tutorials) erfasst und priorisiert worden. Kommt es nun darauf an, einen ordentlichen Zeit- und Aufgabenplan in Einklang zu bringen, bei dem mir (dann im dritten Teil) auch ausreichend Bier zur Verfügung gestellt wird.

Da die Wunschliste des Kunden (von welchen Anforderungen auch immer) nicht nur mit der Zeit gewachsen ist, sondern sich auch permanent verändert, ist es notwendig sich erst einmal eine Übersicht über den tatsächlichen Aufwand des Produktes bzw. dessen Auslieferung zu verschaffen.

Auch der Nikolaus kann nur max. 12 Rentiere vor seinen Schlitten spannen, daher muss sich der Kunde (mit dem Projektleiter) zusammen setzten und all die vielen grossen und kleinen Wünsche auf mehrer Auslieferungsschlitten bzw. Releases verpacken. Das Ergebnis dieser Meetings mit dem Kunden und dem Projekleiter sind also mehrere Auslieferungsreleases.

Zum Beispiel:
Die Wünsche (Features) 2,5,242,318,4 und 9 müsssen gleich im ersten Release zur Verfügung stehen.
Die Features 3,126,34,18,22,58, und 63 kommen dann in die Version 2 des Produktes.
Die Features … ins Release 3 … und so weiter…

Das Ergebnis ist eine gruppierte Liste – dem Release Backlog – in dem ganz klar drin steht, was in welchem Release gemacht werden soll bzw. enthalten sein muss. Dabei ist noch nicht definiert worden was das an Zeit und Geld kostet oder gar wann es fertig sein soll. Diese Dinge kommen erst im nächsten (Scrum-)Schritt und können sich aufgrund dessen dann auch wieder ändern. Also die Dinge wie Geld/Zeit/Aufwand die im 2 Schritt definiert werden, können den Release Backlog auch wieder ändern. Wünsche fallen aus dem Release Backlog raus weil sie zu lange dauern und/oder zu teuer werden oder aus Marketinggründen erst in die 2. Version (dem 2. Release) erscheinen sollen etc.

Zum Schluss kommt ein wesentlicher Teil hinzu, bei dem zum einen der Entwickler hinzu kommen und zum anderen der Kunde nicht mehr dabei sein muss. Meist möchte das der Kunde auch gar nicht, weil es viel zu technisch ist. Es geht nämlich darum, fest zu legen, wie lange ein Entwickler für ein bestimmtes Feature haben wird. Also wie lange der Entwickler dafür warschneinlich benötigt in Stunden. „Warscheinlich benötigt“ daher, weil man es in voraus ja nicht genau wissen kann und es daher eine reine Schätzung ist.

Von den sagen wir 20 Features die in eine Release gepackt werden sollen, wird also jedes einzelnen in Stunden Entwicklungszeit geschätzt.
Feature 4: 5 Stunden
Feature 2: 22 Stunden
Feature 3: 46h
Feature 8: 12h
Feature 13: 7h
etc. etc.
Die Reihenfolge spielt in diesem Fall keine Rolle, denn es sollen ja alle geschätzt werden.

Wie bereits erwähnt kann es sich dabei durchaus heraus stellen, das ein bestimmtes Feature entweder keinen Sinn mehr macht, zu teuer ist, oder aus anderen Gründen komplett rausfällt oder in ein späteres Release verschoben wird.

Wichtig dabei ist, das man immer nur ein Release Backlog anschaut. Es geht also immer nur um ein Release das geplant werden soll. Anfangs somit um das erste Release. Was mit dem 2. Release wird ist zu diessem Zeitpunkt noch völlig unwichtig.

Da ich mich ja immer mehr zu Apple hingezogen fühle, möchte ich mich auch vom MS SQL Server verabschieden. Nach allen Vor- und Nachteilen, bleibt da eigentlich nur noch mySQL übrig.

Diesen Black Friday habe ich zum einkaufen einer SQLyog-Lizenz genutzt – 50% Rabatt. Das Tool nutze ich schon eine Weile in der kostenlosen Community-Edition und hätte sie mir eh gekauft, daher war das eine gute Gelegenheit. Deren Aktion läuft übrigens noch bis 1. Dezember.

Bei Assembla gibt es ein FTP-Tool. Wie der Name schon vermuten lässt, kann man dort beliebige FTP-Server eintragen. Mit entsprechender Einstellung kann man dort sagen: „Sobald ich etwas per Eclipse ins SVN commite, soll ein Update To HEAD“ erfolgen.

Das heisst also das ich local entwicklen kann und beim nächsten gewünschten Commit, werden nicht nur (wie gehabt) meine Änderungen ins SVN-Repository geschrieben, sondern auch gleich im Anschluss zb. mein /trunk/* auf meinen Webserver per FTP übertragen. COOL!!!

Eine super Übersicht der wichtigsten Design Pattern (Entwurfsmuster) habe ich hier gefunden.

Einfach ausdrucken und an die Wand pinnen.

Wenn man nur Subversion, also ohne Bugtracking benötigt, ist springloops die erste Wahl. Einfach, kostenlos und vor allem inklusive Deployment. Also das kopieren des Codes aus dem Subversion auf einen oder mehrere Server.

Ein neues Framework für ColdFusion hat das Licht der Welt erblickt und kein geringerer als der Sean Corfield hat es sich ausgedacht.
Dabei natürlich nicht das Rad komplett neu erfunden, sondern alt bewährtes übernommen und einer extremen Verschlankungskur unterzogen.

Das Framework FW/1 ist wie ColdBox und mit Verlaub auch mein Casaclara auf Konventionen aufgebaut.

Die Besonderheit liegt darin das es sich lediglich um eine Datei framework.cfc handelt und die Application.cfc als Handler nutzt und nicht immer wieder in eigene CFC als extend=““ instanziert werden muss. Somit ist man völlig frei in der Handhabung seiner eigenen CFC. Natürlich wird auch ColdSpring unterstützt.

Die jeweils aktuellste Version zu downloaden ist immer im SVN.

Die Grungidee der logisch besseren Trennung von lokaler Entwicklungsstation und LiveServer habe ich vom Daniel Schmid.

Wann man also lokal auf einem Notebook entwickelt könnte man die jeweilige Applikation mit http://local.websitename.ch aufrufen. Auf einem liveServer wäre das dann einfach http://www.websitename.ch.
Mein Notebook heisst zb. Forelle, mein Server Leopard, die 2 Arbeitsstation im Büro Lupo etc da könnte man doch folgende Logik des Aufrufes nutzen und der Rest der Pfade bleibt dann immer gleich?

http://forelle.websitename.ch
http://leopard.websitename.ch
http://lupo.websitename.ch
http://test.websitename.ch
http://mobile.websitename.ch
http://www.websitename.ch

Idealerweise bräuchte man noch eine CFC die die entsprechenden Settings aus der jeweiligen config.ini liest? Und die jeweilige Hosts-Datei muss natürlich auch angepasst werden.

Mal etwas mehr als als Wikipedia. Speziell für die IT-Branche und noch gut erklärt.

Wusste gar nicht das es so blöd ist mit Gipsbein schlafen zu müssen.

Naja, der Vorteil ist, das man sich dann eben andernfalls Nachts hinsetzen und ColdFusion-Grafiken basteln kann, wobei das auf Dauer wohl auch nicht gut gehen wird. Hier mal eine die die Unterscheidung zwischen Java, ColdFusion, den Frameworks und den PugIns für Eclipse aufzeigen sollen.

Auch Angsthasen dürfen weiterhin anonym kommentieren, schliesslich behalte ich mir nicht das Recht vor allwissend zu sein….ausser manchmal 😉