# Friday, December 07, 2007

Bei dem ganzen Web 2.0 bin ich als Entwickler im Moment außen vor. Dazu habe ich bisher nichts beigetragen. Als Anwender freue ich mich über einige der Entwicklungen.

Das gelöste Probleme nicht notwendig dadurch toller werden, dass man sie im Web noch einmal löst, leuchtet ein. Manchmal braucht man vielleicht tatsächlich keine Desktop Applikation, eine Web-Anwendung genügt. Manche Konzepte funktionieren auch nur im Netz. Aber nicht alles wo AJAX drinsteckt und grüne Farben verwendetwerden ist toll. Oder sogar so toll, dass man damit Geld verdienen kann. Es fehlen oft die überzeugenden Geschäftsmodelle, Risikokapital fehlt aber seltener. Die Blase beginnt zu wachsen...

Zum Thema "Web 2.0 - wer scheitert am schönsten" empfiehlt sich uncov. Sehr frech, deutlich und lustig werden die Startups der Reihe nach vorgeführt.

Über Snowball habe ich ein sehr gut gemachtes Video gefunden. Zu Billy Joel's "We didn't start the fire" können war das Web in der Version 2.0 vor uns Revue passieren lassen:

Friday, December 07, 2007 10:26:43 PM (W. Europe Standard Time, UTC+01:00)  #
  Disclaimer  |  Comments [0]  | 
# Thursday, December 06, 2007

Wenn man eine Webseite oder Teile einer Webseite permanent umziehen möchte, sollte man den Clients mitteilen, wo sie die Inhalte jetzt finden können. Der beste Weg dazu ist, mit einem HTTP Status Code 301 Moved Permanently zu antworten. In der Antwort wird die neue Adresse mitgeliefert.

Im Browser ändert sich dadurch beispielsweise automatisch die angezeigte Adresse und auch die Suchmaschinen wissen, dass der Inhalt umgezogen ist. In SEO Kreisen wird diese Form der Weiterleitung als die einzige akzeptable Möglichkeit gewertet.

Ich wollte mein ASP.NET basiertes Blog umziehen, also lag es nahe, auch die Weiterleitung mit ASP.NET zu realisieren. Um alle ASP.NET Antworten auf einen Schlag zu erwischen, empfiehlt sich ein HttpHandler. Damit können zentral alle Requests behandelt werden, bevor weitere Verarbeitungen in der Engine stattfinden.

Es genügt einen minimale Web Applikation anzulegen. In App_Code kommt eine von IHttpHandler abgeleitete Klasse Redirector:

using System;
using System.Web;

public class Redirector : IHttpModule
{
    public void Dispose() { }

    public void Init(HttpApplication context)
    {
        context.BeginRequest += new EventHandler(context_BeginRequest);
    }

    const string OldPath = "http://www.cptec.de/blogit";
    const string NewPath = "http://www.deger-it.de";

    void context_BeginRequest(object sender, EventArgs e)
    {
        HttpApplication application = sender as HttpApplication;
        string absoluteUri = application.Context.Request.Url.AbsoluteUri;

        if (absoluteUri.ToLower().StartsWith(OldPath))
        {
            application.Context.Response.StatusCode = 301;
            application.Context.Response.StatusDescription = "Moved Permanently";
            string oldRequest = absoluteUri.Substring(OldPath.Length);
            application.Context.Response.RedirectLocation = NewPath + oldRequest;
            application.Context.Response.End();
        }
    }
}

Bei allen Requests, die auf die alte Adresse des Blogs zugreifen wollen, wird mit einer einfachen String Bearbeitung die neue Adresse ausgerechnet. Der Status Code 301 samt Beschreibung und neuer Adresse wird gesetzt und als Antwort zurückgeschickt.

Damit dieser HttpHandler auch aktive ist, muss er noch in der Web.Config eingetragen werden:

<system.web>
    <httpModules>
        <add name="Redirection" type="Redirector"/>
    </httpModules>
</system.web>

