-
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.
|
Rude Q&A - Die etwas andere FAQ
26.06.07 - Entwicklung, Diskussionen, Qualitätsmgmt. Beitrag von Norbert Eder| | Frequently Asked Questions (FAQ) sind hinreichend bekannt. Was aber hat es mit dem Begriff Rude Q&A auf sich? Sehr einfach erklärt.
Zu jedem Projekt (Software oder nicht) können tonnenweise Fragen gestellt werden. Manche sind für alle von Interesse (typischer Fall für eine FAQ), manche sind unangenehm und würden am liebsten nicht beantwortet werden bzw. sind ohnehin nicht für die Allgemeinheit bestimmt (sinnvoll für eine Rude Q&A). Zusammenfassend: Eine Rude Q&A enthält alle unangenehmen Fragen zu einem Produkt, Unternehmen etc.
Was bringt das nun? Fragen sind da, um sich mit ihnen zu beschäftigen, und sie auch zu beantworten. Vor allem unangenehme Fragen werden oft nicht beantwortet, sei es aus eigener Angst heraus oder bedingt durch andere Gründe. Fakt ist jedoch, dass man auf alle Fragen eine Antwort parat haben sollte. Durch die Beschäftigung mit einer Frage wird also eine Vorbereitung betrieben, die sich im Falle des Falles auf jeden Fall auszahlt. Zudem empfiehlt es sich, die notierten Fragen von Zeit zu Zeit zu überarbeiten, denn schlechte Antworten sind oft schlimmer, als gar keine.
via Scott Berkun
| | | Kommentar hinzufügen
| 0 Trackbacks
| Permalink | Trackback-URL |
Sandcastle Help File Builder 1.5.0.0 verfügbar
26.06.07 - Tools, 3rd Party Tools Beitrag von Norbert Eder
DasBackup: Fehlermeldung bei der Synchronisation
25.06.07 - Tools, DasBackup Beitrag von Norbert Eder| | Beim Versuch eine Synchronisation anzustarten, erscheint der Fehler Cannot synchronize as there are no properties given. Dies betrifft die aktuelle Beta-Version 1.1.3. Hier liegt ein Bug vor, der leider in diese Version hineingerutscht wird. Dadurch kann die Synchronisation nicht getestet werden. Da ohnehin in den nächsten Tagen das Release erscheinen wird, gibt es dafür kein extra Update.
| | | Kommentar hinzufügen
| 0 Trackbacks
| Permalink | Trackback-URL |
C#: Der as-Operator
24.06.07 - .NET, Grundlagen, Base Framework Beitrag von Norbert Eder| | Einführung as-Operator
Der as-Operator ist ähnlich einer Cast-Operation. Im Gegensatz zu einem Cast liefert as jedoch keine Ausnahme (Exception), sondern gibt null zurück. Ein Beispiel:
object o = new MyDemoClass();
MyDemoClass mdc = o as MyDemoClass;
Die Cast-Variante würde wie folgt aussehen:
object o = new MyDemoClass();
MyDemoClass mdc = (MyDemoClass)o;
Ein Äquivalent zum as-Operator könnte so formuliert werden:
object o = new MyDemoClass();
MyDemoClass demoClass =
(o is MyDemoClass) ? (MyDemoClass)o : null;
Für benutzer-definierte Konvertierungen muss ein Cast verwendet werden, da dies durch den as-Operator nicht abgebildet wird (nur Referenzen und Boxing).
Performance
Bezüglich der Performance gibt es einen kleinen Unterschied, der sich allerdings erst bei einer hohen Anzahl an Durchläufen auswirkt. Ein Test mit 1 Milliarde Iterationen zeigte einen deutlichen Unterschied, sollte jedoch in der Praxis in dieser Form nicht allzu oft vorkommen. Hier die Testanwendung:
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
namespace AsTest
{
class Program
{
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
object o = new MyDemoClass();
sw.Start();
for (int i = 0; i < 1000000000; i++)
{
MyDemoClass mdc = o as MyDemoClass;
}
sw.Stop();
Console.WriteLine("as: " +
sw.ElapsedMilliseconds);
sw.Reset();
sw.Start();
for (int i = 0; i < 1000000000; i++)
{
MyDemoClass mdc = (MyDemoClass)o;
}
sw.Stop();
Console.WriteLine("cast: " +
sw.ElapsedMilliseconds);
Console.ReadKey();
}
}
public class MyDemoClass
{
}
}
Output
as: 6135
cast: 5583
Fazit
In vielen Fällen wäre der as-Operator einem Cast vorzuziehen, da hier einer eventuellen Exception vorgebeugt werden kann (im Falle eines Casts müsste davor via is-Operator überprüft werden, ob es sich um den gewünschten Typ handelt). Auf jeden Fall muss das Objekt anschließend auf null überprüft werden.
| | | 1 Kommentar
- 755 mal angesehen
| 0 Trackbacks
| Permalink | Trackback-URL |
Visual Studio 2005: Refactoring-Performance verbessern
24.06.07 - .NET, Visual Studio Beitrag von Norbert Eder| | Mit zunehmender Projektgröße wird auch das integrierte Refactoring ständig langsamer, bis es schließlich überhaupt nicht mehr verwendbar ist. Äußerst schlimm ist dies bei Web Projekten. Hintergrund ist der, dass so gut wie jeglicher Content für das Refactoring herangezogen wird. Eine Möglichkeit, einzelne Projekte auszuwählen oder bestimmte Teile der Solution nicht mit einzubeziehen ist ebenfalls nicht vorhanden. Dennoch gibt es eine kleine Variante, welche das Refactoring deutlich beschleunigt. Wie in vielen Fällen ist die Lösung über die Registry möglich:
1. Alle offenen Visual Studio 2005 Instanzen schließen
2. regedit starten
3. HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\
CSharp\Options\Editor
4. Neuer Eintrag: "Neuer DWORD-Wert"
5. Dem Eintrag den Namen OpenAllVenusFilesOnRefactor verpassen und den Wert auf 0 belassen
Nach einem Neustart sollte nun das Refactoring deutlich schneller laufen, ASP.NET Pages, Inline .asmx und .asax Code werden nicht mehr berücksichtigt.
Wer die Startzeit von Visual Studio 2005 verbessern möchte, sei auf den Eintrag Visual Studio 2005 schneller starten verwiesen.
Und noch ein Hinweis: Refactoring gibt es auch für Visual Basic 2005. Hierfür einfach Refactor! verwenden.
| | | Kommentar hinzufügen
| 0 Trackbacks
| Permalink | Trackback-URL |
Was hat ein Formel1 Auto mit We are the champions von Queen zu tun?
23.06.07 - Kunterbunt Beitrag von Norbert Eder
Visual Studio 2005: Region-Blöcke per Tastatur auf- und zuklappen
23.06.07 - .NET, Visual Studio Beitrag von Norbert Eder| | Regions sind eine sehr nette Sache, möchte man Methoden, Eigenschaften, Attribute oder andere zusammengehörigen Teile einer Datei in Bereiche unterteilen. Wer nun aber möglichst wenig zur Maus greifen möchte, stellt sich sehr schnell die Frage, wie denn Regions-Blöcke per Tastatur auf- bzw. zugeklappt werden können:
STRG+M STRG+M
Und schon wieder ein Griff weniger zur Maus. Dass es doch tatsächlich immer wieder Tastenkombinationen gibt, die man ständig vergisst ...
| | | 1 Kommentar
- 437 mal angesehen
| 0 Trackbacks
| Permalink | Trackback-URL |
Visual Studio 2005: Anpassung Class Template
23.06.07 - .NET, Visual Studio Beitrag von Norbert Eder| | Im Beitrag Visual Studio: Anpassung Class Templates habe ich bereits beschrieben, wie die Klassen-Templates (wird verwendet beim Anlegen einer neuen Klasse) an eigene Bedürfnisse angepasst werden können. Hier nun, wie dies unter Visual Studio 2005 gemacht werden kann.
Die Class-Templates können unter
C:\Programme\Microsoft Visual Studio
8\Common7\IDE\ItemTemplatesCache\CSharp\1033\Class.zip\
gefunden werden (liegen also in einem anderen Pfad, als unter Visual Studio 2003). Im darüberliegenden Verzeichnis finden sich übrigens die Templates für die AssemblyInfo, Form, den Installer und alle anderen bekannten Templates. Diese sind weiters in die jeweiligen Programmiersprachen unterteilt, wodurch auch VB.NET-Entwickler ihre Templates schnell finden sollten.
Standardmäßig sieht das Class-Template so aus:
using System;
using System.Collections.Generic;
using System.Text;
namespace $rootnamespace$
{
class $safeitemrootname$
{
}
}
So manchem stört das fehlende public, sowie auch - in einigen Fällen - vordefinierte Regions. Durch folgende Anpassung der Vorlage gehört dieser Missstand der Vergangenheit an:
using System;
using System.Collections.Generic;
using System.Text;
namespace $rootnamespace$
{
public class $safeitemrootname$
{
#region Attributes
#endregion
#region Properties
#endregion
#region Private Methods
#endregion
#region Public Methods
#endregion
}
}
So einfach wie diese Erweiterung können auch zusätzliche Namespaces eingetragen werden.
| | | Kommentar hinzufügen
| 0 Trackbacks
| Permalink | Trackback-URL |
Windows Live Mail und RSS Feeds - typisch Microsoft
23.06.07 - Tools, 3rd Party Tools Beitrag von Norbert Eder| | Da ich in den letzten Tagen ein paar Minuten übrig hatte, habe ich mir einmal Windows Live Mail Beta angesehen. Sieht ja so ganz nett aus und bietet auch die Möglichkeit mehrere Konten zu verwalten (auch IMAP). Jedoch bei den RSS-Feeds kam wieder ein typischer Microsoft-Tiefschlag.
Auch wenn es eine schöne nette RSS Plattform von Microsoft gibt, wird diese ja anscheinend nur mit dem IE7 ausgeliefert bzw. ist auf Systemen mit IE7 vorhanden. Was tun nun diejenigen, die Windows Live Mail verwenden wollen, aber nicht den IE7 (weil es aufgrund diverser Projekte beispielsweise nicht möglich ist)? Na? Richtig: Einen alternativen RSS Reader verwenden und somit wieder 100.000 unterschiedliche Tools installieren.
Das finde ich richtig schwach.
| | | 1 Kommentar
- 510 mal angesehen
| 0 Trackbacks
| Permalink | Trackback-URL |
Musikempfehlung zum Freitag
22.06.07 - Blog-Intern Beitrag von Norbert Eder| | Nachdem ich mich in letzter Zeit wieder mit neuer Musik eingedeckt habe, möchte ich an dieser Stelle zwei Tipps loswerden, die (was meinen Musikgeschmack betrifft) gut gelungen sind und somit auf jeden Fall hörenswert sind.
Eine recht ungewöhnliche Platte von Marilyn Manson, die sich einem erst nach dem 2. bis 3. Durchlauf erschließt. Dafür gefällt sie dann umso besser.
Auch Type O Negative gibt sich mit einer neuen Scheibe die Ehre. Meiner Meinung nach zwar nicht mehr ganz so depressiv wie ältere Platten, aber auch nicht von schlechten Eltern.
Wer also einen ähnlichen Musikgeschmack besitzt, sollte jedenfalls mal rein hören.
| | | Kommentar hinzufügen
| 0 Trackbacks
| Permalink | Trackback-URL | Zurück Weiter
|
|
|
|
|
|
|