Dienstag, Juli 31, 2007

Neues Eisen

Python und Ruby sind seit Anfang der 90er Jahre als Programmiersprachen verfügbar. Das diese jedoch nicht zum alten Eisen gehören belegt sicher die Tatsache, dass Microsoft die Palette der .NET-Sprachen um diese beiden dynamischen Sprachen erweitert hat. Neben IronPython gibt es nun auch mit IronRuby die zweite Impelmentierung einer dynamischen Scriptsprache für's .NET CLR bzw. der neuen Dynamic Language Runtime (DLR). IronRuby ähnelt JRuby für die Java VM und IronRuby wird wohl bis Ende des Jahres bei CodePlex unter der BSD-ähnlichen Lizenz Microsoft Permissive Licence veröffentlicht sein. Bis dahin erhalten Interessierte mit dem pragmatischen Programmierfüherer Programming Ruby eine gute Einführung. Die Dynamic Language Runtime (DLR) fügt der Common Language Runtime (CLR) von .NET einige wenige, aber wichtige Merkmale hinzu, um diese für die Verwendung und die Entwicklung von dynamischen Sprachen zu optimieren bzw. zu erleichtern. Konkret umfassen diese Erweiterungen ein dynamisches Typsystem und ein standardisiertes Hosting Modell. Die DLR wird in Zukunft von den vier Sprachen JavaScript (EcmaScript 3.0), Python, Ruby und Visual Basic unterstützt werden. Versionen von JavaScript und Python sind schon jetzt Bestandteil von Silverlight.

Montag, Juli 30, 2007

Im Westen geht die Sonne unter

Und auf dem Balkon meiner Wohnung scheint von Morgens bis zum frühen Nachmittag die Sonne. So sieht man beim Sonnenuntergang dann oft schöne Reflektionen und interessante Kontraste!

LINQ: Csv To Xml

Wie kann man eigentlich mit LINQ schnell mal den Inhalt einer CSV-Datei in eine XML-Datei transferieren. Wie nachstehende Abbildung zeigt, ist dies nicht so schwierig! Jedoch muss man ein wenig überlegen, wie man bei dem Select-Kommandos die erste Zeile überliest. Als Lösung habe ich hier eine Outer-Variable gewählt, die - wie bei einer Outer-Variablen üblich - außerhalb des LINQ-Statements (bzw. einer Lambda-Expression = anonymen Methode) deklariert und mit 0 initialisert wird (int lineCounter = 0;). Mit einer Where-Klausel wird dann innerhalb des Statements geprüft ob lineCounter++ > 0 ist und schon wird die erste Zeile übersprungen.

Samstag, Juli 28, 2007

iPhone in meinen Händen

Heute war ich bei Gravis, weil eine Freundin sich ein MacBook kaufen möchte und wie der Zufall so spielt, hatten sie das erste Mal ein iPhone zur Vorführung bereit. Diese Gelegenheit habe ich mir nicht nehmen lassen, da der Laden fast leer war und der freundliche Verkäufer mir das Handy für einen kurzer Test sogar übergab. Und ich muss schon ehrlich sagen, dass das Handling dieses attraktiven Winzling extrem beeindruckend war. Wenn dies nicht der Anfang einer neuen, langen Freundschaft war ...

Orcas Beta II

Nur noch kanpp 30 Minuten bis zum Ende des Downloads der Orcas Beta II. Ich habe mich, weil ich z.Z. auch mit dem VS Team System 2005 arbeite für dessen Nachfolger entschieden. Es wird sicherlich recht interessant herauszufinden, welche Features sich im TS verbessert haben bzw. neu hinzugekommen sind nachdem ich schon viele Schritte mit der Beta 1 von Orcas gemacht habe. Einen guten Einstieg in die einfache Installation der Beta II von Orcas bietet Scott Hanselman.

Donnerstag, Juli 26, 2007

Tool zur Optimierung der Freizeit

Jedem .NET-Programmierer, der seine (Frei-)Zeit gerne auf dem Sofa vorm Fernseher, der Stereoanlage oder Spielkonsole verbringt und für die Qualität der notwendigen Geräte ordentlich investiert hat, empfehle ich das Visual Studio Add-In ReSharper. Zugegeben dieses Tool ist nicht kostenfrei. Jedoch weit preiswerter als die meiste Unterhaltungselektronik. Und durch den sinnvollen Einsatz dieses Tools kann leicht mehr Zeit für die Freizeit unter dem Strich herausspringen.

LINQ Where mit .NET 2.0

