.NET Blog   ·   .NET Casts   ·   .NET GUI Foren   ·   .NET BlogBook   ·   WPF Blogger   ·   visual studio one   ·   ASP.NET professional

  • 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.
Download .NET Essentials Installer
Trickkiste

MSDN: Schneller finden, was Sie brauchen

26.09.07 - .NET, Visual Studio, Internet, Community
Beitrag von Norbert Eder
 Unter dem Motto Schneller finden, was Sie brauchen wurde das deutsche MSDN Portal optimiert:

Klar strukturiert, funktional und skalierbar: Wir haben das MSDN Portal optimiert, damit Sie gewünschte Informationen noch schneller finden. Darüber hinaus profitieren Sie jetzt von einer Reihe neuer Services, mit denen Sie jetzt noch leichter mit uns in Kontakt treten und das MSDN-Knowhow nutzen. Freuen Sie sich auf einen schnellen, persönlichen Support, der Ihnen eine Menge Zeit spart.

Das Schöne dabei ist, dass Informationen so nicht nur schneller gefunden werden können, sondern, dass auch die Möglichkeit auf einen Gewinn besteht: Über 5 Monate hinweg werden jeden Monat 60x Visual Studio 2005 Standard Edition verlost. Also gleich mal mitmachen.

Entwickler / Welt - Schneller finden, was Sie brauchen

  4 Kommentare - 878 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Anonymous Delegates

