Ich habe die letzten Monate genutzt um meine Webseite hendrik-loesch.de zu reaktivieren. Dabei ging es zum einen darum meine stark angestaubte About Seite zu ersetzen und zum anderen brauche ich eine dankbare Spielwiese. Diese Spielwiese hilft mir dabei ein Szenario zu schaffen in dem ich Materialien für meine Workshops und Vorträge erstellen kann, ohne irgend welche Copy Right Probleme fürchten zu müssen oder Angst haben zu müssen, dass die Beispiele nicht praxisrelevant oder zu einfach wären. Früher habe ich dies bereits über das Szenario „FotoMaxx“ versucht, einer Software zum Bestellen von Fotos. Da dieses Szenario meinen eigenen Alltag aber nicht berührt hat, bot es mir keinen Mehrwert außerhalb der Schulungen und wurde deshalb von mir nicht sehr pfleglich behandelt. Mit dem Szenario der Webseite verbinde ich ein Aushängeschild meiner eigenen Leistung und verspreche mir daher eine längere Lebenszeit und höhere
Weiterlesen »Autor: Hendrik Lösch
EventHandler weak bei normalen Events registrieren
Events sind für die Garbage Collection in C# immer eine gewisse Herausforderung. Da der Garbagecollector nur Elemente beseitigt, auf die keine Referenzen mehr bestehen, kann ein registrierter EventHandler zu einem Speicherleck führen. Dies umgeht man in .Net durch ein Weak Event. Die gängigen Lösungen für das Problem gehen meist davon aus, dass man ein Event als ein solches WeakEvent anlegt wodurch sich Objekte nicht anpassen müssen, die einen Eventhandler bei dem Event registrieren. Doch wie geht man vor wenn man einen Eventhandler weak bei einem normalen Event registrieren möchte?
Weiterlesen »Refactoring pattern for WPF UserControls
Legacy WPF Code enthält meist eine große Anzahl von UserControls, die ihrerseits massig Logik enthalten weil kein sauberes MVVM verwendet wurde. Um diesen Umstand zu beseitige braucht man aber meist eine gute Testabdeckung um nicht versehentlich etwas kaputt zu machen. In diesem Fall bekommt man dann aber nicht selten schon Probleme das entsprechende UserControl im Test zu instanziieren, weil die InitializeComponents Methode Ressourcen akquiriert die in der Testumgebung nicht vorhanden sind, da diese nicht im GUI Thread läuft. Was also tun? Die InitializeComponents Methode dient im Grunde nur dafür die UI des Controls zu rendern. Ihr interner Aufbau, also die eigentlichen Komponenten und auch das Verhalten des Controls, existieren auch ohne jene Methode. Für Tests brauchen wir InitializeComponents also überhaupt nicht. Um nun aber minimalinvasiv vorgehen zu können, müssen wir uns eine Stelle herauspicken, an der wir das Verhalten des
Weiterlesen »Und es werde Licht - Neues Design und neue Seite
Nachdem ich meine Veröffentlichungstätigkeit dieses Jahr deutlich zurück geschraubt und mich mehr um Kundenprojekte gekümmert habe, bin ich nun an einem Punkt an dem ich sehr gern wieder etwas ausführlicher schreiben und aus Spaß programmieren möchte. In dem Zusammenhang und weil es einfach mal wieder Zeit wurde, habe ich a diesem Blog ein neues Aussehen verpasst und b eine neue Seite erstellt.
Weiterlesen »Wissenschaftliche Untersuchungen zur Codequalität
Das die Art und Weise in der wir Code schreiben direkt dessen Verständnis beeinflusst, kann sich jeder vorstellen der schon einmal Code lesen musste in dem keine sprechenden Variablennamen verwendet wurden. Diese Zusammenhänge sind mittlerweile auch Teil von wissenschaftlichen Untersuchungen. Zwei Paper die sich damit beschäftigen möchte ich an dieser Stelle verlinken.
Weiterlesen »Dateien für automatisierte Tests bereit stellen
Die berühmten Unit Testing Frameworks werden nicht nur für Unit Tests genutzt, sondern auch für automatisierte Tests allgemein und damit auch für Integrationstests. In diesem Zusammenhang wird es dann schnell notwendig, dass auch eine Reihe von Dateien bereit gestellt werden müssen. Dies endet nicht selten darin, dass jene Dateien während des Tests nicht gefunden werden können weil mal wieder irgend etwas nicht funktioniert. Nachfolgend soll deshalb eine einfache Lösung für diesen Fall aufgezeigt werden.
Weiterlesen »VSTO: Bilder in Ribbons nutzen
Aktuell habe ich die Ehre ein Excel Plugin zu schreiben. Dieses verfügt über ein eigenes Ribbon, welches möglichst ansprechend aussehen soll. Für mich als Farblegastheniker ist es unmöglich ansprechende Icons zu designen. Dazu kommt, dass die Google Bildersuche schon allein aufgrund der rechtlichen Situation eine eher fragliche Quelle ist. Um nun also möglichst nah am Microsoft Original zu bleiben und somit ein Addin bereit zu stellen, dass sich nahtlos in Office einfügt, gibt es nur eine verlässliche Quelle: Microsoft selbst.
Weiterlesen »Dynamisch erzeugte Json Daten gemeinsam mit einem Model an einen Controller übertragen
Da ich aktuell fröhlich ASP.MVC nutzen darf, bin ich über ein Problem gestoßen, zu dem ich nur bedingt hilfreiche Unterstützung im Web gefunden habe. Genauer geht es darum, dass ich mir in meiner View, mit Javascript ein Json-Objekt zusammen baue und dieses dann über ein Formular an den Controller übertragen werden muss. Zu Darstellungszwecken möchte ich das Beispiel etwas kleiner halten als es tatsächlich ist und mir den Teil sparen bei dem ich das Json-Objekt dynamsich aufbaue. Gesagt sei nur so viel, dass es notwendig wurde dieses Objekt aufzubauen, weil es ursprünglich aus mehreren Eingabefeldern vom Nutzer zu einem Baum zusammengesetzt wurde.
Weiterlesen »Tot geglaubte leben länger
Oh mein Gott ist das staubig hier. Der letzte Eintrag ist ewig her und die Kommentarfunktion kann ich mir, bei meinen aktuellen Sicherheitseinstellungen, eigentlich auch schenken. An letzterem wird sich nicht all zu viel ändern. Ich denke wenn jemand ernsthaft das Bestreben verspürt mir seine Erkenntnisse mitzuteilen, so wird er es auch schaffen sich durch die Hindernisse zu kämpfen die ich da so aufgebaut habe. Beim eigentlichen Problem, dem fehlenden Content, möchte ich nun aber wieder ansetzen. Dies ist natürlich insofern witzig, da viele der mir bekannten Blogs als letzten Eintrag immer einen trugen, in dem der Autor davon sprach sein Blog wieder aufleben zu lassen. Will man aber etwas ändern, so muss man zunächst analysieren warum die Dinge sind wie sie sind. Im Falle dieses Blogs sind mir die Gründe bekannt. Da hätten wir zum einen meinen Sohn. Der
Weiterlesen »Softwareevolution - eine Übersicht
Für die Basta habe ich ein Plakat erstellt um eine Übersicht zum Thema Software Evolution zu geben. Dessen Inhalt möchte ich nun auch hier zur Verfügung stellen, da das Thema sicher eine ganze Reihe von Personen interessieren dürfte.
Weiterlesen »