.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

TestDriven.NET 2.0 ab sofort erhältlich

31.10.06 - Base Framework, 3rd Party Tools
Beitrag von Norbert Eder
 Nachdem ich immer wieder über TestDriven.NET berichte, hier nun die Meldung, dass das Visual Studio Add-In ab sofort in der Version 2.0 erhältlich ist.



TestDriven.NET makes it easy to run unit tests with a single click, anywhere in your Visual Studio solutions. It supports all versions of Microsoft Visual Studio .NET and it integrates with the best .NET development tools including NCover, NCoverExplorer, Reflector, TypeMock, dotTrace, NUnit, MbUnit, ZaneBug, MSBee & Team System.

TestDriven.NET Homepage

  Kommentar hinzufügen - 2 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Datei-Synchronisation leicht gemacht

31.10.06 - 3rd Party Tools
Beitrag von Norbert Eder
 Durch einen Eintrag von Kay wurde ich auf dieses kleine, aber doch feine Tool aufmerksam gemacht. SyncTool.

In der neuen Version 1.4 steht es nun ab sofort zur Verfügung um Dateien zwischen Ordnern, PCs und mobilen Geräten zu synchronisieren. Dazu kommt es noch in einer netten Oberfläche, welche die Bedienung sehr vereinfacht.

Download: SyncToy 1.4

  Kommentar hinzufügen - 4 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Reflection Geschwindigkeitstest

27.10.06 - .NET, Base Framework
Beitrag von Norbert Eder
 Da ich mir heute wieder mal einen O/R Mapper genauer angesehen habe (Name der Redaktion bekannt), ist mir ein sehr wesentlicher Punkt aufgefallen. Natürlich arbeiten diese Frameworks mit Reflection. Selten wird jedoch tatsächlich auf Geschwindigkeit gesetzt, so eben das Framework, welches ich heute in die Finger bekommen habe. Daraufhin musste ich gleich einen Test machen.

Der Testfall ist ein sehr einfacher, der im Normalfall keine wesentliche Last verursacht. Es wird aus einer Assembly lediglich ein bestimmter Typ aufgrund seines Namens geladen und alle Properties ausgegeben. Die ganze Übung wird 200.000 mal durchgeführt, was in einer mittelgroßen Anwendung nicht sehr viel ist.

Wenn man davon ausgeht, dass die Engpässe in der Reflection bei quasi rekursiven Durchläufen erst so richtig entstehen, dann sollte mein Testfall nicht sehr gravierend ausfallen. Hier jedoch das Testergebnis auf meinem Rechner:



Was genau bedeutet dies? Nun, im ersten Durchlauf wird der nachfolgende Code aufgerufen.

for (int i = 0; i < 200000; i++)
{
Assembly a = Assembly.GetExecutingAssembly();
if (a != null)
{
Type t = a.GetType("ReflectionSpeedTest.Person");
FieldInfo[] fis = t.GetFields();
foreach (FieldInfo fi in fis)
{
Console.WriteLine(fi.Name);
}
}
}

Im Vergleich dazu, werden die Feld-Informationen in der zweiten Variante gecached. Das hat zwar den Nachteil, dass der Speicherverbrauch ansteigt, jedoch die Geschwindigkeit um ein Vielfaches erhöht wird - und das bei dieser wirklich sehr sehr einfachen Aufgabe.

this.fieldInfos = new Hashtable();

Assembly a = Assembly.GetExecutingAssembly();
if (a != null)
{
Type t = a.GetType("ReflectionSpeedTest.Person");
FieldInfo[] fis = t.GetFields();
foreach (FieldInfo fi in fis)
{
this.fieldInfos.Add(fi.Name, fi);
Console.WriteLine(fi.Name);
}
}

for (int i = 0; i < 199999; i++)
{
IDictionaryEnumerator en = this.fieldInfos.GetEnumerator();
while (en.MoveNext())
{
Console.WriteLine(en.Key.ToString());
}
}

Insgesamt ebenfalls wieder 200.000 Aufrufe. Über 1800 Millisekunden im Vergleich zu knapp mehr als 15 Millisekunden spricht hierbei schon Bände. Man bedenke, dass oft aufwändigere Probleme mittels Reflection gelöst werden, daher sollte ein Caching durchaus überlegt werden. Ansich sehr einfach, jedoch eine große Wirkung.

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


Podcasts: WebDevRadio

