-
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.
|
Technologie einmal umweltbewußter? Es wäre an der Zeit ...
01.10.07 - Entwicklung, Diskussionen, Kunterbunt Beitrag von Norbert Eder| | Technologie. Bei diesem Begriff denkt man unwillkürlich an Fortschritt, an vereinfachte Arbeitsabläufe (oft gar nicht der Fall) und an tolle Errungenschaften. Dabei auf der Strecke bleibt wohl großteils die Umwelt. Nicht nur, dass Tonnen von Rohstoffe für einen PC verbraucht werden, irgendwie muss das Teil auch Strom bekommen und hier sind wir natürlich auch noch lange nicht bei 100% Wasser-, Wind- bzw. Sonnenenergie angelangt.
Tatsache ist, dass in den letzten Jahren alles nur schneller und kleiner (bei manchen Geräten auch größer) sein musste. Man nehme das Thema Grafikkarten: Noch bessere Auflösungen, mehr Details, noch mehr Polygone. Wenn das nicht reicht, dann stecken wir einfach zwei Grafikchips auf eine Karte. Was wurde hier vergessen? Nun, der Stromverbrauch. Wozu bitte ein 1000 Watt Netzteil? Wieso wird nicht einmal versucht die aktuelle Leistung beizubehalten mit gleichzeitiger Senkung des Stromverbrauchs? Nicht nur, dass durch den erhöhten Bedarf an Strom die Kosten für eben diesen in die Höhe schnellen, auch schädigen wir damit unsere Umwelt.
Nächstes Thema - vielleicht jetzt weniger auf den IT-Sektor bezogen, aber dennoch ein schönes Beispiel: Milliarden werden beispielsweise in die Formel 1 gesteckt. Mit welchem Ziel? Nun, Fahrer können noch mehr Geld verdienen (wozu bitte??) und die Autos sollen schneller werden. Werden sie zu schnell, dann werden wieder Reglements getroffen damit die Motorenhersteller wieder von vorne beginnen können (und die Teams mit ihrer gesamten Technik). Wie wäre es einmal, wenn man die Formel 1 (und den Ralleysport etc.) um alternative Möglichkeiten zu entwickeln und zu testen? Das Geld wäre doch vorhanden und DAS würde nicht die Umwelt verpesten, nein, sondern die Menschheit vielleicht sogar wirklich einen Schritt weiter bringen.
Hierfür gibt es viele Beispiele. Technologie muss nichts Schlechtes sein. Sie muss nur richtig eingesetzt werden und manche Entscheidungsträger sollten einfach einmal genauer über die Sinnhaftigkeit ihrer (Nicht-)Entscheidungen nachdenken.
Und vielleicht sollte auch jeder von uns darüber nachdenken. Ewig kann es so nicht weitergehen und es liegt auch an uns Akzente zu setzen. Muss es wirklich die schnellste und beste Grafikkarte sein, um ein paar Zeilen Code zu tippen?
| | | 1 Kommentar
- 347 mal angesehen
| 0 Trackbacks
| Permalink | Trackback-URL |
Exception Handling und Security
01.10.07 - .NET, Grundlagen, Base Framework, WPF, ASP.NET Beitrag von Norbert Eder| | Zum Exception Handling habe ich bereits hier, hier und hier berichtet. Was aber bis dato gefehlt hat, war eine Aussage zum Thema Sicherheit bei der Behandlung von Ausnahmen.
Was also hat das Behandeln von Ausnahmen mit Sicherheit zu tun?
In den meisten Fällen wird bei einer Exception der Inhalt der Eigenschaft Message zurückgegeben und in der Hauptanwendung (egal ob Windows Forms, Web, WPF) zur Anzeige gebracht. Dadurch werden jedoch in manchen Fällen Daten zum Vorschein gebracht, die besser im Verborgenen bleiben sollten. Nehmen wir das Beispiel Webanwendung. Gehen wir weiters davon aus, dass diese eine Verbindung zu einer Datenbank benötigt. Nun wird hier im System ein ConnectionString hinterlegt (natürlich gilt es auch diesen abzusichern). Nun kann folgendes Problem auftreten:
Die Anmeldung auf den Datenbank-Server schlägt fehl. Daraufhin wird eine Exception geworfen, welche dann im User-Interface angezeigt wird (entsweder per eigener Fehlerseite oder überhaupt als Exception). Aus dem Message-Text ist nun ersichtlich, dass die Anmeldung scheitterte und mit welchem User die Anmeldung versucht wurde.
Ein potentieller Angreifer hat nun ein leichteres Spiel, da er einen User für die Datenbank definitiv kennt.
Dies ist nur ein einfaches Beispiel. Aus diesem Grunde sollten Exception-Messages niemals direkt an den User weitergegeben werden. Folgende Vorgehensweise ist hier empfohlen:
1. Jede Exception abfangen
2. Exceptions in eine Log-Datei loggen (Bei Webanwendungen sollte die Log-Datei in ein Verzeichnis geschrieben werden, welches nicht über das Web zugänglich ist)
3. Fehlertexte, die an den User gehen sollten unbedingt zuvor angepasst werden. D.h. ein eigener Wortlaut muss deklariert werden.
Schließlich bleibt noch zu erwähnen, dass dem User nicht jeder Fehler sichtbar gemacht werden muss. Mit vielen Fehlern kann der Unser ohnehin nichts anfangen und sie verwirren ihn nur. Ergo immer überlegen, ob die Benachrichtigung im speziellen Fall sinnvoll ist oder nicht.
| | | 2 Kommentare
- 342 mal angesehen
| 1 Trackbacks
| Permalink | Trackback-URL |
LINQ to XML: Ein einfaches Beispiel
30.09.07 - .NET, Grundlagen, Allerlei Beitrag von Norbert Eder| | LINQ ist derzeit ein recht beliebtes Thema, viele Beiträge werden dazu verfasst. Auch ich möchte an dieser Stelle ein kleines, sehr einfaches Beispiel zu LINQ to XML zeigen. Es soll verdeutlichen, wie wenig Aufwand es bedarf, eine XML-Datei auszulesen. Zudem wird die Verwendung des Schlüsselwortes var gezeigt.
Ausgangspunkt ist das nachfolgende XML:
Und hier auch gleich das Beispiel:
if (File.Exists("Persons.xml"))
{
XDocument personDoc = XDocument.Load("Persons.xml");
var personList = from p in personDoc.Descendants("Person")
select new {
Firstname = (string) p.Element("Firstname"),
Lastname = (string) p.Element("Lastname"),
Email = (string) p.Element("Email"),
Weblog = (string) p.Element("Weblog"),
Active = (int?) p.Element("Active") ?? 0
};
foreach (var person in personList)
{
Console.WriteLine("Firstname: " + person.Firstname);
Console.WriteLine("Lastname: " + person.Lastname);
Console.WriteLine("Email: " + person.Email);
Console.WriteLine("Weblog: " + person.Weblog);
Console.WriteLine("Active: " + person.Active.ToString());
Console.WriteLine("----------------------------------------");
}
Console.ReadKey();
}
Grundsätzlich wird das XML in ein XDocument geladen. Nun wird mittels var ein anonymer Typ angelegt, welcher die Ergebnisliste der Abfrage aufnimmt.
Innerhalb des Select new werden die einzelnen Eigenschaften definiert und auf welches Element diese mappen. Per IntelliSense stehen in weiterer Folge diese Eigenschaften unseres anonymen Types zur Verfügung. Zu beachten ist an dieser Stelle vielleicht noch, dass die Eigenschaft Active als nullable Type definiert wird. Dies hat den Hintergrund, dass es an dieser Stelle zu einer Exception käme, wäre das Element Active nicht vorhanden. Zusammen mit dem ??-Operator kann dadurch auf null abgefragt werden und in diesem Falle der Wert 0 zugewiesen werden.
Anschließend wird in einer for each Schleife sämtliche eingelesenen Datensätze ausgegeben. Und schon sind wir mit unserem Beispiel fertig.
| | | Kommentar hinzufügen
| 0 Trackbacks
| Permalink | Trackback-URL |
Visual Studio 2008: Bessere Performance?
29.09.07 - .NET, Visual Studio Beitrag von Norbert Eder| | Gerade das Thema Performance war punkto Visual Studio immer ein Spezialfall. Sobald Solutions wachsen wird auch die Entwicklungsumgebung immer langsamer. Zeit also, hier einige Verbesserungen zu bringen.
Soma Somasegar führt auf, an welchen Stellen gedreht wurde um die Performance von Visual Studio 2008 zu verbessern. Hier ein Auszug:
- Rebuilding a Visual Basic project and running a background compiler is 3x faster and uses 3x less memory.
- Scrolling large C# files in the Editor is 100% faster, while typing in new text is 50% faster
- The response time of IntelliSense with large types in C# is up to 10 times faster
- Incremental build time runs up to 90% faster on C++/CLI project solutions.
- Office Word and Excel files are processed 20x faster on the server
- TFS Version Control command processing was re-written to support unlimited sized operations on key commands without being memory bound on the server. In our measurements, key Commands also run 10% - 60% faster, with the larger improvements associated with bigger projects.
| | | 9 Kommentare
- 1456 mal angesehen
| 0 Trackbacks
| Permalink | Trackback-URL |
Update der Trickkiste
28.09.07 - Blog-Intern Beitrag von Norbert Eder
blog.norberteder.com ist CLIP-Mitglied
28.09.07 - Blog-Intern Beitrag von Norbert Eder| | Vor ca. 1-2 Wochen wurde mein Blog als Mitglied in das Microsoft CLIP-Programm aufgenommen. Worum handelt es sich hierbei?
CLIP ist das Basis-Betreuungsprogramm von Microsoft für alle Betreiber deutschsprachiger, nichtkommerzieller Online- und Offline-Communities, die sich mit Microsoft-Produkten, -Services und -Technologien beschäftigen - z.B. in Form von Web-Portalen, Online-Foren oder User Groups.
Mit CLIP möchte Microsoft Sie bei Ihrer Community-Arbeit unterstützen. CLIP hilft Ihnen mit persönlicher Betreuung durch Microsoft-Experten, versorgt Sie frühzeitig mit technischen Informationen und kümmert sich darum, dass Ihre qualifizierten Community-Services die öffentliche Resonanz erfahren, die sie verdienen.
Generell freut es mich sehr, in der Community ein kleines Stück nach oben zu klettern. Unabhängig dessen bleibe ich dennoch unabhängig von Microsoft und werde auch zukünftig meine Meinung kund tun - sollte ich dies als notwendig erachten. Und natürlich wird es weiterhin aktuelle Infos und Hilfen zu .NET Themen geben.
Es freut mich, dass meine Arbeit ausgezeichnet wurde und dass ich so vielen Besuchern meines Weblogs bis dato helfen konnte (ja, es finden sich doch sehr viele Anfragen in meiner Mailbox) und werde dies auch weiterhin zu handhaben.
Norbert Eder, Team .NET Community!
| | | 6 Kommentare
- 561 mal angesehen
| 0 Trackbacks
| Permalink | Trackback-URL |
Mobilität hat ihren Preis, oder nicht?
28.09.07 - Kunterbunt Beitrag von Norbert Eder| | Im Beitrag Mobilität: Heute und Gestern habe ich bereits zu diesem Thema einige Gedanken veröffentlicht, welcher auch prompt zu einem Artikel von Torsten Weber gepasst hat.
Nun möchte ich dem noch einige Gedanken hinzufügen, da ich in der letzten Zeit doch des Öfteren im Ausland war und daher meine Mobilität dann doch mehr oder weniger eingeschränkt war. Warum das?
Ganz einfach! Alles wird mobiler. Sämtliche Geräte, Breitband am Handy, Internetzugang überall - und immer. Solange man im eigenen Land ist. Definitiv. Kaum im Ausland kann man sich den Datentransfer kaum mehr leisten, zumal man die Breitband-Dienste der Handyanbieter nutzt. Ein schnelles Nachsehen im Internet oder Checken der Mails kann hier sehr schnell einige Euros wert sein.
Weiters kommt hinzu, dass sehr viele Hotels lediglich einen Hotspot von Handy-Betreibern anbieten, die einen absolut überhöhten Stundensatz verlangen. Wie war das genau? 8 Euro die Stunde? Das kann es dann auch wirklich nicht sein. Jedes gute Hotel bietet mittlerweile WLAN an. For free oder zu einem geringen Betrag. Aber 8 Euro die Stunde ist doch wirklich eine Frecheit sonder gleichen. Tatsache.
Genau diese Punkte schränken die zunehmende Mobilität wieder sehr stark ein. Oder wie war das mit den Roaming-Gebühren? Da war doch etwas mit max. 43 oder 49 Cent im Gespräch. Soweit ich das mitbekommen habe (man berichte mich, sollte ich das falsch verstanden haben) sollte dies EU-weit gelten, als maximale Roaming-Gebühren. Ttatsächlich werden aber wesentlich höhere Kosten verrechnet (denn die paar Cent gelten ja irgendwie auch nur für irgendwelche Urlaubsdestinationen). Oder sehe ich hier etwas falsch? Nun ja, meine Handy-Rechnung spricht andere Worte. Ist mir zwar grundsätzlich egal, da ich in der glücklichen Lage bin, mir das leisten zu können, aber dennoch verstehe ich die Roaminggebühren in der heutigen Zeit nicht wirklich. Wenn ich in Österreich ein angemeldetes A1-Handy habe (wobei anzumerken ist, dass A1 mit Vodafone zusammenarbeitet, oder wie auch immer deren gemeinsamer Status ist), dann sehe ich die Roaminggebühren einfach nicht ein, wenn ich dann in Deutschland mit Vodafone telefoniere. Verdienen für nichts. Das sollte ich mir als Software-Entwickler einmal leisten.
Na wie dem auch sei, es gibt genügend Dinge, die die Mobilität gewaltig einschränken. Solange es dafür keine entsprechende Lösung gibt, kann man in der Tat nicht von Mobilität sprechen. Zumindest nicht von länder-übergreifender.
| | | Kommentar hinzufügen
| 0 Trackbacks
| Permalink | Trackback-URL |
Google Analytics offline nutzen
28.09.07 - Internet, Tools, 3rd Party Tools, Kunterbunt Beitrag von Norbert Eder
C# 3.0: Anonyme Typen
28.09.07 - .NET, Grundlagen, Base Framework, Allerlei Beitrag von Norbert Eder| | Nachdem ich bereits über Anonymen Delegates (auch unter .NET 2.0 verfügbar) als auch dem unter C# 3.0 neuen Keyword var geschrieben habe, möchte ich ein wenig über Anonyme Typen schreiben.
Anonyme Typen sind ähnlich zu anonymen Methoden (dazu kommen wir dann auch in einem der nächsten Blogbeiträge).Dies bedeutet, dass anonyme Typen inline gebildet werden können. Um dies zu verdeutlichen gleich ein kleines Beispiel:
Wie zu sehen ist, ist hierfür das Schlüsselwort var zu verwenden. Die Definition erfolgt inline und definiert welche Eigenschaften der neue Typ hat. Selbst IntelliSense kennt die neuen Eigenschaften.
Anonyme Typen kennzeichnen sich dadurch aus, dass sie keinen zugewiesenen Namen besitzen (dies ist auch in der Typen-Beschreibung - siehe IntelliSense - ersichtlich).
Werden im gleichen Scope zwei anonyme Typen definiert, welche die gleiche Signatur besitzen, kann der erste Type den zweiten einfach übernehmen, wie nachfolgend zu sehen:
Wozu werden anonyme Typen nun gebraucht?
Zum einen wurden anonyme Typen natürlich für LINQ eingeführt. Diese werden dort häufig verwendet und bilden daher eine Notwendigkeit. Aber auch für andere Zwecke können sie verwendet werden.
Grundsätzlich bieten sich anonyme Type dann an, wenn ein Typ kurzfristig (für die Ausgabe etc.) benötigt wird, aber nicht für die gesamte Anwendung zur Verfügung stehen muss. In diesem Fall muss also keine eigene Klasse erstellt werden, welche schlussendlich nur an einer einzigen Stelle verwendet werden würde. Wann anonyme Typen einzusenden sind bleibt jedem Entwickler selbst überlassen. Unter dem obigen Gesichtspunkt sollte aber durchaus klar sein, wann eine Verwendung sinnvoll ist und wann weniger.
| | | Kommentar hinzufügen
| 0 Trackbacks
| Permalink | Trackback-URL |
Windows Vista und Ultimate-Extras
27.09.07 - Kunterbunt Beitrag von Norbert Eder| | Nachdem mit einem neuen Ultimate-Extra wieder etwas Bewegung in diese Geschichte kam, muss ich doch glatt eine Anmerkung dazu machen. Keine Ahnung wie ihr das seht, aber dieses tolle neue Windows DreamScene sieht zwar ganz nett aus, würde ich jedoch jetzt nicht unbedingt als ein Wahnsinns-Extra bezeichnen. Im Alltag ohnehin nicht zu gebrauchen, da es einfach zu viele Ressourcen zieht.
Stattdessen wären wirklich sinnvolle Erweiterungen als Ultimate-Extras sinnvoll. Eventuell werfen sie ja noch einen neuen Screensaver nach, damit die Extras tatsächlich an Wert gewinnen *sarcasm mode off*.
Man wird ja sehen wann die angekündigten 19 weiteren MUI-Sprachpakete kommen und was dem Ultimate-Extras-Team zukünftig noch einfällt. Ich hoffe mal sinnvolle Erweiterungen ...
Informationen rund um Extras, Windows Vista Ultimate usw. sind unter http://windowsultimate.com/ zu finden.
| | | 3 Kommentare
- 425 mal angesehen
| 0 Trackbacks
| Permalink | Trackback-URL | Zurück Weiter
|
|
|
|
|
|
|