Bernhard's profileBernhard Grojer - BlogPhotosBlogLists Tools Help

Blog


    July 24

    Outlook Connector - 12.1 Beta

    Seit gestern gibt es eine neue (Beta) Version des Outlook Connector.

    Damit ist es nun ENDLICH möglich auch Kalender (falls man einen Premium-Account hat) zu syncen. Natürlich perfekt wenn man keinen eigenen Exchange hat und trotzdem mehrere Geräte aktuell halten möchte.
    Notizen u. Aufgaben kann man ANGEBLICH auch syncen.

    Download gibt es hier:
    http://www.microsoft.com/downloads/details.aspx?FamilyId=9A2279B1-DF0A-46E1-AA93-7D4870871ECF&displaylang=en

    July 18

    Parallel Extensions - June 2008 CTP


    In der Zwischenzeit tut sich bei der Leistung die eine einzige CPU bringt leider nur mehr sehr wenig. Allerdings bekommen wir immer Mehr CPU(Kerne) die unsere Aufgaben erledigen können.

    Doch - Sie wissen das sicherlich schon - ist Mutlithreading in der eigenen Anwendung immer ein Aufwand und oftmals nicht so einfach umsetzbar.

    Microsoft arbeitet allerdings seit einiger Zeit an den Prallel Extensions für das .net Framework 3.5. Im Moment haben wir die June 2008 CTP verfügbar.

    Ich wollte die Sache daher gleich mal testen. Und zwar wollte ich alle Primzahlen in einen gewissen Zahlenbereich berechnen lassen (brute-force)

       1:          public List<int> GetPrimeNumbers(int lowerLimit, int upperLimit)
       2:          {
       3:              var lst = new List<int>();
       4:              for (int i = lowerLimit; i < upperLimit; i++)
       5:              {
       6:                  if (IsPrime(i))
       7:                      lst.Add(i);
       8:              }
       9:              return lst;
      10:          }
      11:   
      12:          public bool IsPrime(int n)
      13:          {
      14:              for (int i = 2; i < n; i++)
      15:              {
      16:                  if (n % i == 0)
      17:                      return false;
      18:              }
      19:              return true;
      20:          }

    Die Funktion GetPrimeNumbers gibt daraufhin alle Primzahlen retour. Allerdings - welche Überraschung - wird die Sache nur auf einen Kern ausgeführt. WIr verschenken daher auf Dual Cores bereits 50% Leistung.

    Also versuchen wir das Problem zu umschiffen und Fügen folgende Methode hinzu:

       1:          public List<int> GetPrimeNumbersParallel(int lowerLimit, int upperLimit)
       2:          {
       3:              var lst = new List<int>();
       4:              Parallel.For(lowerLimit, upperLimit, delegate(int i)
       5:                              {
       6:                                  if (IsPrime(i))
       7:                                      lst.Add(i); 
       8:                              }
       9:                          );
      10:   
      11:              return lst;
      12:          }

    In Zeile 4 verwenden wir nun die Prallel.For Methode (System.Threading) der Parallel Extensions und somit haben wir einen Methode entwickelt die all unsere Kerne nutzt ohne uns zu (manuellen) Threading zu zwingen.

    Nun zu unserem Aufruf:

       1:              Stopwatch sw;
       2:              var pn = new PrimeNumber();
       3:              var startNumber = 2;
       4:              var endNumber = 500000;
       5:   
       6:              sw = Stopwatch.StartNew();
       7:              var res1 = pn.GetPrimeNumbers(startNumber, endNumber);
       8:              Console.WriteLine("Done Seq: {0}", sw.ElapsedMilliseconds);
       9:   
      10:              sw = Stopwatch.StartNew();
      11:              var res2 = pn.GetPrimeNumbersParallel(startNumber, endNumber);
      12:              Console.WriteLine("Done Parallel: {0}", sw.ElapsedMilliseconds);

    Wir müssen beim Aufruf selbst nichts mehr beachten.


    PrimeNumberResult 

    Das Ergebnis kann sich sehen lassen würde ich sagen.

    Download des Samples gibts hier.

    July 16

    Centrino 2


    Endlich war es soweit. Intel stellte die Centrino2 Platform vor. 

    So und nun hätte ich gern noch ein Notebook:
    - 13,3 LED Display (mit 1400+ Auflösung)
    - 256 GB SSD
    - eSata Anschluss
    - 2,5 GHZ+ CPU mit P Prefix
    - 4 GB Ram (8 wäre auch ok :D)
    - WiFiLink 5300 mit 450 Mbps
    - 4h+ Akkulaufzeit
    - max 2,5 kg

    Und das alles bitte in einem vernünftigen Gehäuse das nicht nach 3 mal "onroad" ausschaut als hätte man auf dem Teil geparkt.

    Hersteller ... ich warte :D

    July 15

    C# 4.0

    Erstes Infos vom Team zu C# 4.0 gibts auf Channel9.

    Anders Hejlsberg (Wer? Sie wissen schon: Pascal, Delphi, C#, LINQ, ... - irgendwer muss sich das ja ausgedacht haben) und der Rest vom C# Team erzählen ein bisschen über die Zeile die Microsoft für C# 4.0 hat.

    Eventull wird es nun doch noch etwas Yoda Syntax.

    Von Spam, Captchas und dem täglichen Kampf dagegen


    Hannes hat sich vor kurzem zu der Lösung eines unschönen Spam-Problems geäußert.

    Selbiges geht auch ohne (eigenen) Programmieraufwand. Im aktuellen AJAX Control Toolkit gibts dafür ein Control mit dem Namen NoBot.

    July 03

    Farben aus System.Drawing.Color auflisten

    WIe bereites hier gepostet haben wir Bedarf gehabt die Farben aus System.Drawing.Color aufzulisten.

    Alternativ gehts auch mit LINQ und DataBinding:

    var res = from c In System.Enum.GetNames(GetType(KnownColor))
    Where Color.FromName(c).IsSystemColor

    DropDownList1.DataSource = res
    DropDownList1.DataBind()

    Sie sehen mal wieder: Mit LINQ können Sie sich das leben in fast jeden bereicht leichter machen.