Install Memcached on Windows Vista

Gerade beschäftige ich mich ein wenig mit dem Thema Caching und dabei kommt man ja irgendwie an Memcached nicht vorbei. Wollte memcached dabei als Service in Vista laufen lassen, doch beim Aufruf in der Commandozeile c:\memcached\memcached.exe -d install kommt ständig die Fehlermeldung: "failed to install service or service already installed" relativ schnell habe ich herausgefunden das es an den unzureichenden Rechten meines Benutzeraccounts unter Vista liegt. Damit es funktioniert muss man die Console als Administrator ausführen. Dafür gibt es einen Shortcut: Wenn man bei der Ausführung der Anwendung Ctrl+Shift+Enter drückt, kann man sich den Weg über das Kontextmenü sparen.

Eventlog, CryptographicException, Anforderungspfad: /WebResource.axd

Bei einem Server fand ich im Eventlog ständig folgenden Eintrag: Ereigniscode: 3005Ereignismeldung: Es ist eine unbehandelte Ausnahme aufgetreten.Ereigniszeit: 02.10.2008 01:22:41Ereigniszeit (UTC): 02.10.2008 12:22:41Ereignis-ID: cfc0fb0037c3473d9a93aed3556026c4Ereignissequenz: 1658Vorkommen: xxEreignisdetailcode: 0 Anwendungsinformationen:    Anwendungsdomäne: /LM/W3SVC/1/ROOT-xxxxxxxxx    Vertrauensebene: Full    Virtueller Anwendungspfad: /    Anwendungspfad: x:\daten\websites\xxxxxx    Computername: computer Prozessinformationen:    Prozess-ID: 3028    Prozessname: w3wp.exe    Kontoname: IrgendeinKonto Ausnahmeinformationen:    Ausnahmetyp: CryptographicException    Ausnahmemeldung: Zeichenabstände sind ungültig und können nicht entfernt werden. Anforderungsinformationen:    Anforderungs-URL:   http://xxxxx/WebResource.axd?d=yMHoWq6OlLLBSdXLzX0Yig2&t=633563938783503750     Anforderungspfad: /WebResource.axd    Benutzerhostadresse: xxx.xxx.xx.xxx    Benutzer:     Ist authentifiziert: False    Authentifizierungstyp:     Threadkontoname: IrgendeinKonto Threadinformationen:    Thread-ID: 5    Threadkontoname: IrgendeinKonto    Identitätswechsel für: False    Stapelüberwachung:    bei System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte[]inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[]& outputBuffer,Int32 outputOffset, PaddingMode paddingMode, Boolean fLast)   beiSystem.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte[]inputBuffer, Int32 inputOffset, Int32 inputCount)   bei System.Security.Cryptography.CryptoStream.FlushFinalBlock()   beiSystem.Web.Configuration.MachineKeySection.EncryptOrDecryptData(BooleanfEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, IVType ivType, Boolean useValidationSymAlgo)   bei System.Web.UI.Page.DecryptStringWithIV(String s, IVType ivType)   beiSystem.Web.Handlers.AssemblyResourceLoader.System.Web.IHttpHandler.ProcessRequest(HttpContextcontext)   beiSystem.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()   bei System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)  ************************* Dieses Problem (oder besser gesagt diese Fehlermeldung) wird durch einen nicht existierenden <maschineKey> in der web.config ausgelöst. Nach der Erstellung eines gültigen <machineKey> ist die Fehlermeldung verschwunden.

Visual-Studio Add-in: SnippetDesigner

Für das Visual Studio 2008 gibt es ein sehr cooles und nützliches Add-in. Den SnippetDesigner der es einem erlaubt recht einfach eigene Snippet's zu erstellen und zu verwalten. Einfach durch das Context-Menü kann aus einem Codeblock ein Snippet erstellt werden. Zu finden gibt es das OpenSource Projekt auf der Seite Codeplex.com.

DotNetNuke 5.0 RC1