Jeder ASP.NET Zugriff wird jetzt sauber an die neue Adresse weitergeleitet. Alle Zugriffe auf Ressourcen, die nicht über ASP.NET ausgeliefert werden, sind davon aber nicht betroffen. Bei diesem Blog werden die Bilder beispielsweise statisch über den Webserver ausgeliefert. Davon kriegt der HttpHandler gar nichts mit.

Handler Mapping IIS6

Beim IIS6 kann man das über den IIS Manager konfigurieren. Bei der entsprechenden Webseite oder dem Virtual Directory in der Application Configuration unter Mappings kann man die ASP.NET Engine auf weitere Dateien anwenden.

IIS6_Virtual_Directory

IIS6_Application_Configuration

Dazu klickt man Add und trägt bei Executable den ASP.NET ISAPI Filter ein. Der Pfad wird ungefähr so aussehen:

c:\Windows\Microsft.NET\Framework\2.0.xxx\aspnet_isapi.dll

Bei Extension gibt man die gewünschte Dateiendung ein. Beispielsweise .jpg für JPEG Bilder.

IIS6_Application_Extension_Mapping

Jetzt fühlt sich ASP.NET auch für JPEG Dateien zuständig und der neue HttpHandler wird durchlaufen und leitet entsprechend weiter.

Handler Mapping IIS7

Leider ist das bei einigen Dateitypen relativ mühselig. Mit dem IIS7 kann man das komplett über die Web.Config einstellen:

<system.webServer>
    <handlers>
        <add name="Redirector" path="*.jpg" verb="GET" type="Redirector" resourceType="File" />
    </handlers>
</system.webServer>

Wie ich leider zu spät erfahren habe, kann man auch direkt mit den Bordwerkzeugen von IIS6 sehr flexibel Weiterleitungen konfigurieren: Redirect Reference

Wenn man aber wie bei einem Web-Hoster nicht zugriff auf die kompletten Admin-Werkzeuge hat, ist die vorgestellte Variante immer noch möglich. Außerdem ist ein HttpHandler wesentlich flexibler.

Thursday, December 06, 2007 2:26:22 PM (W. Europe Standard Time, UTC+01:00)  #
  Disclaimer  |  Comments [0]  | 
# Monday, December 03, 2007

Nachdem ich in der nächsten Zeit nicht für meinen Arbeitgeber tätig bin, wird sich auch der Charakter diese Blogs ein wenig ändern. Ab sofort ist das hier kein CPTec Blog mehr. Dieses Blog wurde privatisiert. Die Mischung aus Corporate Blog und privatem Blog war damals vielleicht nicht die beste Entscheidung.

Ab sofort gilt die neue Adresse: www.deger-it.de

Die alten Beiträge sollten mit 301 Moved Permanently hierher weitergeleitet werden. Der RSS Feed läuft ohnehin über Feedburner und sollte automatisch umgestellt sein.

Monday, December 03, 2007 5:34:56 PM (W. Europe Standard Time, UTC+01:00)  #
  Disclaimer  |  Comments [0]  | 
# Saturday, December 01, 2007

Heute ist unser Sohn Moritz ein halbes Jahr alt geworden und es beginnt meine zweimonatige Elternzeit. Ich werde den ganzen Dezember und Januar zu Hause bleiben.

Seit dem 1.1.2007 gilt das Bundeselterngeld- und Elternzeitgesetz - BEEG. Wir haben uns die maximal 14 Monate in 12+2 Monate aufgeteilt. Meine Frau nimmt 12 Monate in Anspruch und ich 2 Monate. Im 7. und 8. Lebensmonat sind wir jetzt gleichzeitig Vollzeit-Eltern. Mein Arbeitgeber muss mir 2 Monate nichts bezahlen, auch keine Lohnnebenkosten. Vom Staat kriege ich 67 Prozent des Nettoeinkommens. Sehr angenehm für uns und generell eine gute Regelung für alle künftigen Eltern.

Um Schaden von dem kleinen Moritz abzuwenden, versuche ich an ihm keine rund um die Uhr Betreuung. Es gibt auch ein zu viel von Papi. Deswegen werde ich hoffentlich weiter Zeit für den PC und die Programmierung finden. Für meine aktuellen beruflichen Projekte habe ich noch ein paar Dinge geplant, zwei Softwareentwicklungs-Bücher warten auf mich und ein Hobby-Projekt möchte ich starten. Dieses Blog wird also auch weiterhin technologisch bleiben.