25.09.07 - .NET, Grundlagen, Base Framework
Beitrag von Norbert Eder
 Dem einen oder anderen mögen anonyme Methoden (oder beispielsweise anonyme Typen wie sie mit C# 3.0 kommen) bekannt sein. In diesem Beitrag möchte ich ein wenig über anonyme Delegates schreiben und wozu diese benötigt werden (sind ohnehin sehr ähnlich zu anonymen Methoden).

Zuerst gleich das Beispiel, anhand dessen die Erklärungen vorgenommen werden:
using System;
using System.Collections.Generic;
using System.Text;

namespace AnonymousDelegatesSample
{
    public class Book
    {
        public string Title;
        public decimal Price;
    }

    public class Person
    {
        public string Firstname;
        public string Lastname;
        public List<Book> BookList;
        public decimal Discount;
        public DiscountCalculator CalculationMethod;
    }

    public delegate decimal DiscountCalculator(decimal price);

    public class Example
    {
        private decimal CalculateDiscount(decimal price)
        {
            return price * new decimal(0.05);
        }

        public void ShowExample()
        {

            DiscountCalculator default_calc = 
                new DiscountCalculator(CalculateDiscount);
            DiscountCalculator specialcustomer_calc = 
                delegate(decimal price) 
                { 
                    return price * new decimal(0.09); 
                };

            Book book1 = new Book();
            book1.Title = "ASP.NET for dummies";
            book1.Price = new decimal(35.99);

            Book Book2 = new Book();
            Book2.Title = "C# for dummies";
            Book2.Price = new decimal(49.99);

            List<Book> bookList = new List<Book>();
            bookList.Add(book1);
            bookList.Add(Book2);

            List<Person> personList = new List<Person>();

            Person person1 = new Person();
            person1.Firstname = "Norbert";
            person1.Lastname = "Eder";
            person1.BookList = bookList;
            person1.CalculationMethod = specialcustomer_calc;
            personList.Add(person1);

            Person person2 = new Person();
            person2.Firstname = "Alf";
            person2.Lastname = "Dudldei";
            person2.BookList = bookList;
            person2.CalculationMethod = default_calc;
            personList.Add(person2);

            foreach (Person p in personList) 
            {
                decimal price = 0;
                foreach (Book b in p.BookList)
                    price += b.Price;

                p.Discount = p.CalculationMethod(price);

                Console.WriteLine(
                    String.Format("{0} {1}:t {2} discount", 
                        p.Firstname, 
                        p.Lastname, 
                        p.Discount.ToString())); 
            }

            Console.WriteLine("Press any key ...");
            Console.ReadKey();
        }
    }
}

Zuerst ein kurze Erklärung wozu dieses Beispiel dient: Grundsätzlich gibt es zwei Klassen. Zum einen die Person und zum anderen das Book. Wir gehen also davon aus, dass eine Person Bücher kauft und diese in einer Collection aufbewahrt werden. Nun soll (je nach Kundenstatus) ein Rabatt berechnet werden.

Zur Erklärung: Dies kann natürlich auch auf eine andere - vermutlich einfachere Art und Weise implementiert werden. Dieses Beispiel dient lediglich der Veranschaulichung von anonymen Delegates.

Grundsätzlich ist in diesem Beispiel ein üblicher Delegate definiert:
public delegate decimal DiscountCalculator(decimal price);

Dieser wird im Standardfall auch verwendet, um eine Methode aufzurufen, die für die Rabattberechnung zuständig ist.
DiscountCalculator default_calc = 
    new DiscountCalculator(CalculateDiscount);

Die aufgerufene Methode sieht dann so aus:
DiscountCalculator default_calc = 
    new DiscountCalculatprivate decimal CalculateDiscount(decimal price)
{
    return price * new decimal(0.05);
}or(CalculateDiscount);

Nun kann es jedoch vorkommen, dass eine spezielle Berechnung durchgeführt werden muss, diese wird nur in einem ganz bestimmten Fall angewandt und bedarf daher keiner eigenen Methoden-Implementierung (in diesem Beispiel vielleicht weniger sinnvoll, aber generell treten bei der Verwendung von Delegates immer wieder Fälle auf, in denen sich eine eigene Methode nicht rentiert). Hier kommen nun anonyme Delegates ins Spiel. Die aufgerufene Methode ist hierbei ansich nicht vorhanden (daher anonym) und wird erst bei der Erstellung des Delegate definiert. Wie hier:
DiscountCalculator specialcustomer_calc = 
    delegate(decimal price) 
    { 
        return price * new decimal(0.09); 
    };

Damit wird im Grunde erreicht, dass die eigentliche Berechnung durch eine neue ersetzt wird. Eine entsprechende Methode muss hierzu nicht vorhanden sein.

Einsatzgebiete hierfür finden sich immer wieder, daher grundsätzlich nicht schlecht, wenn man sie kennt und auch anwenden kann. Im Falle des Falles muss der Entwickler ohnehin selbst entscheiden ob dies sinnvoll ist oder nicht. Wird die Berechnung anderweitig verwendet ist es sicherlich sinnvoll, diese in eine eigene Methode zu kapseln. Andernfalls kann durchaus ein anonymer Delegate verwendet werden.

  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Volltext-Suche und SQL Server 2005 Express

24.09.07 - SQL Server
Beitrag von Norbert Eder
 Wer unter SQL Server 2005 Express die Volltext-Suche verwenden möchte, wird diese eventuell nicht finden können bzw. nicht aktivieren können (der Dienst MSFTESQL wird nicht installiert und ist somit auch nicht verfügbar).

Abhilfe schafft die Installation des Microsoft SQL Server 2005 Express Edition with Advanced Services Service Pack 2. Hier ist nun alles dabei was man braucht.

Nein, nicht ganz: Das Microsoft SQL Server Management Studio Express Service Pack 2 darf auch nicht fehlen.

Ich hatte irgendwie in Erinnerung, dass dies der SQL Server 2005 Express auch kann und man nicht zum Express Advanced Services greifen muss, aber nun gut, jetzt weiß ich es.
  3 Kommentare - 3411 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Abwechslung zum Wochenende

22.09.07 - Internet, Kunterbunt
Beitrag von Norbert Eder
 Eigentlich ist es schon etwas älter, aber zufällig habe ich es wieder entdeckt. Und da ich selbst ein Katzenliebhaber bin (hab ja selbst zwei zu Hause herumschleichen), einfach mal hier dieses Video (wer es schon kennt: es gibt auch durchaus interessante Beiträge hier im Blog):

Video: Funny Cat's talking
  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Basta! 2007: Fazit

21.09.07 - Offline, Konferenzen, Basta! 2007
Beitrag von Norbert Eder
 Abgesehen von den Workshops etc. ist die Basta nun eigentlich gelaufen. Zumindest die Haupt-Vortragstage sind vorüber. Und hier nun mein Fazit dieser Veranstaltung:

Organisation
Die Organisation ist gut gelungen. Beim "Check-In" ging alles sehr flott von statten, es wurde darauf gepocht, dass die Vorträge nicht weit überzogen werden, dass sie pünktlich beginnen. Das Essen stand pünktlich auf dem Tisch, auch die sonstige Verpflegung (Getränke etc.) war sehr gut. Auch Rahmenprogramme wurden entsprechend angeboten, wie auch zwei XBOX-Geräte, Massagen usw. Sehr feine Sache.

Vorträge
Eine sehr gute Auswahl, jede Menge Tracks. Für meinen Geschmack hätte man in manchen Vorträgen jedoch wesentlich weiter in die Tiefe gehen können. Das ist aber schwierig, da über den Wissensstand der Teilnehmer kaum etwas bekannt sein dürfte. Dennoch fanden sich wirklich einige Perlen unter den Vorträgen. Natürlich gab es auch jede Menge Information zu den aktuellen Technologien und auch ein paar Ausblicke in die Zukunft.

Im Großen und Ganzen hat mir die Basta! sehr gut gefallen, wenn auch sie sehr anstrengend war. Es hat mich sehr gefreut den einen oder anderen kennen zu lernen und hoffe, das geht so weiter :)

In diesem Sinne kann ich jedem, der sich über künftige Technologien informieren möchte die Basta! empfehlen, aber auch die kleineren, familiären Veranstaltungen haben durchaus ihren Reiz.