Die schon lange erwartete neue Version von DotNetNuke mit dem Codenamen "Cambrian" hat einen weiteren Meilenstein erreicht. Die Version RC1 wird bei der OpenForce Europe vorgestellt und an Gruppe von Personen verteilt. Sehr cool ist der Support von jQuery und XHTML, WCAG and ADA compliance. Benutzerrechte können jetzt nicht nur gewährt sondern auch entzogen werden, was in manchen Situationen das Leben verinfachen dürfte. Einige von den neuen Features wurden in die Version 4.9 übernommen und sind dort schon verfügbar. Eine Übersicht der neuen Features von DotNetNuke 5.0 gibt es z.B. hier. Wann es eine öffentliche Version gibt, ist bis jetzt aber noch nicht bekannt...

E-Mailadressen online validieren

Soeben habe ich eine wirklich nützlichen Dienst / Service auf webservicex.net gefunden. Diese Plattform hatte ich schon fast vergessen und bin nun durch einen Zufall darauf aufmerksam geworden. Dort gibt es einen Web-Service, mit dem man E-Mailadressen online validieren - also auf Gültigkeit - prüfen kann. Wirklich eine praktischer Dienst ... und man muss sich nicht selber mit der Validierung rumschlagen. Die Validierung geht natürlich über eine RegEx hinaus und überprüft beim Mailserver, ob es dort diese E-Mail wirklich gibt. Bei meine 20 Testläufen wurde mir zumindest immer ein korrektes Ergebnis zurück geliefert... Zu erreichen unter der Adresse:http://www.webservicex.net/ValidateEmail.asmx

Debug DotNetNuke Scheduler

Das Debuggen von DotNetnuke Schedulern ist nicht so ganz einfach. Mit einem Break-Point und F5 ist es leider nicht getan an dieser Stelle, da die einzelnen Scheduler in einen separaten Thread laufen.Auch der Trink um Windows Services zu debuggen - das anhängen des Debuggers an den Prozess - funktioniert in diesem Fall einfach nicht. Es gibt aber einen Weg, den Debugger per SourceCode-Aufruf zu starten. Das geht ganz einfach und ist mit einer Zeile erledigt: System.Diagnostics.Debugger.Launch(); Dieser Aufruf bewirkt, dass man eine neue oder eine existierende Instanz von Visual Studio auswählen kann, um anschließend durch den Code zu steppen. Ein paar weitere Infos gibt es bei Mircosoft-MSDN hier 

ASP.NET ajax GenerateScriptType und eigene Komplexe Typen