Zurück zu Moritz: Im 6. Monat soll man mit Gläschen als Mittagsmahlzeit beginnen. Am Besten fängt man wohl mit Karottenbrei an. Dabei füttert Papi, weil bei Mami die gewohnten Nahrungsquellen zu sehr ablenken könnten.

Jetzt sieht noch alles harmlos aus:

Moritz Deger vor dem ersten Brei

Inzwischen hat Moritz wohl keinen Spass mehr. Viel Brei hat er im ersten Anlauf nicht erwischt. Die Wand im Hintergrund war übrigens vorher schon rot!

Moritz Deger nach dem ersten Brei

Wir werden es weiter versuchen. Er wird Karotten lieben!

Und weil ich gerade dabei bin, mogel ich einfach noch ein Bild und ein Video von Moritz in den Beitrag:

Moritz Deger auf dem Bauch

Saturday, December 01, 2007 8:37:11 AM (W. Europe Standard Time, UTC+01:00)  #
  Disclaimer  |  Comments [0]  | 
# Friday, November 23, 2007

Der Zugriff auf den Team Foundation Server 2008 mit Authentifizierung und über eine SSL Verbindung ist fast identisch zu dem Vorgehen mit der Version 2005. Leider hat sich aber auch nichts verbessert. Es ist die gleiche, fehleranfällige Bastelei: Walkthrough: Setting up Team Foundation Server with Secure Sockets Layer (SSL) and an ISAPI Filter

Dieser Artikel ist fast identisch zur vorherigen Version. Bei den Unterschieden ist der Artikel aber noch inkonsistent. Zum Beispiel ist der neue ISAPI FIlter AuthenticationFilter.dll im Tools Verzeichnis. An einigen Stellen nennt der Walkthrough aber noch fälschlich das TF Setup Verzeichnis. Amüsanterweise gibt es genau dazu noch eine Important Note ohne echte Aussage:

Do not change the directory of either the AuthenticationFilter.ini file or the AuthenticationFilter.dll file. Doing so increases the likelihood that you will have problems upgrading from Team Foundation SP1 to Team Foundation SP1.

Wenn man der Anleitung gründlich folgt, klappt es Ende tatsächlich und der externe Zugriff ist möglich.

Ich empfehle, dabei wirklich sorgfältig zu sein. Ich habe an einer Stelle den TFS Application Server und das SharePoint Portal vertauscht. Irgendwann sehen die Port Adressen alle so ähnlich aus. Die resultierenden Fehlermeldungen haben mich leider eine Zeit beschäftigt.

Zusätzlich sollte man auch alle ursprünglichen Einstellungen und die vorgenommen Änderungen dokumentieren. Es ist damit zu rechnen, dass auch das nächste Update nur eingespielt werden kann, wenn das System wieder im Ausgangszustand ist. Zumindest erging es mir bei diesem Update so.

.NET | Admin | Tools
Friday, November 23, 2007 3:09:02 PM (W. Europe Standard Time, UTC+01:00)  #
  Disclaimer  |  Comments [0]  | 
# Wednesday, November 21, 2007

In allen Blogs ist es zu lesen: Visual Studio 2008 ist fertig. MSDN Abonnenten können die RTM Version downloaden. Zusammen mit dem Visual Studio gibt es auch einen neuen Team Foundation Server (TFS).

Nach meinen Erfahrungen beim Service Pack 1 für die Version 2005, habe ich vor dem Upgrade ein Image der Serverplatte angelegt. Und natürlich kam beim Setup eine Fehlermeldung:

TF220064: An error occurred while the Setup program was querying the settings from the server that is running SQL Server Reporting Services. This error is most likely caused by your account not having the required administrative permissions on the server that is running Reporting Services. Click Next to try again. For more information about this error, see the installation logs. For more information about the installation logs, see “Troubleshooting Installation for Team Foundation” in the Team Foundation Installation Guide.