27.10.06 - Entwickler Podcasts
Beitrag von Norbert Eder
 Um auch meine Rubrik Entwickler Podcasts wieder etwas aufzufrischen, gibt es an dieser Stelle den Verweis auf die WebDevRadio Podcasts [1]. In vielen Fällen lohnt sich das Reinhören. Viel Spass dabei und vergesst nicht auf die Arbeit ;-)

[1] WebDevRadio Podcasts

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


Encryption-Framework BouncyCastle

27.10.06 - .NET, Allerlei, Security
Beitrag von Norbert Eder
 Vor Jahren hatte ich aufgrund eines Projektes mit der Java-Version von Bouncycastle zu tun. Stichwörter: S/MIME, PGP. Auch damals gab es schon eine rudimentäre C#-Umsetzung [1], welche ich hier nun einmal kurz erwähnen möchte.

Am 24. Oktober 2006 (also vor ein paar Tagen) gab es ein weiteres Beta-Release, welches ansich schon recht gut funktioniert und auch zahlreiche Funktionalitäten bietet. Wer also Bedarf an einem Encryption-Framework hat, tut gut daran, sich BouncyCastle näher anzusehen.

[1] BouncyCastle C# Framework
  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


MD5-Wert eines Strings

27.10.06 - .NET, Base Framework
Beitrag von Norbert Eder
 Immer wieder taucht die Frage auf (obwohl an vielen Stellen im Internet auffindbar), wie denn ein String in einen MD5-Hash umgewandelt werden kann. Hier ein kleines Codesnippet dazu:

public static string GetOneWayHash(string val)
{
byte[] data = System.Text.ASCIIEncoding.ASCII.GetBytes(val);
MD5 md5 = new MD5CryptoServiceProvider();
byte[] res = md5.ComputeHash(data);
return System.Convert.ToBase64String(res, 0, res.Length);
}

Ich möchte hierzu jedoch einen sehr wichtigen Punkt loswerden, der oftmals falsch interpretiert wird:
Ein MD5 ist ein Hashverfahren und keine Verschlüsselung. Dies bedeutet, dass das Zurückgewinnen des ursprünglichen Wertes im Normalfall nicht möglich ist. Warum nur im Normalfall: Beispielsweise sollten Passwörter nie in ihrem originalen Wert abgespeichert werden. Hierfür bieten sich Hashverfahren ab, die einen Hashvalue errechnen und diesen anstatt des ursprünglichen Passwortes ablegen. Aus dem resultierenden Wert soll es nicht möglich sein, das eigentliche Passwort zu errechnen. Im Gegensatz zur Verschlüsselung. Hier ist es von absoluter Wichtigkeit, die ursprünglichen Daten in derselben Form zurück zu erhalten.

  2 Kommentare - 1703 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Firefox 2: Des Krampfes Kampf

26.10.06 - Internet
Beitrag von Norbert Eder
 Nachdem Firefox von Jedermann hochgejubelt wird, hier auch ein paar Jubelworte von mir *grrrr*:

Schöner Feiertag heute in Österreich und da kam mir doch in den Sinn, auch auf meinem Laptop alle Tools auf die neuesten Versionsnummern zu bringen. So auch Firefox.

Alles klar, runtergeladen, Installation gestartet. Alles durchgelaufen. Firefox gestartet. Neugier. AAAAAAANGST.

Irgendwie sah er doch so richtig komisch aus, verschobene Adressleiste, schwindlige Buttons usw. Erster Tipp: Ah, da ist wohl der von mir verwendete Skin nicht ganz kompatibel. Also gleich mal alle Add-Ons und den Skin deaktiviert und alles auf Standard gestellt. Firefox neu gestartet.

Gut, sieht ja jetzt aus, wie es aussehen soll. Passt. Surfen kann beginnen. Url in die Adressleiste eingegeben. Enter. *Wart*, *Wart*, ... irgendwie passiert nichts. Andere Url eingegeben, Enter. Wieder nichts. AAAAAAAANGST.

Nächste Idee. Googlesuche via Google-Toolbar. Funktioniert. Ok, dürfte anscheinend wohl ein kurzzeitiges Funktionserbrechen des Firefoxes sein. Wieder eine Url in die Adressleiste eingegeben, wieder nichts.

Ok, eigentlich ja nicht so schlimm, denn viele der oft von mir besuchten Seiten sind natürlich in den Bookmarks enthalten. Also Bookmarks öffnen ... der werte Leser darf jetzt kurz raten ... AAAAAANGST. Alle Bookmarks weg. Richtig. Alle weg.