Mit LINQ ist es ab der kommenden Version 3.5 des .NET Frameworks möglich eine einheitliche Abfragesprache für alle IEnumerables zu verwenden. Diese Query Language ähnelt dem bekannten SQL und enthält auch ein Where-Kommando, um aus einer Collection alle die Elemente auszuwählen, die einer Bedingung entsprechen. Ein solches Where-Kommando ist auch leicht mit Hilfe von Generics und anonymen Methoden (C#) ab .NET 2.0 zu erstellen. Mittels des folgenden Code-Schnipsels wird die Liste customerList mittels einer anonymen Methode auf Elemente überprüft, deren Eigenschaft Surname mit der Zeichenkette „Muster“ beginnt.

 IEnumerable<Customer> names =
   EnumerableEnhancement.Where(customerList,
                               delegate(Customer c)
                               {
                                 return c.Surname.StartsWith("Muster");
                               });
Die Methode selbst kann wie folgt implementiert werden:

        public static IEnumerable<T> Where<T>(IEnumerable<T> items, Predicate<T> predicate)
        {
            List<T> list = new List<T>();
            IEnumerator<T> enumerator = items.GetEnumerator();
            while (enumerator.MoveNext())
            {
                if (predicate(enumerator.Current))
                    list.Add(enumerator.Current);
            }
            return list;
        }

Der als Parameter verwendete Delegate Predicate<T> ist als delegate bool Predicate<T> (T obj) in System deklariert. Die Implementierung dieses Delegates definiert einen Satz von Kriterien und bestimmt, ob das übergebene Objekt jene Kriterien erfüllt. Falls die Kriterien erfüllt sind wird das Objekt der Liste, die zurückgegeben wird, hinzugefügt.

Beutzer von VB.NET können dies beinah auch so machen. Jedoch gibt es bei VB.NET keine anonymen Methoden. Aus diesem Grund dürfen VB.NET eine extra Methode implementieren, die der Signatur des Delegates Predicate<T> entspricht. Ob dies in VB.NET wirklich so sinnvoll ist, bezweifele ich, da mittels einer Anonymer Methoden wie in C# mehr Möglichkeiten zur Verfügung stehen.

Montag, Juni 18, 2007

Architektur mit .NET

Einen guten Überblick und Einstieg in Architektur mit .NET bietet Skycrapr.
Bemerkenswert ist auch das englischsprachige Skyscrapr Archipedia auf der gleichen Site.

Sonntag, Mai 20, 2007

Codeerzeugung zur Laufzeit

Beim letzten TechTalk in Frankfurt mit Dirk Primbs im Mai 2007 gab es auch einige Bespiele für die Codeerzeugung zur Laufzeit. Dieses Thema wurde von Dirk anhand von Beispielen sehr gut vorgestellt, jedoch stieß diese Art der Programmierung bei nicht wenigen Teilnehmern auf Unverständnis. Warum soll man auch Code dynamisch zu Laufzeit erzeugen? Einen guten Einstieg in dieses wichtige und interessante Thema bietet Ralf Westphal in seinem Artikel Codeerzeugung zur Laufzeit aus dem Objektspektrum.

Na, dann Prost!

Interessanterweise kann man in den Attributen eines Objekts (z.B. einer Person) im Active Directory auch das Lieblingsgetränk speichern.
Na, dann Prost!

Freitag, März 16, 2007

Blick vom Balkon in Fankfurt

Von Zeit zu Zeit sieht ganz interessante Wetterphänomene von meinem Balkon und damit auch vom Fenster an meinen Computerarbeitsplatz in der Frankfurter Innenstadt (Westend).

Hier drei Beispiele vom März 2007.

BASTA 2007

Auf der BASTA!2007 habe ich wieder einmal die Gelegenheit genutzt mit einigen interessanten Leuten über .NET zu diskutieren.

Donnerstag, März 15, 2007

Leicht verständliches Beispiel der WPF

Eins der Bespiele der Windows Presentation Foundation, welches wohl jedem leicht verständlich die Leistungskraft dieser Technologie zeigt, ist wohl Color Swatch. Mit dieser sehr einfachen Applikation kann man die Einrichtungeines Badzimmers, also Wände, Fensterrahmen, Badwanne, etc, anhand von Farbvorlagen neu einfärben.
So werden wohl in Zukunft die Kataloge im Internet aussehen.

Montag, Februar 12, 2007

G h o s t D o c

Roland Weigelt's GhostDoc ist ein echt feines Werkzeug, welches sich in VS 2005 einklinkt, um Xml-Dokumentationen´mit weniger Aufwand erstellen zu können.
Von Haus aus unterstützt es eigentlich nur C+#! Man kann dieses Tool jedoch auch für die XML-Dokumenation in Visual Basic.NET verwenden. Dafür ist es jedoch eigentlich (noch) nicht gedacht und man muß aus diesem Grund die Unterstützung für VB.NET extra aktivieren.
Alles in Allem ein großartiges Tool zum Dokumentieren.

Sonntag, Februar 04, 2007

.NET 3.0 kompakt

Nach dem .NET kompakt von Ralf Westphal von 2001 ist von Ralf in Zusammenarbeit mit Christian Weyer nun .NET 3.0 kompakt erschienen.
Dieses kleine, handlich Meisterwerk ist jedem empfohlen, der kurz, prägnant und leicht verständlich in die Features von C# 2.0, VB 8, WF, WCF, WPF & Co.
Dieses preiswerte Buch macht tatsächlich dort weiter, wo .NET kompakt aufgehört hat.

Dienstag, Januar 02, 2007

Covarianz & Contravarianz

Zum meinem grossen Schrecken mußte ich gerade feststellen, daß VB.NET nicht wie C# Covarianz und Contravarianz in Delegates unterstützt.
In .C# 1.x und immer noch in VB.NET muss aufgrund von Invarianz eine Methode mit der Signatur eines zugehörigen Delegates exakt zusammenpassen. Mit der Version von 2.0 unterstützt C# auch Contravarianz bei Paramtertypen und Covarianz bei Rückgabetypen. Somit kann man Delegates mit Methoden verwenden, deren Parameter in der in der Vererbungshierachie vor den zugehörigen Typen kommen bzw. mit einer Methode dessen Rückgabetyp abgeleitet vom Rückgabetyp des Delegate ist. Das finde ich gar nicht so lustig, da dann viel mehr Type Casts im VB.NET Code eingefügt werden müssen als in C#-Code. C# geht da wohl schon viel konsequenter in Version 2.0 des .NET Framework den Weg einer dynamischen Sprache als VB.NET. Und damit hat man mit C# nicht nur in diesem Fall duch schnellere Entwicklung, verbesserte Betriebssicherheit und höhere Ausführungsgeschwindigkeit im Gegensatz zu VB.NET die Nase vorn.

Montag, Januar 01, 2007

WPF in Finance Applications

Seit geraumer Zeit programmiere ich für eine deutsche Investmentbank VSTO-Applikationen mit .NET 2.0, um Entwicklungen von Fonds und deren Produkte in Tabellen und Grafiken darzustellen. Aufgrund der wenig erquickenden Verwendung von Excel-Objekten in .NET verarbeite ich die entsprechenden Daten aus einer auf einem HP-UX laufenden Oracle-Datenbank in selbsterstellten Komponenten, wobei ich mich nicht nur der objektorientierten Programmierung mit Vererbung und Komposition über Schnittstellen bediene, sondern auch Generics verwende. Das ist wirklich eine gr0ßartige Sache! Über die Feiertage habe ich mal geprüft, was man für’s Erstellen von solchen Anwendungen aus dem reichhaltigen Paket von .NET 3.0 nutzen kann. Dabei bin ich über die Woodgrove Finance Application gestolpert. Da kann man wirklich einmal sehen wohin die Reise mit .NET 3.0 und damit wohl auch Office geht. Es ist einfach verblüffend wie eine Web Applikation mit Windows Presentation Foundation dynamisch Daten in einer mehrdimensionalen Grafik darstellen kann. Und das schon heute mit einem frei verfügbaren .NET Framework 3.0.

Samstag, November 11, 2006

Keinen Pinsel zur Hand!

Manchmal sitzt man an einem PCs auf denen man wahre Wunderdinge volbringen aoll, aber manchmal fehlt es einem dabei an soligem Handwerkzeug. Wenn einen in einer solchen Situation z.B. der elektronische Pinsel fehlt, kann ich das kostenfreie Tool Paint.NET empfehlen

Mittwoch, Oktober 11, 2006

WCF Master Class with Juval Löwy

Nun geht es doch nicht mit der Deutschen Bahn ins Trainingslager nach Bad Ems (s.u.), sondern zur WCF Master Class mit Juval Löwy mit dem Flieger ins Sol Antillas, Magalluf auf dem hoffentlich noch warmen Mallorca.

Dienstag, Oktober 03, 2006

Nominiert

Für die Launch Veranstaltung von Windows Vista, 2007 Microsoft Office System und Exchange Server 2007 in Frankfurt bin ich nach dem Launch Event von Visual Studio 2005, SQL Server 2005 und Bitalk 2006 im Februar in Karlsruhe wieder als Experte von Microsoft nominiert worden. Sehen wir uns bei diesem Launch Event?