Monthly Archives: March 2012

HTML5 Boilerplate

HTML5 Boilerplate

Dabei handelt es sich um ein Best Practices Template für HTML5.

Beinhaltet unter Anderem:

  • HTML-Vorlage
  • CSS
    •  Style-Resettierung
    • viele weitere Formatvorlagen, z.B. für den Druck, oder mobile Geräte
  • JavaScript
    • inklusive Modernizr und jQuery
    • enthält einen interessanten Ansatz, wie eigene Scripts eingebunden werden können
  • Webserver Konfiguration
    • z.B. für die empfohlene Konfiguration der Expire Header
    • IIS web.config ist zwar nicht im Projekt enthalten, ist aber in der Doku verlinkt
  • Minification-Projekt
  • Ausführliche Dokumentation zu ALLEN vorgenommenen Anpassungen

Genial ist wirklich die zugehörige Dokumentation, da sie jede Menge Tipps und Ideen enthält. Hab dadurch wirklich eine Menge zu HTML5 gelernt!

Advertisements
Tagged , , , ,

Digest Authentifizierung für System.Net.Http.HttpClient

Wer’s brauch kann sichs hier herunterladen, oder noch besser, weiterentwickeln:

https://bitbucket.org/toburger/digestauthmessagehandler/

Voraussetzung ist das .NET Framework 4.5, da ich stark von den neuen async-Features gebrauch mache. Mit etwas TPL gebastel bekommt man es aber auch auf .NET 4 zum Laufen.

Die Inspiration für die Implementierung habe ich mir von hier geholt: http://blogs.msdn.com/b/henrikn/archive/2012/02/16/extending-httpclient-with-oauth-to-access-twitter.aspx

Features:

  • Authentifizierung mittels Digest
  • Zwischenspeichern des Credential Tickets, sodass bei jedem weiteren Request nicht ein neues Ticket erstellt werden muss (was jeweils zwei Requests zur Folge hätte)
  • Falls das Ticket verfallen ist, wird automatisch ein neues Ticket erstellt
Tagged , , , ,

Tapetenwechsel für die PowerShell Konsole

PowerShell ist schon eine coole Sache! Leider wird diese “Coolness” nicht über ihr Interface widergespiegelt, sondern es sind eher die inneren Werte die die PowerShell zu einem – für mich – absolut unverzichtbaren Werkzeug machen. Das gegenwärtige “Outfit” der PowerShell Konsole sieht folgendermaßen aus: Inspiriert von dem wohl zurzeit schicksten Editor – dicht gefolgt von VS11 natürlich 😉 – “Sublime Text 2“, habe ich mich dazu entschlossen die PowerShell neu einzukleiden: Ob das neue Styling nun den Geschmack des Lesers trifft liegt ehrlich gesagt außerhalb meines subjektiven Relevanzkorridors. Mir gefällts jedenfalls! 😉 Aber keine Sorge, die Farben können natürlich nach eigenem Gutdünken angepasst werden.

Und hier die Schritt für Schritt Anleitung

Zuerst muss man die Konsoleneigenschaften der PowerShell anpassen. Dies kann man mit folgendem Script erledigen.

Ich hab nicht alle Farben angepasst, nur die, die mir in der PowerShell bisher untergekommen sind.

Zu beachten ist, dass die Farben im HEX-Code anzugeben sind. Die ersten zwei Stellen können ignoriert werden (bezieht sich NICHT auf die Transparenz, wie man vielleicht vermuten würde). Allgemein ist das Muster nicht mit den #ARGB-Werten, wie man sie z.B. aus WPF/Silverlight her kennt, zu verwechseln. Die Farben sind nämlich als BGR-Werte zu definieren, dh. 0x00FF0000 ist nicht rot, sondern blau! Hat mich einige Zeit gekostet, bis ich endlich kapiert habe wie die Farbe aufgeschlüsselt ist…

Am Ende des Scripts kopiere ich nun alle Werte, so dass diese Einstellungen auch für die Verknüpfung selbst verwendet werden. Andernfalls greifen diese Einstellungen nur, wenn die PowerShell über ihren vollständigen Namen aufgerufen wird. Hier ist zu beachten, dass der Ordner gleich zu benennen ist, wie der Verknüpfungsname (im Startmenü). Allerdings ist diese Verknüpfung etwas widerspenstig. Sie definiert nämlich ein eigenes Farbschema und ignoriert unsere Einstellungen gnadenlos. Was hilft ist einfach die alte Verknüpfung zu löschen und eine neue Verknüpfung zu erstellen. Eventuell sollte man das Ausführungsverzeichnis auf %HOMEDRIVE%%HOMEPATH% festlegen, wie es vorher definiert war. Wie bereits gesagt, der Name ist wichtig, da sonst die Einstellungen wiederum nicht greifen. In meinem Beispiel verwende ich die Bezeichnung “Windows PowerShell”. Nun sollten die Einstellungen endlich Wirkung zeigen!

Kleine Zugabe

Um der PowerShell zusätzlich noch etwas Farbe zu verleihen habe ich schlussendlich noch den Prompt überschrieben. Dieses Code-Schnipsel kann im PowerShell-Profil hinterlegt werden, sodass es bei jedem Start geladen wird (eventuell kann man statt Green auch Blue hernehmen, was etwas mehr Kontrast zu den Warnmeldungen hat).

Hier nochmal die Ausgabe mit allen Farben:

Tagged ,

Zusammengesetzte Eigenschaften mal anders

Kürzlich wurde ich gefragt wie ich folgende Aufgabe lösen würde:

Ich habe eine Personenklasse, welche Vorname, Nachname, Titel, usw. als Eigenschaften enthält und es soll anschließend eine Eigenschaft erstellt werden, welche diese Eigenschaften als String ausgibt.

Das Ganze soll natürlich so gelöst sein, dass, wenn eine der Eigenschaften leer ist keine überflüssigen Leerzeichen ausgegeben werden.

Der naive Ansatz wäre natürlich der gewesen:

return string.Format("{0} {1} {2} {3}",
    Title, FirstName, MiddleName, LastName);
nur bleiben mit dieser Implementierung eben genau die überflüssigen Leerzeichen stehen, wenn eine der Eigenschaften leer ist.

Dies könnte man lösen, indem man Replace und Trim des String-Objektes verwendet oder etwas Regex-Magie anwenden würde. Ich persönlich finde solche String Manipulationen aber nicht sonderlich elegant.

Andere Ansätze würden eine erquickliche Anzahl an if-Abfragen beinhalten und man müsste darauf achten dass die Leerzeichen an den richtigen Stellen eingefügt werden. Wartbar ist das Ganze auch nur bedingt.

Meine Implementierung würde so aussehen:

public string FullName
{
    get
    {
        var elements = new string[] { Title, FirstName, MiddleName, LastName };
        return string.Join(" ", elements
            .Where(e => !string.IsNullOrWhiteSpace(e)));
    }
}

Das elements-Array beinhaltet die Strings in der Reihenfolge wie sie ausgegeben werden sollen.
Der Join mit der LINQ-Abfrage sorgt dafür, dass nur die Elemente, welche nicht leer sind oder keine Leerzeichen beinhalten, ausgewählt werden und „vereint“ diese mit einem Leerzeichen getrennt.


Kommt nun eine weitere Eigenschaft hinzu, kann man diese einfach in das elements-Array an der gewünschten Position einfügen.

Tagged ,