Ich beschäftige mich gerade mal etwas intensiver mit dem AJAX-Framework - eigentlich ja schon ein alter Hut. Dabei habe ich ein DotNetNuke-Modul, dass zu einem ASMX-WebService Daten versendet und ein Ergebnis zurück bekommt. namespace G.Modules.LicCalc{  [WebService(Namespace = http://tempuri.org/)]    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  [ScriptService]  public class CalculatorService : System.Web.Services.WebService  {    [WebMethod()]    public string HelloWorld(LicCalcInfo info)    {       return "Hello World" + info.LinuxLicense.ToString();    }  }  } Passend dazu gibt es eine Klasse "LicCalcInfo" - die wie DotNetNuke-typische Info-Class aufgebaut ist using System;namespace GMS.Modules.LicCalc.Business{public class LicCalcInfo{private int _windowsLicense;private int _linuxLicense;public int LinuxLicense{get { return _linuxLicense; }set { _linuxLicense = value; }}public int WindowsLicense{get { return _windowsLicense; }set { _windowsLicense = value; }}}} Wenn ich jetzt über JavaScript versuche die Methode "HelloWorld" aufzurufen und den Parameter LicCalcInfo übergeben möchte, wird bei der Erstellung der Klasse immer eine JavaScript-Exception ausgelöst. Das JavaScript sah so aus: function HelloWorld(){var info = new LicCalcInfo(); info.LinuxLicense = 10;DocuSnap.Modules.LicCalc.CalculatorService.HelloWorld(info, SucceededCallback);}function SucceededCallback(result, eventArgs){    alert(result);} Das ganze funktioniert aber nur, wenn die Klasse "LicCalc" direkt in der ASMX Datei definiert wurde und sich außerhalb des Namespaces befindet. Als extern definierte Klasse habe ich die Einbindung nie geschafft. Die Lösung dabei ist aber mal wieder relativ einfach: Bei der Erzeugung des Objektes in JavaScript muss das Objekt mit dem kompletten Namespace angesprochen werden.. das hat mir dann ein Blick in die automatisch gernierte JavaScript-Datei veraten. Der Aufruf zur Erzeugung muss dann so geschrieben werden: var info = new DocuSnap.Modules.LicCalc.Business.LicCalcInfo(); Dann kann die Klasse auch in JavaScript erzeugt werden und die Verarbeitung wird erfolgreich durchgeführt.

DotnetNuke Game / Battleship Module

Eigentlich habe ich ja ein paar Module (News, FAQ) für DotNetNuke gesucht - dabei bin ich dann über ein Game gestolpert, dass jeder von uns kennt und auch gerne spielt: Schiffe versenken :) Auf der Seite http://www.donein.net/Default.aspx?tabid=58 gibt es sowohl einen Downloadlink als auch die Möglichkeit, das Spiel direkt mal zu testen! Viel Spaß :)

Setzen von ASP.NET Server Variables in JavaScript

Habe soeben eine ziemlich schön (zumindest auf dem ersten Blick) ASP.NET Komponente entdeckt, die einem die relativ einfach Möglichkeit bietet serverseitige Variablen an den Client Browser zu übergeben. Dafür gibt es hier eine Klasse, die einem die Verwaltungsarbeit abnimmt. Der Weg: var CustomerName = '<%= Customer.Name %>'; ist ja nicht wirklich elegant und ich persönlich finde es immer schlechten Stil, wenn man in einer ASPX-Seite anfängt und Serverseitigen Code schreibt. [Nein, bitte keine Grundsatzdiskussion - einfach meine Meinung :)] Viel optimaler unter ASP.NET ist doch die folgende Möglichkeit:protected void Page_Load(object sender, EventArgs e){   wwScriptVariables scriptVars = new wwScriptVariables();   // *** Add any values static or dynamic   scriptVars.Add("CustomerName", Customer.Name);   // *** Done} Auf dem Client kommt das dann in folgender Form an Automatisch werden dann die definierten Variablen an den Browser als JavaScript übermittelt und sieht so aus: <script type="text/javascript"> //<![CDATA[var serverVars = {    "name": "Müller, Maier, Schmitu"}//]]></script> Ein Zugriff innerhalb von JavaScript gestaltet sich auch denkbar einfach: var name = serverVars.name; Also ich finde diese Lösung verdammt sexy und für den täglichen Alltag auf jeden Fall zu gebrauchen!

Hawaii das neue Microsoft Paradies (oder .NET 4.0)

Hm, also wenn ich die Wahl habe .. dann entscheide ich mich für Hawaii :) Wie ich gerade gehört habe ist das der Codename für .NET 4.0! Ob .NET 4.0 genau so klasse wird wie Hawaii wird sich zeigen .. Das Framework soll voraussichtlich im Jahr 2009 erscheinen... lassen wir uns überraschen, was Microsoft da zaubert!

Neues Administrationskonzept bei DotNetNuke

Folgendes habe ich gerade auf der DotNetNuke Seite gelesen und mich sehr darüber gefreut. Im wesentlichen geht es dabei um eine Neustrukturierung des Administrationkonzeptes. Zukünftig soll es möglich sein auch selber Administrationsmodule zu entwicklen und diese dann einfach in das Admin-Menü mit aufnehmen (ohne Eingriffe in die Datenbank). Ganz spannend finde ich auch, dass man die Berechtigung für die einzelnen Admin-Seiten auch endlich über die ganz normalen Seitenberechtigung steuern kann. Damit ist es dann super easy einzelnen Leuten (Gruppen) die Berechtigung für div. Adminseiten zu erteilen. Ich bin gespannt was die Zukunft hier bringt - hört sich auf jeden Fall gut an. Den Artikel (Blogeintrag) gibt es hier...    

Download von DotNetNuke 4.8.0

Auch während Weihnachten war das DNN-Core-Team wohl nicht ganz untätig und hat am 27.12.2007 den Download der DotNetNuke Version 4.8.0 frei gegeben. Es wurden viele Fehler korrigiert und neu ist der Support von DNN für den IIS (Internet-Information-Server) 7.0. Wer sich einen genauen Überblick von den Änderungen der aktuellen DNN Version machen möchte - Bitteschön, wie immer geht das im Bugtracking System support.DotNetNuke.com

Auflistung von wichtigen Visual Studio Shortcuts

Wer auf einen Blick die wichtigsten Visual Studio Shortcuts sehen möchte, dem kann ich folgendes PDF empfehlen. Diese Liste der Shortcuts ist sicherlich nicht vollständig, allerdings für die tägliche Arbeit schon holfreich. Zumindest kann so teilweise auf die Maus verzichten....

Das mächtige Fragezeichen oder der ?? Opterator in C#

Immer wieder kommt die Situation das man im Laufe eines .NET Programmes überprüfen muss ob eine Objekt wirklich existiert oder aber ob in der Variablen der Wert NULL enthalten ist. Vielfach möchte man auch einfach für den NULL Fall einen Defaultwert setzen. Mit dem doppelten Fragezeichenoperator ist das in .NET C# sehr elegant und einfach zu realisieren. Hier ein ganz einfaches Beispiel: string resultmessage = param jQuery152023533955193124712_1339428543134 "Keine Nachricht da ;-)"; In der MSDN findet man dazu auch nähere Informationen (hier )    

Escape Sequence Description

Hier eine Liste der wichtigsten (zumindest für mich) Escape-Sequencen: \t Tab (Unicode 0x0009). \r Carriage return (0x000d). \n Newline (line feed) (0x000a). \v Vertical tab (0x000b). \a Alert (0x0007). \b Backspace (0x0008). \0 Null (0x0000). \\ Backslash (0x005c). \' Single quote (0x0027). \" Double quote (0x0022).  

Neues Authentifizierungssystemen bei DotNetNuke (LiveId, OpenId, CardSpace)

In der kommenden Version von DotNetNuke (DNN 4.6.0) ist ein sehr interessantes Feature die Möglichkeit der Implementierung von neuen Authentifizierungssystemen jenseits von DNN. Nun ist es nicht nur mehr möglich sich gegen DotNetNuke oder einer ADS (Active Directory Service) zu authentifizieren, sondern eine Anmeldung kann nun durch: Cardspace LiveID OpenID Dafür wurde ein "neues" Providermodell für die Authentifizierung implementiert. In den letzten Tagen habe ich für einen Kunden bereits einen eigenen Provider für eine Anmeldung bei der zentralen Golf-Online-Seite erstellt und erste positive Erfahrungen damit gesammelt. Dafür muss man lediglich drei UI-Komponenten entwickeln: Login, Settings and LogOff – jeweils von Basisklassen abgeleitet (AuthenticationLoginBase, AuthenticationSettingsBase and AuthenticationLogOffBase). Die Konfiguration der einzelnen verfügbaren Provider wird über die Tabelle Authentication vorgenommen. Dort wird ganz einfach ein Prefix und die drei UI-Komponenten angegeben. Es ist auch möglich dem Benutzer die Auswahl selber zu überlassen, mit welchem Dienst er sich Authentifizieren möchte – das find ich insgesamt schon ziemlich sexy. Wenn sich der Benutzer über z.B. LiveID angemeldet hat, dann wird nach erfolgreicher Authentifizierung ein Benutzerkonto angelegt oder aber man kann diesen Login mit einem existierenden DNN-Benutzerkonto verknüpfen. In der Datenbank gibt es dafür die Tabelle: UserAuthentication

Open Source .NET code performance and memory profiling software

Bei der Suche nach Performancemessungen für ein .NET Projekt, habe ich ich folgende interessante(s) Seite / Projekt gefunden: ProfileSharp Bis jetzt nur kurz getestet, scheint es aber ein gute Lösung zu sein um: Eine Speicheranalyse durchzuführen (z.B. Memoryleaks) Wo welche Rechenleistung benötigt wird Besonders interessant ist, dass der Profiler keinerlei Veränderungen am SourceCode benötigt - Bestandteile des Profilers müssen also nicht in das Projekt / Assembly k(c)ompiliert werden. Er läßt sich einfach von außen anfügen Das Produkt ist OpenSource und steht damit jedem zur Verfügung. Ob bei dem Funktionsumfang / Leistung mit kommerzielle Produkten aufnehmen kann werd ich sehen.  

Eine .NET WinForms Anwendung nur einmal starten / arbeiten mit einem mutex

Wenn man eine Anwendung nur einmal durch den Anwender starten lassen möchte, dann ist das mit der Hilfe von einem erzeugten Mutex sehr einfach zu realisieren. Nur ein paar Zeilen Quellcode sind dafür in der Main() Methode notwendig. Wie immer ist der Beispiel-Code in .NET C#. bool createdNew;///Einen neuen Mutex erzeugen, damit die Anwendung nur einmal gestartet werden kann.System.Threading.Mutex appMutex = new System.Threading.Mutex(true, Application.ProductName, out createdNew);///Wenn die Erzeugung erfolgreich warif (createdNew){///... dann kann die Anwendung ausgeführt werdenLogIn frmLogIn = new LogIn();Application.Run(frmLogIn);if (frmLogIn.DialogResult == DialogResult.OK)Application.Run(new MainForm());// den Mutex wieder frei gebenappMutex.ReleaseMutex();}else{///Wenn die Anwendung schon ausgeführt wird -> Hinweis-Dialogstring msg = String.Format("Das Programm \"{0}\" wurde bereits gestartet!", Application.ProductName);MessageBox.Show(msg, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);}

Alternatives ControlPanel / DotNetNuke Adminpanel

Das Core-Team von DotNetNuke hat in den letzten Versionen schon einiges an der Usability verbessert. Darunter gehört z.B. die Vererbung von Seiten-Rechten innerhalb der Seitenstruktur. In vielen Projekten höre ich aber immer wieder, dass das ControlPanel (dort wo z.B. die Module ausgewählt werden) nicht flexibel genug ist und es Vorteilhaft wäre, wenn man anhand der DotNetNuke spez. Rollen die Funktionen ganz gezielt freischalten kann. Somit könnte man bestimmten Rollen ganz gezielt lediglich ein paar Module zur Verfügung stellen, die diese für ihre tägliche Arbeit benötigen. Der Vorteil liegt ganz klar auf der Hand: Die Komplexität für die Redaktuere wird reduziert. In vielen Fällen werden ja wirklich nur ganz wenige Module für die normale Arbeite benötigt (z.B.Text/HTML, Links, Images). Seit ein paar Monaten verfolge ich eine Projekt, dass das DotNetNuke ControlPanel ersetzt (oder viel mehr eine Alternative bereit stellt). Mit diesem ControlPanel ist es nun endlich möglich die Berechtigungen innerhalb des Controlpanels sehr gezielt zu vergeben. Hier kann man das Modul downloaden Leider gibt es keine SourceCode Version von diesem Modul.

Ein Web 2.0 Pop Up Fenster

In der letzten Zeit findet man im Web immer wieder Popup-Fenster die wie folgt aussehen: Die Umsetzung erfolgt via JavaScript und CSS und stellt kein großes Geheimnis dar. Wer sich allerdings trotzdem nicht die Mühe machen möchte (und niemand möchte wirklich etwas erarbeiten, was es schon gibt), für den habe ich hier einen tollen Link: http://orangoo.com/labs/GreyBox/. Auf dieser Seite gibt es eine Komponente (JavaScript) die einem bei der Umsetzung unterstützt. Die Vorteile: Es wird nicht durch die PopUp-Blocker verhindet, da es ja kein neues Fenster ist Mit nur 22kb ist das Script recht klein Wird schon auf viele Websites eingesetzt und kann als stabil betrachtet werden

C#/VB .NET Coding Guidelines

Gerade habe ich ein kostenloses eBook zum Thema Coding Guidlines für C# und VB.NET gefunden und möchte darauf aufmerksam machen. Den Download gibt es direkt unter submain.com Das eBook hat folgende Themen: Naming Guidelines Class Member Usage Guidelines Guidelines for Exposing Functionality to COM Error Raising & Handling Guidelines Array Usage Guidelines Operator Overloading Usage Guidelines Guidelines for Casting Types Common Design Patterns Callback Function Usage Time-Out Usage Security in Class Libraries Threading Design Guidelines Formatting Standards Commenting Code Code Reviews Additional Notes for VB .NET Developers Ebenso recht nützlich ist das Tool SmartOutline for VS2005, welches als kostenlose Version auf der Seite zur Verfügung gestellt wird. Damit wird das Handling von #region's - welche ich sehr gerne benutze - noch etwas verbessert.

Die DotNetNuke WebControls / DNN NavigationProvider

Im Augenblick beschäftige ich mich mit dem DNN NavigationProvider. um für einen Kunden ein CSS basiertes Menu zur Verfügung zu stellen. Ursprünglich dachte ich eigentlich, dass man auf das Rendern des Menüs Einfluß hat und bestimmen kann, wie das Menu auszusehen hat.Nachdem ich den Sourcecode der mitgelieferten Provider analysiert habe .. kam zunächst recht schnell die Ernüchterung. Da wird in der class DNNMenuNavigationProvider auf eine Objekt vom Typ DNNMenu zugegriffen. Doch der Sourcecode scheint davon nicht mit im Standarddownload enthalten zu sein. Mein erster Schreck - das ich das Rendern gar nicht beeinflussen kann - ging schnell vorbei. Zum einem ist natürlich die Klasse DNNMenu in dem Downloadpaket DotNetNuke WebControls enthalten und zum anderen ist die Nutzung dieses Objektes ja gar nicht notwendig. Jetzt werde ich mal versuchen meinen eigenen Menuprovider zu entwicklen und bin gespannt wie das klappt!

DotNetNuke 4.5.2 Released

Nachdem ich eigentlich schon wieder viel zu lange nichts mehr über DNN veröffentlicht hab, möchte ich damit nun endlich wieder beginnen. Am 29.05 (also gestern) wurde die Version 4.5.2 veröffentlicht und steht wie gewohnt unter www.dotnetnuke.com zum Download bereit. Mittlerweile ist eine ganze Menge an neuen Features implementiert wurden und eine einzelne Aufzählung wäre mit Sicherheit zu lang(weilig). Einen sehr genauen Einblick über die Veränderungen innerhalb von DotNetNuke bekommt man wie immer in der Bug Tracker.  

Status List im Vista Style

Soeben habe ich ein sehr interessante Projekte oder viel mehr Komponente auf codeproject gesehen und möchte meiner Umwelt diese nicht vorenthalten. Dabei handelt es sich jeweils um sehr schön gemachte Status List entwickelt in C#. Hier ist der direkte Link zu dieser .NET Komponente .... klick :) Dazu passend gibt es auch noch ein Status Label (wohl in VB.NET) ... klick

Eine DotNet Technologie Suchmaschine

Suchmaschinen wie www.google.de oder www.live.de sind für alle Entwickler - ob .NET, PHP, Delphi, etc. - ein wertvolles Werkzeug um schnell Antworten und Lösungen bei Problemem zu finden. Das größte Problem dabei ist aber meist, dass man nicht nur Suchergebnisse bekommt dich sich auch wirklich mit .NET befassen und somit wird die Recherche unnötig erschwert. Dieses gehört aber der Vergangenheit an, denn Dan Appleman hat folgende Website erstellt: http://www.searchdotnet.com/ Diese Suchmaschine basiert auf Google, allerdings werden wirklich nur .NET relevante Ergebnisse angezeigt. Die ersten Erfahrungen mit dieer Suchmaschine waren sehr positiv!