Monatsarchiv für Februar 2008

Zurück aus Deutschland – Embedded World 2008

Freitag, den 29. Februar 2008

Endlich habe ich wieder einmal Zeit einen Beitrag zu schreiben. Ich war vom Mittwoch dem 27.02.2008 bis gestern Abend an der Embedded World in Nürnberg. Ich war mit der Firma in der ich arbeite an einem Stand vertreten.

Die Embedded World ist zurzeit die weltweit grösste Fachmesse für die Embedded Community. Es sind jeweils namhafte Hersteller aus den Bereichen Automobil, Datentechnik, Telekommunikation, Industrie- und Konsumelektronik, Militär- und Luftfahrttechnik an der Fachmesse vertreten. Hier einen Überblick über die Dimension der Messe:

Aussteller:
Rund 670 Aussteller aus 28 Ländern
Fachbesucher:
Rund 16.000 Fachbesucher aus über 60 Ländern
Ausstellungsfläche:
brutto: ca. 30.000 m2
Fachangebot:

  • Hardware
    Bauelemente – Module – Komplettsysteme für diverse Anwendungsgebiete
  • Tools
    Hardware – Software
  • Anwendungs-Software
    Echtzeitbetriebssysteme – Visualisierungs-Software – Internet-Browser –
    Test- und Verifikations-Software
  • Dienstleistungen
    Systementwicklung – Elektronikfertigung – Consulting – Schulung – Fachliteratur
  • Auch ganz cool war das Bike das von Intel bei OCC (Orange County Choppers) hergestellt wurde. Unten seht ihr ein Video des Bikes (leider nicht von der Embedded World in Nürnberg).

    Unglaubliche Animezeichnungen

    Montag, den 25. Februar 2008

    Ich bin wiedermal beim Stumblen im Netz auf eine Sammlung von Animes gestossen. Schaut euch die mal an:

    Animes

    Agathe Bauer Songs

    Samstag, den 23. Februar 2008

    Ultra geil!

    C#2008 Sprachfeatures Teil 3: Extension Methods

    Montag, den 18. Februar 2008

    Wie ihr sicherlich alle wisst, ist es nur sehr mühsam möglich kompilierte Klassen mit zusätzlicher Funktionalität zu bestücken oder etwa Funktionalität wieder wegzunehmen. Extension Methods erlauben in C#2008 an bestehenden Klassen oder sogar vorkompilierten Typen zusätzliche Funktionalität zu “injezieren” ohne den Code selber zu besitzen.

    Einschränkungen

    • Extension Methods verändern nicht die kompilierte Codebasis sondern fügen nur Member einem Typ hinzu, der im Kontext der Applikation läuft.
    • Extension Methods müssen in einer statischen Klasse definiert werden. Die Methode selber muss auch mit dem Keyword static deklariert werden.
    • Extension Methoden müssen im ersten Parameter der Methode immer mit dem Keyword this und der Klasse (z.B. this Object)auf den die Extensionmethode angewendet werden soll, implementiert werden.
    • Jede Extensionmethode kann entweder über eine korrekte Instanz im Memory oder statisch über die definierende Klasse angesprochen werden!

    Machen wir direkt ein Beispiel. Wir wollen, dass jede Klasse die von System.Object ableitet in Zukunft eine Methode DoPublicRelationForTracelight() besitzt, die auf der Konsole eine Meldung der Form “Tracelight.ch rockz!!!” ausgibt. Dazu definieren wir folgendes

        static class TracelightPublicRelationExtensionMethods {
            public static DoPublicRelationForTracelight(this Object obj) {
                Console.WriteLine("Tracelight.ch rockz!");
            }
    
            // More methods related to tracelight.ch public relations...
        }
    

    Falls wir nun die Extensionmethoden über den zugehörigen Namespace in unser Programm einbinden, kann jede Klasse die von System.Object ableitet die Methode DoPublicRelationForTracelight() ausführen, als ob die Methode direkt auf dem System.Object definiert wurde.

    Somit ist also folgendes möglich:

       Object myObject = new Object();
       myObject.DoPublicRelationForTracelight();
    
       int myInt = 42;
       myInt.DoPublicRelationForTracelight();
    
       // and many more
    

    Auch kann die statische Methode direkt über die Klasse aufgerufen werden. Also zum Beispiel so:

       int myInt = 42;
       TracelightPublicRelationExtensionMethods.DoPublicRelationForTracelight(myInt);
    

    Im Hintergrund macht eigentlich der Kompiler auch nichts anderes als die statische Methode aufzurufen und eine Referenz des aufrufenden Objektes zu übergeben. Dies passiert einfach im Hintegrund.

    Skope
    Extensionmethoden haben keinen direkten Zugriff auf die Felder des Typs der von der Methode erweitert wird. Folgender Code ist also nicht möglich:

       public class TracelightTvSpot {
          public string TvSpotMessage ;
    
          public string MakeAggressivPublicRelationForTracelight() {
             return TvSpotMessage;
          }
       }
    
       public static class TracelightPublicRelationExtensionMethods  {
           public static string MakeMoreAggressivSpot(this TracelightTvSpot spot) {
               return TvSpotMessage + "! For real!!!";
           }
       }
    

    Die obige Extensionmethode kann aber folgendermassen umgeschrieben werden:

       public static class TracelightPublicRelationExtensionMethods  {
           public static string MakeMoreAggressivSpot(this TracelightTvSpot spot) {
               return spot.TvSpotMessage + "! For real!!!";
           }
       }
    

    Spezielles
    Die Extensionmethoden werden bei der Verwendung durch Intellisense mit einem speziellen Symbol gekennzeichnet, damit sie von den Klassen- und statischen Methoden unterschieden werden können. Das Symbol sieht folgendermassen aus:

    Extensionmethode

    Die Extensionmethode müssen explizit über die Library die die Extensionmethoden definiert über das using Statement eingebunden werden. Sonst können sie nicht benutzt werden.

    Viel Spass beim ausprobieren…

    Kompilieren von Javacode in einem Javaprogramm

    Donnerstag, den 14. Februar 2008

    Ein sehr interessanter Artikel:

    With the new Compiler API introduced in the JDK SE 6 it is possbile to compile Java code in a Java program.

    You start by making an instances of Java Compiler and Java File Manager…[more]

    American Gladiators returns…

    Sonntag, den 3. Februar 2008

    Und die Kandidaten die es nicht geschafft haben :D

    Wie funktioniert der zersägte Jungfrautrick?

    Samstag, den 2. Februar 2008

    Hier die Antwort:

    Jay Groove vs Abox: drums vs beatbox battle

    Freitag, den 1. Februar 2008