-
ACHTUNG - NEUES BLOG
Ab sofort steht unter http://devtyr.norberteder.com mein neues Blog zur Verfügung. Dieses Blog wird nicht weiter betreut, bleibt aber erhalten. Neue Eintr%auml;ge erfolgen nur mehr im neuen Blog. Kommentare werden ebenfalls nicht mehr behandelt. Wer weiterhin meinen Einträgen und Aktivitäten folgen möchte, möge bitte RSS-Feeds, Verlinkungen etc. an die neue Location anpassen.
|
Design Patterns: Die Geschichte
28.03.06 - Patterns Beitrag von Norbert Eder| | Unter Was sind Design Patterns wurde der Begriff Design Pattern bereits definiert und auch die unterschiedlichen Arten wurden angeführt.
In diesem Beitrag wird auf die Geschichte der Design Patterns eingegangen.
Bereits in den 1970er Jahren wurde die erste Sammlung von Entwurfsmustern erstellt - allerdings von einem Architekten namens Christopher Alexander. Die Idee dahinter hat sich seitdem nicht verändert. Nur fand seine Sammlung wenig Anklang unter anderen Architekten, in der Softwareentwicklung wurde die Idee jedoch bald darauf aufgegriffen und erfreut sich großer Beliebtheit. Ende der 1980er wurde die Sammlung von Chritopher Alexander von Kent Beck und Ward Cunningham aufgegriffen und entwickelten auf deren Basis Entwurfsmuster für grafische Benutzerschnittstellen.
Eine neue Ära begann dann mit Erich Gamma. Nach seiner Promotion an der Universität Zürich, 1991, ging er in die USA und verfasste zusammen mit Richard Helm, Ralph Johnson und John Vlissides das Buch Design Patterns - Elements of Reusable Object-Oriented Software. In diesem Buch wurden 23 Design Patterns beschrieben. Dies verhalf den Entwurfsmustern zum Durchbruch. Die vier Autoren sind gemeinhin auch unter Gang of Four (GoF) bekannt.
Zur Übersichtlichkeit verwendete die GoF ein einheitliches Schema um die Design Patterns zu beschreiben. Nachfolgend eine kurze Übersicht:
- Mustername und Klassifikation
- Zweck
- Synonyme
- Motivation
- Anwendbarkeit
- Struktur
- Beteiligte Klassen (Akteure)
- Zusammenspiel der involvierten Klassen
- Vor- und Nachteile
- Implementierung
- Beispielcode
- Praxiseinsatz
- Querverweise
Anhand dieses Schemas konnte ausreichend Information zum entsprechenden Design Pattern geliefert werden (Wann ist es einsetzbar, etc.).
| | | Kommentar hinzufügen
| 1 Trackbacks
| Permalink | Trackback-URL |
How to Remove Linux and Install Windows XP
25.03.06 - Internet Beitrag von Norbert Eder
Tool: Outlookmaster
23.03.06 - OutlookMaster Beitrag von Norbert Eder| | Da ich Microsoft Outlook intensiv verwende, es aber nicht ständig geöffnet haben will (Ressourcen, die ich fürs Programmieren benötige), habe ich mir gestern ein kleines Tool gebaut, welches Zugang zu einigen Outlook-Funktionen per Traybar anbietet.
Es fehlt zwar noch eine MailChecker-Funktionalität, aber leistet zumindest mir recht gute Dienste. Daher möchte ich das Tool potentiellen Usern nicht vorenthalten und habe es online gestellt.
Zu finden ist das Tool auf der Projektseite zu Outlookmaster.
Anregungen etc. nehme ich natürlich entgegen, unter Verwendung der Kontaktseite.
| | | 2 Kommentare
- 1397 mal angesehen
| 0 Trackbacks
| Permalink | Trackback-URL |
.NET Compact Framework Version 2: Welches CAB für welches Gerät?
23.03.06 - Mobile Devices Beitrag von Norbert Eder
Patterns: Command Pattern
21.03.06 - Patterns Beitrag von Norbert Eder| | Das nächste Pattern, welches ich in meiner Rubrik Patterns vorstellen möchte, ist das Command-Pattern.
Defintion
Das Command Pattern ermöglicht die Repräsentation von Aktivitäten in eigenständigen Objekten.
Was bedeutet dies in der Praxis?
Innerhalb der selben Struktur können unterschiedliche Commands ausgeführt werden, die jeweils eine bestimmte Aufgabe besitzen. Unabhängig davon, welche Aufgabe ein Command hat, muss das ausführende Konstrukt nicht verändert werden. Zusätzlich besteht die Möglichkeit, Commands in beispielsweise einer Queue abzulegen um hintereinander abgearbeitet zu werden.
Beispiel-Implementierung
Der Aufbau des Command Patterns wird zwar in manchen Fällen recht aufwändig und kompliziert dargestellt, gestaltet sich in der Praxis jedoch als sehr einfach. Es wird ein Interface ICommand erstellt welches die notwendige Methode Execute() zur Verfügung stellt. Jeder konkrete Command implementiert dieses Interface und die Methode Execute() wird dabei mit der Logik des Commands befüllt. In einigen Fällen macht es auch durchaus Sinn, einen abstrakten Command einzufügen, der bereits Basisfunktionalitäten zur Verfügung stellt.
public interface ICommand
{
string Message{get;set;}
void Execute();
}
Dieses Interface schreibt also die Methode Execute() vor, die von jedem Command implementiert werden muss. Weiters wird eine Eigenschaft Message vorgeschrieben, die eine entsprechende Nachricht speichern soll. Konkreter Anwendungsfall wäre eine Fehlermeldung wenn der Command auf einem entfernten Host ausgeführt wird (kann als eine Ergänzung zu einem State gute Dienste leisten).
In diesem Beispiel wird nun ein abstrakter Command erstellt, der die Eigenschaft als Basisfunktionalität zur Verfügung stellt:
public abstract class Command : ICommand
{
private string message = null;
public string Message
{
get { return this.message; }
set { this.message = value; }
}
public abstract void Execute();
}
Alle Commands, die nun vom abstrakten Command ableiten, müssen die Eigenschaft Message nicht mehr implementieren, da diese bei der Ableitung übernommen wird. Lediglich die Methode Execute ist zu überschreiben. Dies wird anhand des folgenden Sourcecodes gezeigt:
public class ConcreteCommand : Command
{
#region ICommand Members
public override void Execute()
{
this.Message = "This is a concrete command implementation.";
}
#endregion
}
Hier passiert nichts anderes, als dass die Eigenschaft Message mit einem String befüllt wird.
Weiters wird von mir noch eine Klasse Executor benutzt, der für die Ausführung der Commands zuständig ist.
public class Executor
{
public void ExecuteCommand(ICommand ic)
{
ic.Execute();
}
}
Wie hier zu sehen ist, wird ein ICommand übergeben, der anschließend ausgeführt wird. Dadurch kann jeder beliebige Command ausgeführt werden und eine Erweiterung ist nur dann notwendig, wenn der Executor selbst diverse neue Features bekommt.
Zusammenfassung
Da im Falle des Command Patterns nur mehr die einzelnen Commands implementiert werden müssen, das ausführende Framework sich jedoch nicht ändert, eignet sich dieses Pattern sehr gut für eine Client-Server Kommunikation und wird daher auch oft eingesetzt, wenn Clients beispielsweise mit WebServices interagieren.
Nachfolgend findet sich ein kleines Testprogramm, welches den gesamten Ablauf dieses Patterns zeigt.
Beispiel-Anwendung: Download
| | | 6 Kommentare
- 2679 mal angesehen
| 0 Trackbacks
| Permalink | Trackback-URL |
Forenbetreiber werden wieder einmal abgemahnt!
15.03.06 - Internet, Community Beitrag von Norbert Eder| | Durch ungerechtfertigte Abmahnungen sind vor allem die privat geführten Internetforen sehr gefährdet. Diese beziehen sich auf den Heise-Fall, der zudem noch nicht abgeschlossen ist und zudem auch nicht übertragbar sein dürfte.
Wer also gerne an diversen Foren im Internet teilnimmt, der möge sich an dieser Spendenaktion beteiligen um die zugrundeliegende Klage zu unterstützen. Es kommt allen (deutschsprachigen) Foren zugute.
Helft mit!
| | | Kommentar hinzufügen
| 0 Trackbacks
| Permalink | Trackback-URL |
Tools: LaTeX Reference Manager
12.03.06 - 3rd Party Tools Beitrag von Norbert Eder| | Wer so wie ich entweder gerade seine Diplomarbeit oder auch andere Dokumente mit LaTeX schreibt, der weiß auch, dass Literaturangaben sehr wichtig sind, jedoch bei der Pflege viel Aufwand bedürfen.
Um dies einfacher zu machen, sei zu einem Tool namens JabRef geraten. Hierbei handelt es sich um eine Verwaltungs-Oberfläche für BibTeX-Datenbanken. Viele Funktionen (zu erwähnen ist auch die Unterstützung von vielen unterschiedlichen Formaten) werden geboten und erleichtern die Arbeit mit Literaturverweisen ungemein.
Anforderungen: Java 1.4 und neuer.
| | | Kommentar hinzufügen
- 4 mal angesehen
| 0 Trackbacks
| Permalink | Trackback-URL |
Community: Neue Kategorie und neues Glengamoi
09.03.06 - Community Beitrag von Norbert Eder| | Zum einen habe ich heute die Neue Kategorie Community eingeführt, in der Themen/Informationen aus eben diesem Gebiet aufgegriffen werden.
Weiters hat sich Glengamoi weiterentwicklet und geht nun mit einem Forum ins Rennen. Die altbekannten Mailinglisten wird es (so sieht es aus) weiterhin geben.
Vielleicht liest man sich ja das eine oder andere Mal ;-)
| | | Kommentar hinzufügen
| 0 Trackbacks
| Permalink | Trackback-URL |
C# Beginner: UserControl DoubleTrackBar Beispiel
04.03.06 - .NET, WPF Beitrag von Norbert Eder| | Deisem Eintrag liegt ein Beispiel bei, welches zeigt, wie ein einfaches DoubleTrackBar-Control erstellt werden kann.
Mit Hilfe dieses Controls können mit zwei Schieberegler ein Minimum-Wert und ein Maximum-Wert eingestellt werden. Eigentlich ein recht simples Problem, jedoch nicht für C# Programmierer, die in Themen wie GDI+, UserControls wenig Erfahrung haben.
Der folgende Screenshot zeigt das Aussehen des UserControls in einer kleinen Testanwendung:
Zusätzliche Funktionalitäten sollten sich recht einfach einfügen lassen.
Anforderungen: .NET 2.0 für die Solution. Sourcecode auch unter .NET 1.1 nutzbar
Download
| | | Kommentar hinzufügen
| 0 Trackbacks
| Permalink | Trackback-URL |
Tools: DotLucene - Fulltext Search Engine for .NET
03.03.06 - 3rd Party Tools Beitrag von Norbert Eder| | Wer für diverse Anwendungsfälle eine kostengünstige und vor allem schnell Volltextsuche benötigt, der sollte sich auf jeden Fall DotLucene genauer ansehen.
Hinter diesem Open-Source-Projekt verbirgt sich eine vielversprechende Lösung für dieses Thema.
Ein kurzer Auszug aus der Featureliste:
- Gute Performance
- Ranking
- Hervorhebung der Suchbegriffe in den Ergebnissen
- Suche nach Metadaten
- Speicherung von vollindizierten Dokumenten
Durch die Benutzung der Online Demo kann man sich von der Geschwindigkeit und von einigen Features überzeugen.
Im gleichen Atemzug kann man sich auch den - auf der Seite von DotLucene vorgeschlagenen - Indexing Server Seek a File ansehen. Der Server läuft als Windows Dienst und kann folgende und weitere Dateitypen indizieren:
- DOC
- PDF
- XLS
- PPT
- RTF
- HTML
- TXT
- XML
Ein Blick auf diese Tools sollte sich als durchaus lohnen.
| | | Kommentar hinzufügen
| 0 Trackbacks
| Permalink | Trackback-URL | Zurück Weiter
|
|
|
|
|
|
|