Der-Albert.com sein Blog!


Januar 2006 Entries

Internet Explorer 7 Beta 2 Preview ohne Installation!

Die Beta 2 Preview des [url=http://www.microsoft.com/windows/IE/ie7/ie7betaredirect.mspx]Internet Explorer 7[/url] [1] ist verfügbar. Um sie zu testen ohne aufwendig zu installieren muss folgendes gemacht werden. Entpacken der Download-Datei mit einem Programme wie WinRAR. Nun legt man eine leere Datei mit dem Namen [i]iexplore.exe.local[/i] in dem Ordner an wo sich die [i]iexplore.exe [/i] befindet. Nun [i]iexplore.exe[/i] starten. Für diese Art des Startens werden Administrator-Rechte gebraucht. Als Eingeschränkter Benutzer funktioniert es nicht. Dafür ist wahrscheinlich eine Vollinstallation nötig. Zum Testen sollte es reichen. Natürlich können noch weitere Einschränkungen bestehen. Die Beta 2 Preview des Internet Explorer sollte man sich nur installieren wenn man selber Entwickler von Webseiten oder Anwendungen ist, um mögliche Probleme zu erkennen und natürlich zu melden. [b]Update:[/b] Leider scheint sich der IE 7 nicht so zu verhalten wie alle anderen Internet Explorer Versionen vorher und es gibt nach dem Aufruf wohl einige Probleme. Jon Galloway hat dazu eine passende Lösung [2] und bietet auch direkt eine Batchdatei dazu an um den IE zu starten und den Fix danach auszuführen. Manuell kann man es machen in dem man Registry-Key [i]HKEY_CLASSES_ROOT\CLSID\{C90250F3-4D7D-4991-9B69-A5C5BC1C2AE6}[/i] löscht. Am einfachsten es man legt sich eine Datei an dies das für einen dann macht (oder verwendet direkt die Lösung von Jon [2]). Die Datei kann man nennen [b]ie7fix.reg[/b] wobei das [i].reg[/i] als Endung wichtig ist und gebt dieser folgenden Inhalt. [code] Windows Registry Editor Version 5.00 [-HKEY_CLASSES_ROOT\CLSID\{C90250F3-4D7D-4991-9B69-A5C5BC1C2AE6}] [/code] Nun kann man diese Datei Doppelklicken und der Registry-Key wird gelöscht. Danke an die tapferen Recken hier in den Kommentaren!
[1] [url=http://www.microsoft.com/windows/IE/ie7/ie7betaredirect.mspx]Internet Explorer 7 Beta 2 Preview[/url] [2] [url=http://weblogs.asp.net/jgalloway/archive/2005/12/28/434132.aspx]Fix für fehlerhaftes Verhalten nach aufruf des IE7 (English)[/url]

Werbung blocken mit Firefox

Da es anscheinend doch weniger bekannt ist hier ein Hinweis auf [url=https://addons.mozilla.org/extensions/moreinfo.php?id=10&application=firefox]AdBlock[/url] [1] ein umstrittenes Firefox Plug-In welches es ermöglicht durch gezielte Filter Werbung (Flash, DHTML, Texthervorhebungen usw.) zu unterbinden. Umstritten ist es deshalb weil es halt erfolgreich Werbung filtern kann und somit die Einnahmen der Websites reduziert. Hier ist eine Beispiel-Filter Datei die wohl recht erfolgreich arbeitet. Diese als Textdatei speichern, und nach der Installation des AddIns in den [i]Preferences[/i] die Datei importieren. [quote][Adblock] http://adserv.* http://*.falkag.net/* http://ad.* http://*/RealMedia/ads/* http://ads.* http://banner.* http://*.googlesyndication.com/* http://*.valueclick.com/* http://*.intellitxt.com/*.js http://*.ivwbox.de/* http://ads-*.* http://www.golem.de/menu.js http://matrix.mediavantage.de/* http://*/werbung/* http://gfx.dvlabs.com/* *phpAds* */admentor/* *as1.falkag.de* http://www.axbserver.de/axb/flash/* http://db.tweakpc.de/phpwer/ad* http://ds.serving-sys.com/* http://hstde.tradedoubler.com/* http://*/ads/* http://spe.atdmt.com/ds/* http://*/adimage.php* http://www.euros4click.de/* https://adserver.* http://*PAN/* http://*.advertising.com/* http://www.golem.de/_img/ad_* http://view.atdmt.com/* http://www.sponsorads.de/* http://max.i12.de/* http://*.intellitxt.com http://as.casalemedia.com/* http://groups.google.de/groups/adfetch*[/quote]
[1] [url=https://addons.mozilla.org/extensions/moreinfo.php?id=10&application=firefox]AdBlock Plugin[/url]

Das Internet ist so klein!

Da wacht man frühmorgens auf, geht an den Laptop um seine Mails zu lesen und stolpert über einen [url=http://weblogs.asp.net/scottgu/archive/2006/01/18/435870.aspx]Blog-Eintrag[/url] [1] von Scott Guthrie, seineszeichen Chefentwickler von ASP.NET. [quote=Scott Guthrie][url=http://www.urlrewriting.net]Here[/url] is a really cool URL rewriting module for ASP.NET 2.0. [/quote] Na wenn das mal kein Lob ist. *freu* Da merkt man mal wie klein das Internet ist und wie schnell sich Informationen verbreiten.
[1] [url]http://weblogs.asp.net/scottgu/archive/2006/01/18/435870.aspx[/url] [2] [url]http://www.urlrewriting.net[/url]
PS: Der erste Kommentar von Serge zu genannten Blog-Eintrag ist nicht ganz korrekt. Sein Modul Modul unter 2.0 zu kompilieren reicht bei weitem nicht aus. Dafür hat es andere Qualitäten die eher im SharePoint Bereich liegen.

Url Rewrite für ASP.NET 2.0 mit UrlRewritingNet

Heute haben Thomas Bandt [1] und ich auf der Projektseite von [url=http://www.urlrewriting.net]UrlRewritingNet[/url] [2] die erste Version unseres universellen Rewrite-Moduls für ASP.NET 2.0 veröffentlicht. Die Assembly steht inkl. Quelltext und Beispielprojekt zum Download. Ist kostenlos und frei verwendbar. Das Modul kann in den meisten Fällen ohne Anpassungen an den vorhandenen Seiten verwendet werden. Natürlich muss die korrekte Funkion überprüft werden. Vorteile dieses Moduls sind das auch bei einem Postback ohne Eingriff in die vorhandene Seite eine ordentliche Url im Browser dargestellt wird. Auch werden Themes korrekt unterstützt das Sie auch vom Browser nach dem Rewrite gefunden werden. Die Seite selbst nutzt selbstverständlich auch [b]UrlRewritingNet[/b] für die Mehrsprachigkeit der Seiten. Also runterladen, verwenden und ein Feedback an uns geben.
[1] [url=http://blog.thomasbandt.de]Thomas Bandt[/url] [2] [url=http://www.urlrewriting.net]UrlRewritingNet - Das Rewrite-Modul für ASP.NET 2.0[/url]

Intellisense in der Web.config für Visual Studio 2005 erweitern

Dass das Visual Studio 2005 eine hevorrangende Intellisense Unterstützung für so gut wie alle Bereiche hat ist unbestritten. Und ich denke niemand will diese missen. Für Xml-Dateien, wie auch für die web.config eine ist gibt es in im [i]%VSIntallDir%/xml/schemas[/i] Verzeichnis eine Menge hinterlegte Schema-Dateien. Welche davon verwendet werden ist in der catalog.xml festgelegt. Nun kommt jeder Entwickler sicherlich mal die Situatation die Konfigurations-Dateien erweitern zu müssen. Wenn <appSettings/ > nicht unbedingt praktisch ist da die Einstellungen doch etwas komplexer ausfallen. Oder man muss andere Konfigurations-Erweiterungen verwenden. Leider erkennt Visual Studio diese Bereiche nicht automatisch und bietet somit auch kein Intellisense dafür an. Möchte man Intellisense auch dort nutzen muss man selbst ran und an den Einstellungen drehen. Ich stelle hier drei Varianten vor wie man dies machen kann.

1. Über einen Xml-Namespace

Jetzt kann man sich eine eigene Schema-Datei erstellen die das Konfigurations-Format beschreibt, und der [i]catalog.xml[/i] hinzufügen. Einfach die Schema-Datei ablegen wo Visual Studio sie finden kann und einen <Schema />-Eintrag hinzufügen. [xml] [/xml]Der Target-Namespace ist der Xml-Namespace mit dem man das Konfigurations-Schema anspricht. In der Web.config bindet man die Konfiguration-Erweiterungn wie es die Assembly oder Anwendungen vorschreibt (wohl <configSection/>) in ebendiese ein. Der [i]Trick[/i] besteht nun darin diesen Xml-Namespace beim erstellen des Konfigurationseinträge beim Haupt-Tag über das [b]xmns-Attribute[/b] anzugeben. [xml] [....die Schema-Definition...] [/code] Diese Schema-Datei kopiert man nun einfach in sein Projekt, bei einem Web-Projekt in einen beliebigen Ordner (z.B. [i]xsd[/i]). Für eine Solution/Projektmappe reicht es aus wenn die Datei in einem Projekt vorhanden ist. Und schon kann die Schema-Datei über den Xml-Namespace angesprochen und volles Intellisense erfreut die Eingabe. [code] [/code] Die Qualität der Intellisense hängt natürlich von der Qualität der Schema-Datei ab. Für mich ich dies die bevorzugte Lösung, da sie einfach sofort auf jedem Rechner zu Verfügung steht bei denen das Projekt aus der Quelltextverwaltung ausgecheckt wird. Auch ist ohne großes von globalen Konfigurationsdateien möglich, so das die Gefahr des [i]Stilllegen[/i] von anderen Funktionen im Visual Studio nicht so leicht passieren kann. Auch das nur die für das Projekt benötigten Intellisense-Daten dabei sind, empfinde ich als Vorteil.

Fazit

Welche Lösung man bei der Anwendung bevorzugt bleibt einem wie immer selbst überlassen. Es hängt erstmal an den Entwicklern passende Schema-Dateien für Konfiguration zu erstellen und mit auszuliefern. Ein Projekt ([b]UrlRewritingNet[/b]) welches als Beispiel dienen kann für [list][*]Einlesen von eigenen Konfigurations-Bereichen mit .NET 2.0 [*]Ausführlicher Schema-Datei [*]Einbindung in das Projekt nach Variante 3 [*]Mit nützlicher Anwendung [/list] wird in den nächsten Tagen auf der Projekt Seite von [b]UrlRewritingNet[/b] [2] veröffentlicht, eine hervorragende Rewriting-Engine für ASP.NET 2.0 die Thomas Bandt und ich derzeit am entwickeln sind
[1] [url=http://blogs.msdn.com/dmitryr/archive/2005/12/07/501365.aspx]SCDL 1.1[/url] [2] [Letzter Rasthof vor Rom: URL-Rewriting mit ASP.NET

Quelltexte automatisch formatieren mit Visual Studio 2005

Ein sehr schöne Neuerung von Visual Studio 2005 ist dass es die Quelltexte mit einer automatischen Formatierung in eine [i]schöne[/i] Form bringen kann. Dies funktioniert für viele Text Fenster (C#, XML, CSS, VB usw. usf). Der Aufruf über Tastatur ist [b]Strg+K, Strg+D[/b] für das gesamte Dokument und [b]Strg+K, Strg+F[/b] für die aktuelle Auswahl. Die entsprechenden Menüpunkte finden im [b]Edit[/b][i]-Menu[/i]. Wem die Standardeinstellungen der Formatierung nicht gefallen kann diese seinen eigenen vorlieben anpassen. [b][i]Menü -> Tools -> Options[/i][/b] Eventuell noch [i][x] Show all Settings[/i] anhaken. Im Zweig [b]Text Editor[/b] findet sich für die jeweiligen unterstützten Text Fenster ein Bereich [b]Format[/b] oder [b]Formating[/b] in diesen Registern kann man die automatische Formatierung anpassen. Wieder eine kleine sehr nette Funktion womit man nicht mehr auf Werkzeuge von anderen Herstellern angewiesen ist.

Ein XmlMembershipProvider sowie XmlRoleProvider für ASP.NET 2.0

ASP.NET 2.0 bietet ein schönes Sicherheitskonzept mit Rollen und Benutzern die man an Resourcen (Webseiten, Menüeinträge usw) und auch an Methoden und Klassen binden kann. So dass das Framework direkt überprüfen kann ob ein angemeldeter Benutzer das darf was er versucht zu machen. Mitgeliefert werden eine Möglichkeit für den Microsoft SQL Server und das ActiveDirectory. Dies ist für ein paar wenige Benutzer, die schon eindeutig definiert sind, ein wenig wie mit Kanonen auf Spatzen schießen. Für eine kleine, aber doch recht flexible, Lösung bietet sich an die entsprechenden Daten im XML-Format zu hinterlegen. Das ist dass was die hier angebotenen Provider [1] ermöglichen. In der Assembly [b]DerAlbert.XmlSecurityProvider[/b] [1] ist ein Role- und MembershipProvider enthalten bei denen über einen einfachen Konfigurationseintrag in der Web.config die Rollen und Benutzer angegeben werden. So schaut's aus: [xml] [/xml] Genaueres zur Installation gibt es in der Liesmich.txt. Quelltext gibt's noch nicht, kommt aber wohl noch.
[1] Download der Xml Security Provider

Bonn-To-Code die .NET Usergroup in und um Bonn

Frisch in der Gründung befindet sich eine neue Usergroup rund um das Thema .NET [url=http://www.bonn-to-code.net/]Bonn-To-Code[/url] Sie wird sich bald bald regelmäßig zu lockeren Treffen und Vorträgen zwecks Erfahrungsaustausch , Weiterbildung, Problemlösungen usw. zusammenfinden. Roland Weigelt und Jens Schaller haben für exzellente Räumlichkeiten gesorgt. Vorträge werden in einem gut ausgestatteten Konferenzraum inkl. Beamer gehalten und ein Treffpunkt mit angeschlossenen Sportvergnügen, welches jedoch nicht Bestandteil der Usergroup ist, ist direkt in der Nähe. Auch in Zeiten der globalen Kommunikation durch das Internet ist ein persönlicher Erfahrungsaustausch wichtig, gerade Einsteiger haben dabei meist die besseren Möglichkeiten Ihre Fragen beantwortet zu bekommen. Ohne gleich wie in diversen Newsgroups [2] üblich wegen Formfehler angemacht zu werden. Von Köln und Umgebung ist das ganze auch noch gut zu erreichen, und da es in Köln kein entsprechendes Gegenstück gibt sollte man dorthin gehen.
[1] [url=http://www.bonn-to-code.net/]Bonn-To-Code[/url] [2] [url=http://groups.google.de/]Newsgroups via Google[/url] [3] [url=http://weblogs.asp.net/rweigelt/archive/2006/01/04/434479.aspx]Roland Weigelts Usergroup Werbung[/url]

Mit JavaScript DOM-Events manuell auslösen

Nutzt man zum binden von JavaScript Funktionen an HTML Elementen nicht das wohlbekannte Konstrukt [code] <select id="auswahl" onchange="machwas()" /> [/code] sondern die modernere Variante mit [url=http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-registration]addEventListener[/url] [2] (DOM-Event Modell [3], z.B. Firefox) oder [url=http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/attachevent.asp]attachEvent[/url] [4] (Internet Explorer), die z.B. den Vorteil hat dass man mehr wie eine Funktion an das Event binden kann. So büsst man jedoch eine einfache Möglichkeit ein dieses Event auch per JavaScript manuell abzufeuern. [code] var o = document.getElementById('auswahl'); o.onchange(); [/code] Funktioniert dann nicht mehr, da in den entsprechenden Funktions-Rümpfen keine Funktion mehr eingetragen ist und der Aufruf mit einer Fehlermeldung quittiert wird. Jedoch bietet das DOM-Event Modell auch da eine Möglichkeit, natürlich wieder Browserspezifisch. Mit einer kleinen Hilfsfunktion ist dies jedoch auch sehr einfach und schnell machbar. [code] function fireEvent (eventType, elementID) { var o = document.getElementById(elementID); if (document.createEvent) { var evt = document.createEvent("Events"); evt.initEvent(eventType, true, true); o.dispatchEvent(evt); } else if (document.createEventObject) { var evt = document.createEventObject(); o.fireEvent('on' + eventType, evt); } } [/code] Um nun ein Event manuell zu feuern macht man nur noch folgendes [code] fireEvent('change', 'auswahl'); [/code] Und schon werden alle dem Element-Event zugeordneten Funktionen aufgerufen. Nutzt man das [url=http://prototype.conio.net/]Prototype JavaScript Framework[/url] [1] kann man diese Funktion auch in den Event-Namespace legen und auch die spezialitäten des Frameworks nutzen. [code] Event.fireEvent = function(eventType, element) { if (document.createEvent) { var evt = document.createEvent("Events"); evt.initEvent(eventType, true, true); $(element).dispatchEvent(evt); } else if (document.createEventObject) { var evt = document.createEventObject(); $(element).fireEvent('on' + eventType, evt); } }[/code] Der Aufruf ist analog zum oberen. [code] Event.fireEvent('change', 'auswahl'); // oder wenn man das HTMLElement schon hat var o = document.getElementById('auswahl'); Event.fireEvent('change', o); Event.fireEvent('click', o); [/code]
[1] [url=http://prototype.conio.net/]Prototype JavaScript Framework[/url] [2] [url=http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-registration]DOM: Event listener registration[/url] [3] [url=http://www.w3.org/TR/DOM-Level-2-Events/events.html]W3C: Document Object Model Events[/url] [4] [url=http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/attachevent.asp]Internet Explorer: attachEvent Method[/url]

Schnelleres C#-Refactoring bei Web-Projekten

Visual Studio 2005 bietet unter anderem Refactoring für C#. So das man z.B. mit wenig Aufwand eine Klasse, Methode oder Property umbennen kann und Visual Studio zieht die entsprechenden Änderungen in den anderen Quelltexten in der Solution (Projektmappe) nach und erspart einem damit viel Arbeit, Zeit. Bei Web-Projekten gibt es jedoch den Nachteil das aufwendig in .aspx Dateien überprüft werden muss in welchem Kontekt sich in den <% %> Anweisungen eingebauter Code befindet. Je mehr Seiten also im Projekt sind desto länger dauert ein Refactoring Vorgang. ScottGu hat nun ein seinem [url=http://weblogs.asp.net/scottgu/archive/2006/01/02/434355.aspx]Blog[/url] [1] einen Trick beschrieben mit denen man diese spezielle Überprüfung mit einem Registry-Eintrag deaktivieren kann und somit das Refactoring erheblich beschleunigt. Es wird die Überprüfung von Dateien mit der Endung .aspx sowie Inline-Code innerhalb .asmx und .ashx deaktiviert. CodeBehind-Dateien (alle geöffneten), das App_Code Verzeichnis und zusätzliche Class-Libraries innerhalb der Solution werden jedoch weiterhin vom Refactoring geändert, sind bereits durch den permanenten C# Parser erfasst und somit ist das Refactoring um einiges schneller als vorher. Wenn man seine ASP.NET Seiten großteils wie ASP Seiten erstellt hat, so wird einem dies nicht viel weiterhelfen. Jedoch sollte man dann vielleicht generell seinen ASP.NET Coding-Stil überdenken. Hier die Schritte. [list] [*]Alle Visual Studio 2005 Instanzen schließen[*] RegEdit starten[*] Zum Schlüssel [i]HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\CSharp\Options\Editor[/i] gehen[*] Hinzufügen eines DWORD-Werts mit Namen [i]OpenAllVenusFilesOnRefactor[/i] und Wert 0[*] Visual Studio 2005 starten und einen Refactoring-Vorgang durchführen. [/list]Das C# Team ist nun am überprüfen ob man einige Überprüfungen beim Refactoring optional machen kann, auch soll das Refactoring generell beim ersten Service Pack für Visual Studio 2005 noch beschleunigt werden.
[1] [url]http://weblogs.asp.net/scottgu/archive/2006/01/02/434355.aspx[/url]