Der Setup kann nicht mit den SQL Server Reporting Services reden. Die Konfiguration der Schnittstelle zu den Reporting Services findet sich in der TfsIntegration Datenbank in der Tabelle tbl_service_interface. Die Einstellungen hatte ich aber geändert. Mein TFS war so konfiguriert, dass er auch externe Verbindungen zulässt. Der Setup kann offensichtlich nicht über eine https-Verbindung mit Authentifizierung kommunizieren. Das nehme ich ihm nicht übel und habe wieder die unverschlüsselten, lokalen http-Endpunkte eingetragen.

Vorher:

3    BaseReportsUrl    https://team.cptec.org:589/Reports
3    DataSourceServer    https://team.cptec.org:589/ReportServer
3    ReportsService    https://team.cptec.org:589/ReportServer/ReportService.asmx
4    BaseServerUrl    https://team.cptec.org:589
4    BaseSiteUrl    https://team.cptec.org:589/sites
4    WssAdminService    https://team.cptec.org:590/_vti_adm/admin.asmx

Nacher:

3    BaseReportsUrl    http://r8/Reports
3    DataSourceServer    http://r8/ReportServer
3    ReportsService    http://r8/ReportServer/ReportService.asmx
4    BaseServerUrl    http://r8
4    BaseSiteUrl    http://r8/sites
4    WssAdminService    http://r8:17012/_vti_adm/admin.asmx

Praktischerweise hatte der Fehler Dialog einen Retry Button. Man kann also schnell im offenen Herzen operieren und es noch mal probieren. Damit lief der Setup dann auch wieder einige Zeit weiter.

Error 28925.TFServerStatusValidator: The tool could not call the Team Foundation Server ServerStatus Web service. Verify that your network is configured to allow communication between the Team Foundation application tier and the Team Foundation data tier. For more information, see the setup log.

Jetzt können die einzelnen Schichten vom TFS nicht miteinander reden. Bestimmt auch wegen den nachträglich konfigurierten externen Verbindungen. Und richtig, diesmal war es der zusätzliche ISAPI Filter AuthenticationFilter.dll. Nachdem der Filter im IIS Manager wieder entfernt war, ging auch an dieser Stelle wieder der Retry. Diesmal ohne weitere Fehler und der interne Zugriff mit Visual Studio 2008 funktioniert.

Man sollte alle Änderungen am TFS 2005, die im Walkthrough: Setting up Team Foundation Server with Secure Sockets Layer (SSL) and an ISAPI Filter durchgeführt werden vor dem Upgrade rückgängig machen.

Jetzt kommt der nächste Schritt: Auch TFS 2008 möchte ich von Heimarbeitsplatz erreichen. Die externe Verbindung muss also wieder eingerichtet werden...

.NET | Admin | Tools
Wednesday, November 21, 2007 5:12:38 PM (W. Europe Standard Time, UTC+01:00)  #
  Disclaimer  |  Comments [0]  | 
# Friday, November 16, 2007

Natürlich ist es bereits aufgefallen: Wir hatten einen sehr gut gestalteten Stand bei der Tekom Messe :).

Von einer technischen Redaktion oder gar einem Software Entwickler wird man keinerlei künstlerische Ambitionen erwarten. Die haben wir auch nicht. Dabei hilft uns Angelika Schopper von Anschi Illus.

Bei Ihren News gibt es die Erklärung zum Konzept und weitere Bilder von der Messe.

Tekom Messe - Impressionen

Friday, November 16, 2007 1:14:05 PM (W. Europe Standard Time, UTC+01:00)  #
  Disclaimer  |  Comments [0]  | 
# Sunday, November 11, 2007

Ich beobachte seit einigen Monaten den Microsoft Windows Live Custom Domain Dienst. Grundsätzlich funktioniert das Angebot, aber insbesondere bei der Administration gibt es einige Schwachstellen. Inzwischen ist meine Begeisterung ein bisschen verebbt, weshalb ich noch nicht zu einem Posting über die Defizite bei der Administration gekommen bin.

Um so neugieriger war ich, als im Custom Domains Blog zu lesen war, dass es eine neue Version 3.0 gibt. Dabei hat sich der Name geändert WLCD heißt jetzt WLAC, oder ausgeschrieben Windows Live Admin Center. Bei einem Admin Center erwarte ich natürlich eine verbesserte Administration. Was ist jetzt neu?

