-
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.
|
Dummer Kunde, guter Kunde?
26.02.07 - Kunterbunt Beitrag von Norbert Eder| | Das denkt sich anscheinend nicht nur Apple. Nein, auch Sony scheint mittlerweile auf den Geschmack gekommen zu sein, seine Kunden zu veräppeln. Laut Golem gibt es für eine wunderbare eigene Europa-Version der PlayStation 3, welche die Emotion-Engine-Hardware der PlayStation 2 im Gegensatz zur US- bzw. Japan-Variante nicht besitzt. Das bedeutet für den Kunden, dass dann wohl die Abwärtskompatibilität zu PS2-Spielen ein wenig leiden wird ...
Zusammen mit der "Vorbestellungs-Gebühr" entwickelt sich Sony hier in meinen Augen zu einem absoluten No Go.
| | | 3 Kommentare
- 1075 mal angesehen
| 0 Trackbacks
| Permalink | Trackback-URL |
Einführung in die Serialisierung unter .NET
23.02.07 - .NET, Grundlagen Beitrag von Norbert Eder
Livecast-Mitschnitt zum Thema Serialisierung verfügbar
21.02.07 - .NET, Grundlagen, Allerlei Beitrag von Norbert Eder
Auf .NET Casts tut sich etwas!
19.02.07 - .NET, Allerlei Beitrag von Norbert Eder| | Änderungen bzw. Verbesserungen ergeben sich aus der gemachten Erfahrung. So ergeht es uns auch mit .NET Casts.
Wer in den letzten Tagen auf die Webseite gesehen hat, konnte feststellen, dass sich einiges verändert hat - und hoffentlich zum Guten.
Hier kurz zusammengefasst:
Neue Sidebars
Die neuen Sidebars sollen über die kommenden Livecasts und Podcasts informieren. So werden die geplanten Themen als auch die genauen Termine im Blickfeld angezeigt.
Codes Resolver
In unseren Podcasts verwenden wir nur Codes anstatt URLs. Diese Codes können auf der Webseite nachgeschlagen werden. Da wir erst einen Podcast veröffentlicht haben, ist dies noch recht übersichtlich. Zukünftig bietet es sich aber an, den .NET Casts Codes Resolver zu verwenden. Damit sind alles Codes übersichtlich pro Podcast dargestellt und die dahinterliegenden Links können einfachst aufgerufen werden.
Überarbeitung
Sämtliche Inhaltsseiten wurden überarbeitet um optimierter Inhalt zu vermitteln. Hier werden in der kommenden Zeit noch weitere Änderungen gemacht werden, um schneller zu Informationen zu gelangen.
Neues Layout
Zur besseren Übersicht wurde auch das Layout überarbeitet. Dieses ist leider noch nicht in allen Browsern ideal, wird aber noch weitere Anpassungen erfahren.
Dies waren im Kurzüberblick die neuen Features bzw. die gemachten Änderungen. Weitere werden Folgen und natürlich auch jede Menge Content und Know-How. Stay tuned!
| | | Kommentar hinzufügen
| 1 Trackbacks
| Permalink | Trackback-URL |
Als sich einst ein Browser aufmachte ...
18.02.07 - Kunterbunt Beitrag von Norbert Eder| | Eines Tages machte sich Browser XY auf, um sich ins wunderbare Land Internet zu begeben. Ein Land, von dem gar viele Geschichten erzählt wurden. Hoch gelobt wurde es. Viel besser sollte alles sein. Frei von Sklaverei, Diskriminierung und auch Nahrung soll ausreichend vorhanden sein.
Nach wochenlangem Marsch und vielen schweren Gebirgsübergängen war es endlich soweit. Das große Internet lag vor XY und wollte erstürmt werden. Von Dorf zu Dorf hangelte sich XY (die Einwohner hier nennen ihre Dörfer Webseiten, wie komisch) und kehrte in viele Gasthäuser ein, besuchte unterschiedlichste Dienstleiser, als auch Schulen und Universitäten.
Es war, wie er es sich vorgestellt hatte. Dann veränderte sich etwas. Immer öfter wurde er bei der Ankunft in ein Dorf seltsam beäugelt, die Bewohner reagierten zunehmends unfreundlich ihm gegenüber. Bis er schließlich von einigen Dörfern ausgesperrt wurde.
Browser XY gab jedoch nicht auf und versuchte die Ursache zu finden. So änderte er seinen Namen (welcher hier seltsamerweise User Agent genannt wird) und versuchte so ins Dorf zu kommen. Siehe da, mit dieser List gewährte man ihm Einlaß und er konnte sich umsehen, Dienste in Anspruch nehmen oder einfach in ein dahinterliegendes Dorf weiterziehen.
Dadurch wurde ihm jedoch bewusst, dass das Land Internet gar nicht so war, wie es in all den Geschichten geheissen hatte. Auch hier steht Diskriminierung an der Tagesordnung. Er entschloß sich also, diskriminierende Dörfer in Zukunft nicht mehr zu besuchen und jedem Wanderer der seinen Weg kreuzte davon zu erzählen ...
... und daher das erste Foto eines bösen Dorfes:

| | | 1 Kommentar
- 1053 mal angesehen
| 0 Trackbacks
| Permalink | Trackback-URL |
ILMerge im Einsatz
18.02.07 - .NET, Allerlei Beitrag von Norbert Eder| | Mit Hilfe des ILMerge-Tools können mehrere Assemblies zu einer einzigen Assembly zusammengefügt werden. Vor allem bei größeren Projekten entsteht nicht nur eine einzige ausführbare Datei. Durch die Kapselung der Funktionalität in unterschiedliche Bibliotheken werden diese als eigenständige Assemblies abgelegt.
In einigen Fällen kann es nun erwünscht sein, diese Dateien in eine einzige zusammen zu fassen. Ein Paradebeispiel wäre die Vereinfachung des Deployment-Prozesses, da in diesem Fall lediglich eine "Anwendungsdatei" berücksichtigt werden muss (abgesehen von anderen Dateien, Einstellungen, etc. die ausgeliefert werden müssen).
Als Beispiel dient eine simple Anwendung, die nur eine Funktionalität besitzt: das Multiplizieren zweier Integer-Werte. Dafür wurde zusätzlich zur Windows Forms Anwendung eine Klassenbibliothek angelegt. Darin enthalten ist die Klasse Calculator.
Nach einem Build im Release-Modus werden die Dateien ILMergeDemo.exe und IlMergeDemo.Core.dll angelegt. Diese fassen wir nun zu einer einzigen Assembly zusammen. Dies geschieht mit dem folgenden Aufruf:
ILMerge.exe /t:winexe /out:ILMergeDemoMerged.exe ILMergeDemo.exe ILMergeDemo.Core.dll
ILMerge selbst ist eine Konsolen-Anwendung, die mittels Parameter gesteuert werden kann:
/t:filename bzw. /target:filename
Hiermit wird eingestellt, ob es sich um eine Windows Anwendung, eine Konsolenanwendung oder eine Klassenbibliothek handelt. Wird dieser Parameter nicht angegeben, entspricht der Ausgabetyp dem Typ der ersten Assembly (Primary Assembly), die der Ausgabe hinzugefügt wird.
/out:filename
Dadurch wird der Name des Ziels angegeben.
/v1 oder /v1.1 oder /v2
Diese Option ist nur bei ILMerge für das .NET Framework 2.0 verfügbar. Damit kann eine Assembly gelinkt werden, die auch unter einer anderen Framework-Version lauffähig ist.
/log:filename
Für eine automatisierte Verwendung bietet sich der Parameter /log an. Durch ihn kann die Ausgabe des Vorgangs in eine anzugebende Logdatei geschrieben werden. Etwaige Fehler können dadurch zu einem späteren Zeitpunkt gefunden und analysiert werden.
Natürlich können noch weitere Parameter angegeben werden. Diese können der Dokumentation zu ILMerge entnommen werden (ist im Download enthalten).
Vergleich mittels Reflector for .NET
Sehen wir uns die Beispielanwendung in Lutz Roeder's Reflector for .NET an, sind die beiden Assemblies extra ausgewiesen:
Nach dem Merge-Vorgang ist ersichtlich, dass sich alles in einer einzigen Assembly befindet:
Was passiert mit den Ressourcen?
ILMerge kann Ressourcen nicht zusammenführen, sondern lediglich kopieren, was bei der Ausführung auch passiert. Nun kann es bei der Laufzeit der zusammengeführten Assembly zu Fehlern kommen. Dies ist beispielsweise dann der Fall, wenn die Ressourcen Referenzen zu Typen kodieren. Diese können danach nicht mehr aufgelöst werden: Die Referenz verweist auf die ursprüngliche Assembly, die es nach dem Merge-Vorgang nicht in der "Sammel-Assembly" gibt.
Kann ich ILMerge direkt in ein Projekt einbinden?
Mit Visual Studio 2005 ist es möglich, ausführbare Assemblies als Referenz einzubinden. Dadurch kann ILMerge.exe in ein anderes Projekt quasi als Klassenbibliothek eingebunden werden.
Weitere Informationen
Kommerzielle Nutzung: Eine kommerzielle Nutzung von ILMerge ist laut Lizenz möglich.
PDB-Dateien zusammenführen: ILMerge kann auch PDB-Dateien (Debug-Informationen und Projektstatus) zusammenführen. Hierbei ist zu beachten, dass ILMerge für .NET 2.0 nur 2.0er PDB-Dateien zusammenführen kann. Jedoch können Assemblies früherer Versionen zusammengeführt werden. Mit ILMerge für das .NET Framework 1.1 können auch PDB-Dateien der 1.1er Version zusammengeführt werden.
Mono und Rotor: Bis zum aktuellen Zeitpunkt unterstützt ILMerge weder Rotor noch Mono.
GUI: Für ILMerge gibt es zur Erleichterung grafische Oberflächen von diversen Anbietern. Eine kostenlose Variante ist NuGenUnify.
Die zur Zeit aktuelle Version kann über das Microsoft Download Center bezogen werden.
| | | 1 Kommentar
- 1387 mal angesehen
| 1 Trackbacks
| Permalink | Trackback-URL |
Programme und Daten einfach von XP nach Vista bringen
18.02.07 - Internet Beitrag von Norbert Eder| | ... das verspricht Windows Easy Transfer Companion (Beta).
Windows Easy Transfer Companion enables you to automatically transfer your most important programs from your Windows XP-based PC to your new Windows Vista-based PC. This way you can become productive on your new PC as soon as possible. Easy Transfer Companion is designed to be used in addition to Windows Easy Transfer—which transfers your data and settings.
... allerdings derzeit nur für den US-Markt verfügbar.
Klingt auf jeden Fall recht interessant - sofern es tatsächlich funktioniert.
| | | Kommentar hinzufügen
- 15 mal angesehen
| 0 Trackbacks
| Permalink | Trackback-URL |
Architektur Links
18.02.07 - Entwicklung, Patterns, .NET, Allerlei Beitrag von Norbert Eder
Übersicht der nächsten Livecasts
15.02.07 | | Unsere Livecasts entwickeln sich weiter. Dies nicht nur bedingt durch unsere gemachten Erfahrungen, nein, auch Rückmeldungen geben hierzu einen entscheidenden Anhaltspunkt.
Zukünftig werden alle Livecasts unter einem bestimmten Thema stehen. Dieses Thema wird von uns rechtzeitig bekannt gegeben. Hier nun die Themen der nächsten drei Livecasts:
20. Februar 2007
Serialisierung
* Was ist Serialisierung?
* Einsatzgebiete
* Benutzerdefinierte Serialisierung
* und mehr
27. Februar 2007
Globalisierung / Lokalisierung
* Unterschied Globalisierung und Lokalisierung
* Ressourcen
6. März 2007
Webservices
* Grundlagen
* Einsatzgebiete
* und mehr
Die Livecasts beginnen stets um 20:00 Uhr.
Ablauf
Auch zum Thema Ablauf gibt es einige Änderungen. Wie bereits erwähnt, steht ab sofort jeder Livecast unter einem bestimmten Thema. Dieses Thema wird zuerst vorgetragen und anschließend in einer Diskussion besprochen. Anschließend können allgemeine Fragen gestellt werden.
Wer zu einem jeweiligen Thema bereits Fragen hat, kann uns diese gerne zusenden. Diese werden im Livecast von uns vorrangig behandelt. Fragen können auch an diesem Beitrag als Kommentar hinterlassen werden.
| | | 3 Kommentare
- 967 mal angesehen
| 1 Trackbacks
| Permalink | Trackback-URL |
Liste der installierten ADO.NET Provider abrufen
14.02.07 - .NET, Datenverwaltung Beitrag von Norbert Eder| | Möchte man überprüfen ob ein bestimmter ADO.NET Provider am System registriert ist, kann dies mit einigen Zeilen Code erledigt werden. Das nachfolgende Beispiel liefert eine Liste aller verfügbaren ADO.NET Provider.
Zu beachten ist an dieser Stelle, dass Provider, die über die App.Config eingebunden wurden, hier ebenfalls mit aufgelistet werden.
private List GetDbFactoryClasses()
{
List factClasses = new List();
DataTable dt = DbProviderFactories.GetFactoryClasses();
if (dt != null)
{
foreach (DataRow dr in dt.Rows)
{
factClasses.Add(dr[2].ToString());
}
}
return factClasses;
}
Eine Überprüfung ist nicht nur in Problemfällen sinnvoll, sondern sollte auch vor dem Laden eines Providers über DbProviderFactory geschehen. Dadurch kann eine Exception vermieden und der Benutzer entsprechend benachrichtigt werden (oder Eintrag in eine Logdatei und ähnliches).
Zur Vollständigkeit:
Ein Provider kann folgendermaßen dynamisch geladen werden:
// Nur der Vollständigkeit halber
// Wird normalerweise aus einer Konfiguration gelesen
string strProviderInvariantName = "System.Data.SqlClient";
string strConnectionString = "...";
// Laden des Providers
// Erstellen der Datenbank-Verbindung
// Zuweisung des notwendigen ConnectionStrings
DbProviderFactory dbFactory =
DbProviderFactories.GetFactory(strProviderInvariantName);
DbConnection dbConnection = dbFactory.CreateConnection();
dbConnection.ConnectionString = strConnectionString;
Wie bereits in den Code-Kommentaren angemerkt, werden diese Einstellungen normalerweise aus einer Konfiguration geladen oder in einer anderen Form an die Anwendung übergeben. Der Vorteil liegt darin, dass die Anwendung damit mit einem beliebigen ADO.NET Provider ausgeführt werden kann.
| | | Kommentar hinzufügen
| 1 Trackbacks
| Permalink | Trackback-URL | Zurück Weiter
|
|
|
|
|
|
|