File-Explorer geöffnet, nachgesehen. Indeed. Alle Bookmarks weg. Und das erste Mal war ich so richtig glücklich darüber, dass ich mir vor Zeiten ein kleines Tool zur Bookmark-Synchronisation geschrieben habe und daher alle Firefox-Bookmarks auch im IE verfügbar sind.

Daher ein kurzer Apell an alle Software-Entwickler (also auch an mich selbst): Hey, ich will Software nutzen und nicht stundenlang via Google oder anderen Suchmaschinen nach irgendwelchen Lösungen für Software-Probleme suchen. Und wenn es beispielsweise Firefox nicht schafft bei einer Installation zu überprüfen ob vorhandene Add-Ons bzw. Skins kompatibel sind, dann ist es immer noch besser, diese zuvor zu deaktivieren.

Damit hat sich die Entscheidung zwischen IE 7 und Firefox quasi von alleine erledigt.

ZUSATZ
Firefox war ja bei mir als Standard-Browser eingetragen. D.h. bei einem Klick auf einen Link geht eben - oh Wunder - Firefox auf und lädt die entsprechende Seite. Und seit ich eben auf einen Link klickte, kann ich über die Adressleiste auch wieder Urls eingeben und gelange sogar auf die entsprechende Seite. Stranges verhalten. Vielleicht sollte ich das ein zweites Mal machen, eventuell sind dann meine Bookmarks auch wieder da ;-) Oder ich spiel einfach ein Backup zurück.

  6 Kommentare - 1076 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Add-Ons für Internet Explorer 7

25.10.06 - Internet
Beitrag von Norbert Eder
 Unter http://www.ieaddons.com findet man ja jede Menge Add-ons, aber im Vergleich zu Firefox Add-ons stellen sich mir natürlich einige Fragen:

1) Warum gibt es keine wirklich guten Add-ons für den IE? Ich nehme hier als Beispiel Add-ons für Mouse Gestures. Abstürze ohne Ende und funktional bei weitem nicht in Reichweite entsprechender Firefox Extensions.

2) Warum kostet Software sofort etwas, wenn es etwas mit Microsoft zu tun hat? Denn vermeintlich gute Add-ons sind kostenpflichtig. Ich mein, sorry, aber bevor ich mir da eine IE Extension kauf, verwende ich Firefox, hab bessere Add-ons und das natürlich für lau.

3) Warum muss es für bestimmte Dinge überhaupt Add-ons geben? Ich denke hier an die Verwaltung der Bookmarks. Da hätte man bei der Entwicklung des IE7 auch ein wenig mehr Augenmerk darauf legen können. Da fällt die Bearbeitung der Links via Notepad schon fast benutzerfreundlicher aus.

Das einzige was ich beim IE7 wirklich cool finde ist die Quick-Tabs-Funktionalität. Aber ehrlich, wie oft braucht man das?

Also ich hoffe jetzt wirklich, dass da am IE weitergearbeitet wird und wir nicht wieder jahrelang auf eine neue Version warten müssen, denn da ist definitiv noch viel zu tun.

PS: Wenn jemand wirklich gute und kostenlose Add-ons gefunden hat (Bookmarks, Gestures etc.) dann wäre ich über eine kurze Benachrichtigung dankbar.

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


Documentation Generator: CodeDoc

25.10.06 - 3rd Party Tools
Beitrag von Norbert Eder
 Aus Zufall bin ich heute auf den Documentation Generator CodeDoc [1] gestoßen. Das Teil ist Freeware und scheint die notwendigsten Funktionalitäten mitzubringen. Die Demo sieht mal ganz gut aus. Ein Test wird sich wohl nicht vermeiden lassen. Wer also noch auf der Suche nach einem entsprechenden Tool ist, der könnte sich CodeDoc durchaus mal genauer ansehen.

[1] CodeDoc Documentation Generator

  1 Kommentar - 1080 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Fachartikel: Windows Presentation Foundation - User Interfaces leicht gemacht?

24.10.06 - .NET, WPF
Beitrag von Norbert Eder
 In der aktuellen Ausgabe der Visual Studio One findet sich ein Artikel von mir zum Thema Windows Presentation Foundation - User Interfaces leicht gemacht?.

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



Zurück Weiter