The first step is to choose an integrated development environment for NaturalSpec. At the current project status you should be able to use NaturalSpec with Visual Studio 2008, Visual Studio 2010 beta 2, the freely available Visual Studio 2008 Shell or the free IDE SharpDevelop 3.0.
2. Installing the testing framework
As NaturalSpec uses NUnit as the underlying testing framework we have to install NUnit 2.5. I also recommend installing TestDriven.Net in order to get a Unit Test runner within Visual Studio.
3. Installing F#
NaturalSpec is completely written in F# and all specs will also be written in F#. This doesn’t imply you have to learn programming in F# but we need the F# compiler to get things working. You can download the F# October 2009 CTP from the Microsoft F# Developer Center.
This part is written for using Visual Studio 2008. If you use SharpDevelop or Visual Studio 2008 Shell this might differ in some detail.
Start Visual Studio 2008 and create a new F# class library.
Rename Module1.fs in ListSpec.fs and delete script.fsx from the project:
Create a folder “Lib” and unzip the NaturalSpec libraries into it.
Add NaturalSpec.dll and nunit.framework.dll as references to your project:
Copy the following code into ListSpec.fs:
module ListSpec
open NaturalSpec
[<Scenario>]
let When_removing_an_3_from_a_small_list_it_should_not_contain_3() =
Given [1;2;3;4;5]
|> When removing 3
|> It shouldn't contain 3
|> Verify
If you have TestDriven.Net installed you can run your spec via right click in the solution explorer:
If you don’t like the TestDriven.Net test runner you might want to use the NUnit GUI runner. The output should look like:
In addition the test runner should produce a Spec output file with the name “Spec.txt” within the same folder.
Vor kurzem fand in Frankfurt der Produktlaunch von Visual Studio 2008, SQL Server 2008 & Windows Server 2008 mit über 7500 Teilnehmern statt. Nun stehen Mitschnitte der Vorträge des Launch Events 2008 exklusiv auf den Webseiten einiger CLIP-Mitglieder zur Verfügung.
Der benötigte Silverlight Player kann über nachfolgenden Link heruntergeladen werden:
Vor einiger Zeit habe ich einen Testbericht zu ReSharper verfasst und einige kleinere Bugs bemängelt. JetBrains gibt jedoch öffentlichen Zugang zu seinen Nightly Builds bzw. zum Early Access Program. Dort gibt es fast jeden Tag einen frischen Build aus einer der folgenden Kategorien: Not tested, Works here, Stable, Not recommended
Neben jeden Build ist auch immer ein Verweis auf die im Build geschlossenen Tickets.
Ich habe jetzt die letzte Stable-Version installiert und die bemängelten Bugs sind offenbar behoben. Es gibt jetzt sogar eine Anzeige für den globalen Projektstatus.
ReSharper ist ein Plugin der Firma JetBrains für Visual Studio, das sich speziell die Produktivitätssteigerung beim Entwickeln als Ziel gesetzt hat. Besonderes Augenmerk wird dabei auf die Refactoring-Unterstüzung gelegt, also auf das nachträgliche Umgestalten von Quellcode. JetBrains wirbt damit das “intelligenteste AddIn für Visual Studio” entwickelt zu haben – doch was kann ReSharper wirklich?
Jens Hesse: Hallo Steffen. Du warst zum ersten Mal auf der „BASTA!“, wie kam es dazu?
Steffen Forkmann: Hallo Jens. Die „BASTA!“ Ist eine der wichtigsten deutschsprachigen Entwicklerkonferenzen, da ist es klar, dass man dort gern teilnehmen möchte. Dass es dieses Jahr sogar gleich als Sprecher geklappt hat, habe ich vor allem Torsten Weber zu verdanken. Er ist Leiter der .NET User Group in Leipzig und auch im Advisory Board der „BASTA! 2007“.
JH: Worüber hast Du gesprochen?
SF: Ich habe einen Einstiegsvortrag über die Programmierung in Microsoft Dynamics NAV gehalten und dabei versucht wesentliche Grundkonzepte in Navision zu vermitteln.
JH: Dynamics NAV (ehemals Navision) ist eine ERP Plattform aus dem Hause Microsoft. Was spricht aus deiner Sicht für den Einsatz von Dynamics NAV?
SF: Aus betriebswirtschaftlicher Sicht spricht eine ganze Menge dafür. Microsoft bietet hier ein vollständiges ERP-System, das alle grundlegenden Geschäftsprozesse schon vorimplementiert zur Verfügung stellt. Das bedeutet Partnerunternehmen können auf diese Grundprozesse aufbauen und brauchen nur ihr eigenes Branchenwissen zu implementieren. Alle buchungs- und steuerrelevanten Details sind ja schon da. Das bedeutet somit einen gewaltigen Entwicklungsvorsprung gegenüber einer komplett eigenen Lösung. Es ist für einen Entwickler schon schwierig genug die betriebswirtschaftlichen Interna seiner Branche zu verstehen, da muss man sich die Buchhaltung oder ähnliches nicht auch noch antun – zumal Navision dafür ein Zertifikat von Wirtschaftsprüfern hat. Allerdings bekommt man diesen Entwicklungsvorsprung nicht geschenkt. Neben den Lizenzkosten für Client und Standardobjekte fallen auch noch Lizenzkosten für Eigenentwicklungen an.
JH: Warst Du mit Deinem Vortrag / der Resonanz zufrieden?
SF: Da die „BASTA!“ eigentlich eine reine .NET-Veranstaltung ist, war ich mit den ca. 25 Zuhörern eigentlich ganz zufrieden, zumal auch einige attraktive Mainstream-Themen parallel liefen. Nachdem Vortrag kamen auch noch diverse Zuhörer zu mir und stellten einige Detailfragen. Unter anderem auch zur rudimentären Entwicklungsumgebung C/SIDE.
JH: Wie darf man das genau verstehen?
SF: In meinem Vortrag habe ich Dynamics NAV aus Entwicklersicht beschrieben. Mir war es wichtig auf der einen Seite den schon angesprochenen Entwicklungsvorsprung zu erkären, aber auf der anderen Seite habe ich auch auf diverse Probleme im Entwicklungsalltag hingewiesen. Die Entwicklungsumgebung C/SIDE ist eben schon einige Jahre alt und auf einer modernen Konferenz wie der „BASTA!“, wo u.a. auch Visual Studio der übernächsten Generation gezeigt wird, kommt eine Demo in C/SIDE manchen Teilnehmern schon wie Kulturschock vor. Da kann man noch so lange auf die Vorteile von NAV eingehen, wenn man einmal die Codeunit 80 aufmacht und eine Funktion zeigt, die über 36 Bildschirmseiten geht und nicht ein Kommentar zu sehen ist, dann wirkt das auch auf den härtesten Notepad-Hacker abstoßend.
JH: Verstehe. Wie geht es jetzt weiter? Wird man Dich öfter auf Entwicklerkonferenzen sehen?
SF: Na das hoffe ich doch. Schon im Frühjahr 2008 findet zum Beispiel die BASTA! Spring unter dem Motto “Best Practices” statt. Da werde ich mich sicher mit dem einen oder anderen Thema bewerben. Als nächstes liegt jedoch erstmal eine Dozententätigkeit bei der Berufsakademie Heidenheim an. Dort werde ich zwei Vorlesungen über Dynamics Nav halten.
JH: Was hältst Du von der Konferenz im Allgemeinen, und wie beurteilst Du die Ihre Stellung im Vergleich zu kostenlosen Konferenzen wie beispielsweise der ICE in Lingen?
SF: Also die BASTA! ist natürlich nur schwer mit der ICE zu vergleichen. Die BASTA! ist aufgrund ihrer Größe natürlich wesentlich breiter besetzt, sowohl thematisch als auch personell. Mit 78 Speakern kann natürlich auch ein viel breiteres Spektrum geboten werden. Allerdings fällt die Wahl bei teilweise 8 parallelen Sessions auch schwerer. Als Zuhörer hat man immer das Gefühl einen wichtigen Teil zu verpassen. Die ICE hingegen ist wesentlich persönlicher und somit der Erfahrungsaustausch auch etwas einfacher möglich. Besonders gut gefällt mir auch das Konzept der .NET User Group Leipzig. Dort werden halbjährlich mit dem .NET Summercamp bzw. dem .NET Wintercamp, auf dem ich auch schon sprechen konnte, sehr preiswerte .NET-Konferenzen angeboten. Dieses Jahr hat Torsten Weber sogar mit Daniel Fisher, Šenaj Lelic, Bernd Marquardt, Roland Weigelt, Ralf Westphal und Michael Willers die absolute .NET-Prominenz für das .NET Summercamp gewinnen können.
Durch die sogenannte “LiftOff Initiative” sollen Microsoft Partner in einem Trainingsprogramm an die Technologien rund ums Web 2.0 herangeführt werden. Schwerpunkt der Trainingsmaßnahme ist die Integration der Microsoft Webtechnologien (WPF/E, ASP.NET, AJAX), Web Services und Map Point, sowie Workflow Management.
Am 06.07.2007 findet ab 19:30 ein sehr interessantes Event in Leipzig statt. Roland Weigelt wird über die Entwicklung seines mehrfach ausgezeichneten Plugins GhostDoc berichten und einen Einblick in die Visual Studio Erweiterbarkeit geben. GhostDoc ist für mich neben ReSharper das wichtigste Plugin für Visual Studio überhaupt.
Der Vortragende wird folgende Features vorstellen:
Wie bereits berichtet hat CodeGear/Borland eine neue Entwicklungsumgebung für PHP heraus gebracht. Da ich früher sehr gern mit Delphi gearbeitet habe und eigentlich immer begeistert war, habe ich mir sofort eine Studentenversion für 99,- bestellt. Mein Ziel war es bei der Entwicklung meiner beiden WordPress-Plugins Counterize II und WP-Referencesmap etwas mehr Unterstützung durch eine IDE und einen Debugger zu erhalten. Gleich vorab: dieses Ziel kann Delphi for PHP leider nicht erfüllen.
Die Verpackung
Schon beim Öffnen der Verpackung habe ich mich gewundert. Früher gab es bei Delphi immer eine nette Box mit einigen kleinen Beilagen (wie z.B. einem Poster). Diesmal gab es jedoch nur eine einfache DVD-Hülle. Das Cover ist total verpixelt – die meisten privaten Raubkopien werden mit besseren Druckern gedruckt.
Die Installation
Die Installation der Delphiversion auf meinem Windows XP Rechner verlief absolut problemlos – einzig die zwingende Registrierung war etwas unangenehm.
Die ersten Eindrücke
Nach dem Starten zeigt sich Delphi for PHP mit einem leeren Formular und gewohnten Tools wie CodeExplorer, Toolbox und ObjectInspector. Delphi liefert auch eine große Palette von PHP-Controls in der kostenlos verfügbaren „VCL for PHP“ mit. Diese ist komplett in PHP 5 geschrieben und demnach wohl auch nicht abwärtskompatibel. Bis hierhin sieht alles ganz normal aus. Delphi unterteilt sich in die zwei Ansichten Designer und Code-Ansicht.
Code vs. Designer
Im Designmodus kann man Komponenten auf seinem Formular platzieren und im ObjektInspektor die Eigenschaften editieren. Delphi legt dafür im Hintergrund ein XML-File für das gesammte Webprojekt an, in dem alle Eigenschaften der Formularkomponenten (Höhe, Breite, Position, …) gespeichert werden. Zur Laufzeit wird dieses File aufgeparst und die Werte auf die Komponenten gesetzt. Bei meinen Test bekam ich jedoch schon nach ein paar Minuten die ersten Fehlermeldungen im Designer – dabei wollte ich nur ein TabSheet etwas nach rechts verschieben.
Passend dazu: Mens Slim Contrast Tee “Generation beta”
Da heute ja alles eine Beta ist.. » 17.90 EUR
Weitere Produkte gibt es im Shop.
Im Code-Editor kann man den PHP-Quellcode editieren. Bei einem Formular legt Delphi auch gleich etwas Quellcode mit an. Syntax-Highlighting und Code-Vervollständigung wird natürlich unterstützt. Man kann Breakpoints setzen und mit F9 das Programm auf dem Testwebserver starten.
Der Designer arbeitet streng mit der VCL und dem XML-File der Properties. Eigene alte Quelltextfragemente können nicht visualisiert werden. Somit kann ich den visuellen Designer nur für neue Projekte verwenden bzw. ich müsste meinen gesammten Code in VCL-Komponenten portieren.
Remote-Debugging
Nun wollte ich gleich richtig einsteigen, aber zu meinem Bedauern kann Delphi for PHP kein Remote-Debugging – was übrigens nirgends auf der CodeGear-Seite oder in der sehr knappen Hilfe beschrieben ist. An dieser Stelle brach für mich eine Welt zusammen. Delphi liefert zwar standardmäßig einen Entwicklungswebserver mit, ähnlich wie die Cassini-Version bei ASP.NET, aber Remote-Debugging wird (zur Zeit) nicht unterstützt. Schlimmer noch – der Assistent zum Exportieren des Webprojekts exportiert zwar neben dem eigenen Code nur den tatsächlich benutzten Teil der VCL, bietet jedoch keine Möglichkeit des FTP-Uploads. Ich meine selbst mit meinen PsPad kann ich Quelltexte remote editieren.
Somit müsste ich meinen gesamten WordPress-Blog (samt mySQL-Datenbank) nochmal auf meinem lokalen Entwicklungs-Rechner spiegeln und Änderungen manuell mit meinem FTP-Programm hochladen. Team-Entwicklung fällt damit wohl auch flach.
Datenbank-Anbindung
CodeGear liefert standardmäßig neben dem Entwicklungsserver noch eine Testversion von InterBase mit. Diese kann man für eigene Testzwecke nutzen – vor dem Deployment muss InterBase jedoch lizensiert werden. Was soll das denn? Da liefern die eine Datenbank mit und dann darf ich die nicht benutzen? Mal davon abgesehen, dass natürlich mySQL der eigentliche PHP-Partner ist.
Fazit
Delphi for PHP hat sich für mich leider als absoluter Fehlkauf erwiesen. CodeGear/Borland hat einfach von der Firma qadram das Qstudio genommen und einen schönen Delphi-Sticker draufgeklebt. Ich habe mich von dem guten Namen und der Möglichkeit PHP in einer IDE zu nutzen blenden lassen. Dabei ist der Designer noch nicht komplett bugfrei, Remote Debuging wird nicht unterstützt, die Hilfe ist sehr sehr kurz und die Sache mit InterBase ist wirklich eine Frechheit. Für mich hat Borland hier alle Sympathien verspielt. Das Programm ist noch lange nicht marktreif und den Namen Delphi hat es schon gar nicht verdient.
Nachdem ich mich ja schon eine ganze Zeit lang mit ASP.NET und Visual Studio beschäftigt habe, muss ich sagen: Das ist ein Unterschied wie Tag und Nacht. Für mich stellt sich nun die Frage: Wie bekomme ich mein Geld zurück – Software ist ja leider vom Umtausch ausgeschlossen.
Jetzt werde ich mir also doch die Eclipse-PHP-Versionen (wie z.B. PHPEclipse) ansehen müssen…