Zum Schluss noch ein herzliches Dankeschön an Kai für die interessanten Gespräche und unser kleines .NET Casts-Treffen, als auch ein Dankeschön an Mathias Raacke (er weiß schon warum) und natürlich auch an alle anderen, die ich jetzt nicht aufgezählt habe.
  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Basta!: Neuerungen in C# 3.0

21.09.07 - Offline, Konferenzen, Basta! 2007
Beitrag von Norbert Eder
 Gestern hatte ich es aufgrund der Heimreise nicht mehr geschafft über den Vortrag von Oliver Sturm zu sprechen, den ich leider (wirklich sehr schade darum) früher verlassen musste:

Bluffers guide to C# 3.0

Kurz und bündig: Neuerungen im Detail mit Demos.

Anmerken muss ich hierzu, dass mir dieser Vortrag besonders gut gefallen hat. Souveränität, Ruhe, gute Wortwahl, perfekte Erklärungen haben diesen Vortrag absolut zu einen der besten der Basta! (zumindest für mich) gemacht. Ich kann also jedem nur empfehlen sich einmal einen Vortrag von Oliver Sturm anzusehen.

Daumen hoch!
  1 Kommentar - 929 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Basta! Live: Basta Innovation Award 2007

20.09.07 - Offline, Konferenzen, Basta! 2007
Beitrag von Norbert Eder
 Heute Mittag wurde der Basta Innovation Award 2007 verliehen. Insgesamt wurden bei diesem Award 20.000 Euro vergeben (und zusätzlich 1.000 Euro, namens Community Award).

Und hier die Gewinner:

1. Platz: ILNumerics.NET
2. Platz: Performance Management und Diagnose verteilter .NET Anwendungen
3. Platz: iuBIZ
4. Platz: mccMobileHelp
5. Platz: Versatile Serializing .NET

Ausserhalb dieser Wertung wurden noch zwei weitere Auszeichnungen vergeben:

Community Award: .NET Snippets.de
Publikums Award: ROMA Mobile

Und an dieser Stelle eine herzliche Gratulation an die Gewinner und die Organisatoren dieses Awards, da dies dann doch immer wieder aufzeigt, was es denn so in der .NET Community an Solutions gibt.

  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Windows Mobile 6 Emulator ohne Visual Studio

20.09.07 - .NET, Mobile Devices
Beitrag von Norbert Eder
 Nicht mehr die jüngste Information, aber dennoch nützlich: Wer auf Windows Mobile 6 etwas testen möchte, ohne sein Gerät hierfür missbrauchen zu wollen (oder man hat auch gar keines), der kann sich einen Emulator dafür herunterladen. Nette Sache.
  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Getting Things Done, oder so

20.09.07 - Kunterbunt
Beitrag von Norbert Eder
 Gestern hatte ich noch eine recht interessante Diskussion mit Kai über das Thema Getting Things Done. Eigentlich eine recht nette Geschichte des Selbstmanagements und werde ich mir sicherlich näher ansehen. Also meine bisherige Vorgehensweise mal über Board werfen und diesen Ansatz verfolgen.

Zur Übersicht ein kurzes Zitat aus Wikipedia:
GTD basiert auf dem Prinzip, dass eine Person ihre anstehenden Tätigkeiten notiert und somit den Kopf frei hat für Wichtigeres. Diese Elemente werden in ein System eingepflegt. Das System liefert kontextbezogene Aufgabenlisten für den Alltag. Die Person soll sich somit auf die Erledigung ihrer Aufgaben konzentrieren können, ohne befürchten zu müssen, etwas zu vergessen. Diese Selbstmanagement-Methode soll auf diese Weise effizientes und belastungsfreies Arbeiten ermöglichen.

Wer nun Software dafür findet, der wird sicherlich auf dieser Übersichtsseite fündig. Einen ziemlich coolen Eindruck hinterläßt My Live Organized, wenn es auch kostenpflichtig ist. Vergisst man dafür nichts mehr und kann seine Aufgaben schneller erledigen, dann sollte die Ausgabe recht schnell wieder eingespielt sein.

  5 Kommentare - 721 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Basta! Live: WPF-Tag

20.09.07 - Offline, Konferenzen, Basta! 2007
Beitrag von Norbert Eder
 Den letzten Tag, den ich hier auf der Basta! verweilen werde steht für mich im Zeichen von WPF (Windows Presentation Foundation). Dies ist wohl eines meiner Lieblingsthemen (auch wenn ich dazu recht wenig im Blog schreibe, aber das ändert sich ja, wie bereits angekündigt). Grundsätzlich geht es mir einfach darum, eventuell noch zwischen den Zeilen ein paar Informationen zu erlangen. Mal sehen ob dies aufgeht - denn schließlich würde sich das auch auf die geplante WPF-Serie auswirken, durch die ohnehin schon ein paar coole Dinge auf meine Leser warten, mehr dazu in ein paar Tagen.

  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL



Zurück Weiter