We're excited to introduce the ability for you to customize services like Windows Live Hotmail® with your own logo.

Wow, ein eigenes Logo! Darauf hatte ich jetzt nicht gerade gewartet. E-Mail Weiterleitung, Kalender Synchronisierung, Verteilerlisten oder die Möglichkeit, Sicherheitseinstellungen für Benutzer vorzugeben, hätten mich interessiert.

Inzwischen gibt es bei Google Gmail mit IMAP Support. Da wird sich das Live Team anstrengen müssen.

Sunday, November 11, 2007 8:01:32 PM (W. Europe Standard Time, UTC+01:00)  #
  Disclaimer  |  Comments [0]  | 
# Wednesday, November 07, 2007

Wir haben es tatsächlich geschafft unseren Stand aufzubauen. Er sieht natürlich toll aus. Wenn nicht das viele Herumgestehe wäre, würde so eine Messe wirklich Spaß machen.

Falls uns jemand besuchen möchte, so sieht der Stand aus:

Tekom_Stand1

Tekom_Stand2

Mein armer Chef! Er nimmt auch Spenden!

Wednesday, November 07, 2007 4:25:05 PM (W. Europe Standard Time, UTC+01:00)  #
  Disclaimer  |  Comments [1]  | 
# Sunday, November 04, 2007

Ich finde es ist wichtig, für jede Aufgabe das geeignete Tool einzusetzen. In der Technischen Dokumentation arbeitet der Redakteur häufig in MS Word oder in Adobe FrameMaker. Beide ermöglichen das Erstellen der entsprechenden Inhalte. Ohne weitere Unterstützung liegen diese Inhalte dann als Dokumente in Verzeichnissen des Dateisystems. Die Verzeichnisstruktur wird typischerweise die Projekte, Sprachen und Versionen wiederspiegeln. Die Dokumente selbst stellen meist große Informationseinheiten dar: Kapitel oder vielleicht sogar die komplette Dokumentation.

Ein kleines Team, gut organisierter Redakteure, kann bei dieser Vorgehensweise effizient arbeiten. Es gibt kaum Verwaltungsaufwand. In vielen Fällen müssen die Informationseinheiten aber besser verwaltet werden. Größere Teams, viele Übersetzungen, viele Varianten und unterschiedliche Ausgabeformate sind Gründe für eine umfassendere Lösung.

Man braucht also ein Inhaltsverwaltungssystem oder Englisch Content-Management-System (CMS). Offensichtlich denken bei dem Begriff CMS inzwischen zu viele an die weborientierte WCMS Variante. Für Systeme die nicht nur Webseiten, sondern auch Druck und andere Ausgabeformate unterstützen verwendet man deshalb auch den Begriff Redaktionssystem.

Wir haben uns näher mit SCHEMA ST4 befasst, einem sehr mächtigen Vertreter unter den Redaktionssystemen. Dabei haben wir uns soweit eingearbeitet, dass wir SCHEMA Certified Partner wurden. Wir betreiben eine Testinstallation und eine Kollege und ich waren bei SCHEMA zu einer mehrtägigen Konfigurationsschulung.

SCHEMA Certified Partner 

Eine SCHEMA Konfiguration hat sehr viel mit XML/XSL Programmierung zu tun. Das System ist sehr offen und modifizierbar. Es ist wirklich sehr viel möglich, man darf aber keine Angst vor spitzen Klammern haben.

Ansonsten gefällt mir als .NET Entwickler natürlich der Technologie-Stack: Als Datenbank kommt standardmäßig ein SQL Server 2005 zum Einsatz, darüber kommt ein .NET basierter Applikationsserver auf den wiederum .NET Clients zugreifen. Alle Daten treten als XML in Erscheinung und werden über XSL formatiert. Selbst die in der Benutzeroberfläche dargestellten Elemente werden über XPath gesteuert.

TD | Tools
Sunday, November 04, 2007 8:18:26 PM (W. Europe Standard Time, UTC+01:00)  #
  Disclaimer  |  Comments [0]  |