ScreenShot 058 Development (Windows 8 64 Bit) [wird ausgeführt] - Oracle VM VirtualBox

Windows 8 Consumer Preview – Erster Eindruck

Ich nutze schon seit Erscheinen die Windows 8 Developer Preview auf einem meiner Notebooks, welches ich auch jeden Tag im Einsatz habe. Bis auf ein paar Kleinigkeiten funktioniert dort alles tadellos. Ich muss zugeben, nach Windows 7 war ich eigentlich schon begeistert und hatte höchstens noch mit kleinen Überarbeitungen gerechnet, aber als ich dann Windows 8 zu Gesicht bekam, war ich erstaunt. Es mag zwar am Anfang etwas gewöhnungsbedürftig sein, aber mittlerweile habe ich dieses Betriebssystem lieben gelernt.

Weiterlesen…

Windows 8 Consumer Preview

So langsam macht es überall die Runde: Die Windows 8 Consumer Preview ist öffentlich zugänglich! Nachdem Microsoft angekündigt hatte, eine Vorab-Version noch im Februar zur Verfügung zu stellen, ist es am letzten Tag des Monats nun endlich soweit. Neben der Consumer Preview gibt es auch eine erste Beta zu Windows 8 Server. Für alle Neugierigen und Beta-Fans gibt es nun hier die Download Links zu den diversen Versionen!

Weiterlesen…

ScreenShot 098 WinSCP Login

C#: Buffered FTP Upload

Ich habe ja bereits ein Tutorial über einen einfachen FTP Upload mittels C# geschrieben und dort gezeigt, mit wie wenigen Zeilen Quellcode dies möglich ist. Das ist natürlich nur ein Einstieg in die Materie und kann auch noch weiter verfeinert werden. Im ersten Tutorial wurde die komplette Datei in einen Stream geschrieben, was natürlich den Vorteil hat, dass sich Windows um alles weitere kümmert und wir eine recht hohe Upload-Geschwindigkeit erreichen. Das hat allerdings auch Nachteile. Wir können beispielsweise keine Informationen über den aktuellen Upload-Status bereitstellen.

Weiterlesen…

Design Patterns: Facade

Nach Singleton, Memento und Prototype folgt auch schon der nächste Part der Design Patterns: Die Fassade. Sie ist das erste Entwurfsmuster aus dem Bereich der Structural Patterns (Strukturmuster) und dient als einheitliche und vereinfachte Schnittstellen zu einer beliebigen Menge von Schnittstellen eines Untersystems (Subsystems).

Die Fassade sollte also immer dann genutzt werden, wenn ein Untersystem viele Klassen enthält, die aber einzeln selten bzw. garnicht verwendet werden. Statt nun für eine gewisse Funktionalität sehr viele kleine Klassen ansprechen zu müssen, verwendet man eine Fassade, die diese Klassen vereint und Funktionalitäten weiter deligiert. Somit kann eine Fassade die Komplexität einer Implementierung erheblich senken, da das benutzte Untersystem nicht direkt sichtbar ist.

Design Patterns: Facade

Um die Fassade korrekt zu implementieren benötigen wir als allererstes Subklassen. Diese Klassen enthalten jeweils Teil-Strukturen unserer Fassade, hier am Beispiel eines Kunden. Ein Kunde hat bei einer Bank ein Konto, ein Darlehen und eventuell eine Kreditkarte. Nun möchte er eine Hypothek abschließen. Dazu müssen wir prüfen, ob der Kunde kreditwürdig für eine solche Hypothek ist. Zuerst erstellen wir also unseren Kunden. Dazu dient folgende, sehr vereinfachte Klasse:

Weiterlesen…

Design Patterns: Prototype

Der Prototype ist ein Entwurfsmuster aus der Kategorie der Erzeugungsmuster (Creational Patterns), ähnlich wie der bereits beschriebene Singleton. Dabei erzeugt der Prototype neue Instanzen eines Objektes bzw. einer Klasse auf Basis einer bereits definierten Vorlage, die für neue Instanzen schlichtweg geklont werden, statt alle Felder und Eigenschaften neu zu setzen.

In den meisten Fällen kommt immer dann ein Prototype zum Einsatz, wenn das Erzeugen neuer Instanzen von Klassen sehr kostspielig ist, die Instanzen sich aber grundsätzlich sehr ähnlich sind. Es gibt hier noch eine Reihe von anderen Gründen die ich gerne zitieren möchte:

“Ein Prototyp findet Anwendung, wenn die Erzeugung weiterer Instanzen einer Klasse teuer ist und sich die Objekte ähneln, die zu instanziierenden Klassen erst zur Laufzeit bekannt sind, eine Hierarchie von Fabriken parallel zu einer Hierarchie von Produkten vermieden werden soll oder wenn die Objekte einer Klasse nur wenige Zustandskombinationen annehmen können; oder wenn die Bearbeitung von Vorlagen sehr ähnlich oder gleich der von Objekten ist.” – Quelle: wikipedia.de

Design Patterns: Prototype

Um den Prototype in Aktion sehen zu können, benötigen wir zuerst ein passendes Beispiel, welches wir uns überlegen müssen. Im Internet bin ich häufig über einen Farbenmanager gestolpert, der entweder nicht korrekt implementiert oder schlecht kommentiert wurde, daher möchte in an einem solchen Beispiel einmal die Funktionsweise des Prototypes erklären.

Weiterlesen…

Design Patterns: Memento

Nachdem ich hier bereits den Singleton beschrieben habe, folgt nun ein weiterer Design Pattern (Entwurfsmuster), diesmal allerdings aus dem Bereich der Behavioral Patterns (Verhaltensmustern). Der sogenannte Memento, oder auch als Token bezeichnet, soll den internen Zustand eines Objektes erfassen und diesen nach außen verlagern können, ohne dabei die Kapselung dieses Objektes zu beschädigen.

Der Memento sollte immer dann zum Einsatz kommen, wenn ein aktueller Zustand eines Objektes zwischengespeichert werden soll oder aber eine direkte Schnittstelle zur Ermittlung dieses Zustandes Details zur Implementierung aufzeigen würde. Letzteres kann ebenfalls mit dem Memento Pattern verhindert werden.

Design Patterns: Memento

Prinzipiell ist der Memento nur eine Vereinigung von Serialize und Deserialize Methoden in C# mit der Möglichkeit das Objekt so zwischen zu speichern. Wir benötigen hierzu also zunächst einmal eine Klasse die wir serialisieren können.

Weiterlesen…

Design Patterns: Singleton

Oftmals ist es nicht schwer, ein kleines Stück Software oder ein gutes Tool zu entwickeln. Doch was tun, wenn man ein wesentlich größeres und aufwendigeres Projekt realisieren möchte. Ich stand auch schon häufig vor diesem “Problem”, da ich häufig keinen passenden Anfang finde. Wenn das Grundkonzept steht möchte man viel zu oft schnell ans Programmieren. Generell auch eine feine Sache, die von Enthuisasmus zeugt. Aber Vorsicht! Klassen einfach drauf los zu programmieren ist eine Todsünde!

DAL mit Singleton

Es ist zwangsläufig notwendig, sich vorher mit seinen Klassen auseinander zu setzen, um nicht später alles über den Haufen werfen zu müssen, wenn man merkt, dass man etwas wichtiges vergessen hat. In diesem Prozess sind sogenannte Design Patterns von absoluter Notwendigkeit! Diese Entwicklungs Muster dienen dazu, grundsätzliche Strukturen und Verfahren in Euer Programm zu bringen. Ich möchte mich im ersten Teil dieser Serie mit dem Singleton, also der Einmal-Instanzierung einer Klasse, beschäftigen.
Weiterlesen…

Exponentielle Glättungsverfahren

Wie ich schon damals sagte, möchte ich den Blog auch gerne für eigene Themen nutzen. Darunter fallen natürlich auch Gebiete, die mir während meiner Arbeitszeit begegnen und die ich recht interessant finde. An dieser Stelle möchte ich mich mit einem exponentiellen Glättungsverfahren auseinandersetzen, welches in der Lagerverwaltung eine größere Rolle spielt.

Weiterlesen…

Google Voice nun auch auf Handys via Browser nutzbar

Es gab damals viel Aufregung rund um dieses Thema, als Apple die Apps von Google, insbesondere die Google Voice App, für das iPhone nicht freischalten wollte. Apple wollte somit verhindern, dass man Telefonate am Provider vorbei führen konnte. Gerade Google bat ein anerkanntes Tool, um kostengünstige internationale Anrufe zu tätigen und kostenlos Textnachrichten zu verschicken.

Weiterlesen…