Sonntag, Dezember 30, 2007

Jahresrückblick 2007

Dieses Jahr war mal wieder ein Jahr mit vielen technischen Themen. Größte Themenblog im 1. Halbjahr war der BizTalk Server 2006. Hier vor allem der elektronische Rechnungsdatenaustausch und die Entwicklung bei einem Kunden, ebenfalls zum Thema Rechnungsaustausch und EDI. Ich habe wirklich viele Erfahrungen mit dem BizTalk gewonnen. Das Thema BizTalk begleitete mich immer weiter durch das Jahr, wirklich abgeschlossen war es nicht, allerdings nicht mehr so massiv. Im ersten Quartal war außerdem noch Erfahrung sammeln und Erweitern einer Fahrzeugtracking-Komponente bzw. Tour-/Auftragsübermittlung. War wirklich spannend und man sieht mal, was alles so als Produkt vertrieben wird. Interessant ist Fahrzeugtracking eigentlich für jeden Fuhrpark.

Das 2. Halbjahr war eigentlich das Thema Sharepoint führend. Also Sharepoint-Technologien 2007 sind wesentlich netter und interessanter als die Vorgänger, allerdings immer noch teilweise sehr „spannend“ im Verhalten. Dieses Problem führte in der letzten Woche zur Verschiebung eines GoLives einer Applikation. Dennoch ist Sharepoint auch für Webseiten eine Interessante Alternative, hier mal einige Beispiele von diesem Jahr, www.smartpath.de, www.callparts.de, ersatzteile.callparts.de. Alle diese Seiten nutzen leider noch nicht den gesamten Funktionsumfang des Sharepoints, allerdings kann das alles noch kommen. Mit dem Sharepoint wurde teilweise auch der Einsatz von Ajax-Technologien verbunden. Was sich allerdings ohne das angekündigte Service Pack 1 für Sharepoint als Schwierig gestaltete

Ein anderes Thema, dass im Zweiten Halbjahr Erfolge feierte, war die Einführung von Subversion bei uns. Bei uns meinte ich jetzt SD&C und CapeVision, wir Entwickler nutzen das bei CapeVision bereits als Standard, allerdings wurden bisher nur Sourcen abgelegt. Nach der geleisteten Überzeugungsarbeit im ersten Halbjahr bei einem Projektleiter, war die Einführung nicht mehr ganz so schwer. Die Geschäftsführung musste allerdings noch überzeugt werden. Auch der zweite involvierte Projektleiter stimmte für Subversion. Was allerdings für eine breite Akzeptanz fehlte, war die einfache Möglichkeit Projekte anzulegen. Zu diesem Zweck habe ich mich an die Entwicklung einer Applikation (natürlich in der Freizeit) gemacht, die die Anforderung abbilden kann. Meine erste Idee war die Realisierung auf Basis der BizTalk Technologie und Sharepoint, diese Idee musste ich verwerfen, da es schwieriger war als gewünscht. ABER es gab das .NET Framework 3.0, welches Workflow Komponenten (Workflow Foundation - WF) und Service Hosting Komponenten (Window Communication Foundation - WCF) enthält. Außerdem kam für das Front-End eine Web-Applikation mit Ajax Unterstützung zum Einsatz. Letztendlich sorgt die Applikation dafür, dass das Projekt als Repository angelegt wird, die Basis-Struktur nach derzeitigem KM (Konfigurationsmanagement)-Stand erzeugt wird, Benutzerrechte definiert werden und das Projekt-Ticketsystem Trac angelegt wird. Nun werden alle Dokumente (außer VMs) in das Repository eingecheckt.

Eine Technologie, die sich durch das ganze Jahr zog war die Virtualisierung. Dabei kamen bei uns beide großen Systeme Microsoft Virtual PC/Virtual Server und VMWare Workstation/Server zum Einsatz. Allerdings verschob sich im Laufe des Jahres alles Richtung VMWare aufgrund der besseren Unterstützung von Peripherie.

Noch wichtig zu erwähnen, dass im November endlich Visual Studio 2008 und das .NET Framework 3.5 released wurden. Hier sind auf jeden Fall die ASP.NET 3.5 Extension zu empfehlen! Ach ja, ich hab nach über 2,5 Jahren endlich den MCAD komplettiert.

Eine weitere Technologie des Jahres ist aus meiner Sicht Instant Messageing. Endlich setzt sich IM auch in Unternehmen zu nehmend durch. Wir sind auf Jabber/XMPP umgestiegen, da es uns leichter und unabhängig ermöglicht einen Server zu betreiben. Wir nutzen Openfire als Server, der sehr einfach aufzusetzen ist und sehr gute Unterstützung bietet. Bei den Clients wählt jeder nach belieben. Zum einen nutze ich PSI, Kollegen nutzen Spark, Miranda oder auch Trilian.

Samstag, Dezember 22, 2007

Weihnacht ist da

Nun ist die Weihnachtszeit auch bei mir angekommen. Ich habe heute Morgen noch das Geschenk für meinen Bruder besorgt, was ich übrigens schon die ganze Woche machen wollte. Ich bin nun auf dem Weg zu meinen Eltern und versuche etwas Entspannung zu finden. ;) Mal einige alte Freunde wieder treffen wäre auch nicht schlecht, aber dazu muss erst ein Termin her.

Ich wünsche allen eine ruhige, friedliche und besinnliche Weihnachtszeit mit den Liebsten. Außerdem noch ein gutes Überstehen der Weihnachtsessen und Naschaktionen. Vielleicht klappt‘s ja auch mit einigen wenigen Schneeflocken dies Jahr. Hier in Finsterwalde ist übrigens schon einiges weiß, sogar die Straßen.

Sonntag, Dezember 16, 2007

Urlaub vorbei

Puuuh, also die Woche war noch mal etwas hecktischer, allerdings habe ich es so geschafft meine Gedanken an meine Ex zu reduzieren. War aber immer noch schrecklich, zumal ich wieder richtig schlecht schlafe. Montag habe ich, wie schon zu lesen war, endlich meinen MCAD fertig gemacht. Dazu musste ich am Sonntag mal einige Stunden missbrauchen um mich noch mal intensiv vorzubereiten. Dafür durfte ich dann am Montag Abend mal wieder Kinder hüten. War eigentlich ganz angenehm, außer dass man dann gar keine Ablenkung mehr hat, wenn die Kinder super schlafen.

Die nächsten 2 Tage war dann das Spielen an einer Webseite dran, wo ich auch einige neue Erfahrungen mit Lokalisierung erhalten hab. Nebenbei habe ich auch immer versucht eine Geschenkidee für meinen Bruder und seine Frau zu bekommen, aber ich habe immer noch den gleichen Stand. Die 2 Tage ASP.NET speilen hat sogar ein Ergebnis, dass nicht nur aus Wissen besteht.

Am Freitag war „großes“ Firmenmeeting, vorher noch eine kleine Abstimmungsrunde im .NET Bereich. Leider waren wir nur zu Zweit, so dass die Diskussionsrunde sich nur auf 2 begrenzt hat. Ich denke allerdings, dass es dadurch sehr produktiv war und auch einige gute Ziele und Vorgehen für kommende Events hat. Der Abend war auch recht nett und wurde richtig lang. Wir bekommen extrem viele neue Kollegen im nächsten Jahr, dass ist wirklich erschreckend. Leider verlässt uns auch eine Kollegin, allerdings auch gut verständlich, da diese immer weit wegfahren musste zum Arbeiten und das sich auch nicht mit ihrem Studium vertragen hat. Ich wünsche ihr aber viel Erfolg beim neuen Arbeitgeber und viel Spaß. Ansonsten hatte ich auch einige interessante, schockierende Aussagen gehört, die ich hier aber nicht posten werde. Gespräche mit den Chefs sind auch immer sehr Aufschlussreich. Zu dem hat jeder Mitarbeiter ein dickes Weihnachtsgeschenk in Form eines Candle Light Dinners bekommen. Ich habe blöderweise auch erfahren, dass aus unserem Testen viel weniger wird, weil ein Kollege nahezu die ganze Woche noch wo anders arbeitet. (aus 3*4PT sind nun noch 2*3,5PT geworden)

Mein Wochenende besteht aus dem spielen mit Windows 2008 und dem Warten auf das Service Pack für Vista. :) Am Montag gehe ich erst mal fleißig an Regressionstests. Am Mittwoch ist ein Jahresabschlussessen mit einigen alten Azubis. Ach und ich muss mein Fahrrad irgendwie reparieren. Es bremst immer am Hinterrad und ich hab keine Ahnung, was ich bei der selbsteinstellenden Bremse noch machen soll.

ASP.NET Localization

Ich hab in der letzten Woche bisschen an einer Webseite gefummelt. Dabei habe ich mal das Problem mit der Lokalisierung erneut angehen wollen. Wie bringe ich eine Webseite dazu die Sprache nach dem Nutzer auszurichten. Einige interessante Erkenntnisse sind mir dabei aufgefallen.

Der erste Schritt war es, dass Menü konfigurierbar zu machen. Das Menü ist mit Standard ASP.NET mitteln gebastelt, d. h. Sitemap, ASP-Menu und Breadcrumb. Nach einigem lesen bin ich hier schnell auf eine Lösung gefunden, die beeindruckend einfach ist. Das Sitemap file muss zu jedem Resourcen-Eintrag einen Resourcekey enthalten, mittels dem Resource-Key wird in der Resource-Datei nach dem Eintrag gesucht. Auf jeden Fall das Attribut „enableLocalization“ auf „true“ setzen.

<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" enableLocalization="true">

<siteMapNode url="/" title="Home" description="Startseite" resourceKey="Root">

<siteMapNode url="/Me/default.aspx" title="Über mich" resourceKey="MeRoot">

<siteMapNode url="/links.aspx" title="Links" resourceKey="Links"/>

</siteMapNode>

</siteMap>

Zu jedem Eintrag kann eine Resource angelegt werden. Die Resource muss den selben Namen wie die Datei haben und im Global-Resource-Folder abgelegt sein. So muss mindestens die Datei „Web.sitemap.resx“ (bei Standardkonfiguration) existieren, wird eine lokalisierte Resource benötigt, so muss der Name der Culture angegeben werden, so z. B. „Web.sitemap.de.resx“ oder „Web.sitemap.fr.resx“. Ich habe die Erfahrungen nur mit Neutral-Cultures gemacht, aber ich denke, dass es auch mit der Specific-Culture funktioniert. Die Einträge in der Datei bestehen immer aus dem Resource-Key und dem Attribute-Namen.

Links.description External links
Links.title Links
Root.description
Root.title Startseite

Dieser Mechanismus ermöglicht es auch eigene Attribute zu verwenden.

Der Kompliziertere Teil war die Lokalisierung der Seiteninhalte. Hier gibt es 2 Wege, der 1. Fällt mir gerade nicht ein, hat allerdings auch nicht funktioniert, wenn man die Sprache manuell verändern möchte. Der von mir gewählte Weg nutzt Literal-Controls und Dynamische Control-Expressions. Der Inhalt der Seite muss an allen Stellen, die mehrsprachig sein sollen mittels controls aufbereitet werden.

<h1><asp:Label ID="lblHeadline" runat="server"

Text="<%$ Resources:PageDefault, Headline %>"></asp:Label></h1>

<p><asp:Label ID="Label1" runat="server"

Text="<%$ Resources:PageDefault, IntroductionArticle %>"></asp:Label></p>

In der Resourcen Datei “ PageDefault.resx” sind die Einträge „Headline“ und „IntroductionArticle“ definiert. Hier wird für weitere Sprachen das gleiche Verhalten wie bereits bei der Sitemap verwendet, z. B. „PageDefault.de.resx“.

Der so vorhandene Mechanismus passt die Sprache immer an die Browser-Einstellungen des Benutzers an. (IE: Tools-->Internet Options-->Language)
IE Language Settings

Um nun die Einstellungen manuell setzen zu können, muss etwas Code (leider in jede Seite eingefügt werden). Im ersten Schritt aber erstmal das setzen. Dazu habe ich meiner MasterPage die Sprach-Buttons und das Event dazu definiert. Durch klicken auf den Button wird das Server-Event ausgelöst. Im einfachsten Fall könnte der Code so aussehen:

Session.Remove("lang");

Session.Add("lang", System.Globalization.CultureInfo.GetCultureInfo(btn.CommandArgument));

Server.Transfer(this.Request.Url.PathAndQuery, false);

Am Ende wird ein Server.Transfer gemacht. Der Grund für dieses Verhalten ist im Standardmechanismus des .NET-Fx. Hier ist mal der Code umd die Sprache tatsächlich zu setzen:

protected override void InitializeCulture()

{

object o = Session["lang"];

if (o != null)

{

System.Threading.Thread.CurrentThread.CurrentCulture =

System.Threading.Thread.CurrentThread.CurrentUICulture = (CultureInfo)o;

}

base.InitializeCulture();

}

InitializeCulture ist eine Standard-Methode innerhalb des .NET-FX, allerdings kann der Code nicht in der MasterPage eingefügt werden. Außerdem muss für die gewählte Lösung das Paging aktiviert werden.

Ich hoffe, ich habe nix vergessen und wünsche viel Spass beim Anpassen des Internets. :)

Montag, Dezember 10, 2007

Endlich MCAD

Nach dem ich die letzte Prüfung zum MCAD über 2,5 Jahre hinaus geschoben habe, habe ich die Prüfung vor wenigen Stunden bestanden. Ich bin endlich ein MCAD! Die Prüfung enthielt schon einige echt … Aufgaben, aber zum Glück auch typische Webservice-Fragen, so dass ich die Prüfung mit 920 Punkten geschafft habe.

Nächstes wird eine der beiden Upgrade-Prüfungen für den MCPD sein, entweder 70-551 für Web-App oder 70-552 für Windos-App sein. Mal schauen, aber vermutlich werde ich die Prüfung noch innerhalb der Gültigkeit des „Second Shot“ machen.

Donnerstag, Dezember 06, 2007

Zum Nikolaus was kleines

Eigentlich wollte ich nix schreiben, aber da Nikolaus ist, habe ich mich nun dazu durchgerungen etwas zu schreiben.

Ich habe fast nix zum Nikolaus bekommen. Fast, weil eine gute, alte (sieht attraktiv aus und ist jünger als ich) Freundin mir eine nette, lustige SMS geschrieben hat. Ich hätte auch gern jemanden einen schönen Nikolaus gewünscht, am liebsten auch was Kleines geschenkt. Leider habe ich versprochen sie nicht mehr zu belästigen und nun kann ich ihr nicht mal was schreiben. Dieses Schicksal wird mich noch 1 Monat bis Ende Januar begleiten. Ich will sie einfach nicht nerven. Ich war heute mal draußen, das ist deshalb so ungewöhnlich weil ich mich die letzten 3 Tage in meiner Wohnung verkrochen habe und nicht mal raus wollte.

Urlaub ist echt hart. Ich hab allerdings auch mal etwas Zeit, in der ich an was anderes denke, bzw. keine Zeit habe an sie zu denken. Meistens ist das, wenn ich CoD4 zocke. Leider kann ich mich da nicht länger als 2h am Stück vor hocken, weil ich sonst einen riesen Schädel habe. Ich werde morgen meinen Schädel weiter bearbeiten.

Montag, Dezember 03, 2007

Smart Client Software Factory Erfahrungen

Nun endlich mal was zu dem Thema SCSF.

Wer die SCSF installieren möchte, der sollte dafür am besten eine VM nutzen. Man benötigt einiges an Beta-Software für den Client. Unbedingt auch die Versionen beachten. Es könnte sonst passieren, dass nicht viel geht. Aktuell ist das Mai 2007 CTP Release, dazu benötigt man:

·         Guidance Automation Extensions

·         Guidance Automation Toolkit

·         Optional VS2005 Extensions für .NET 3.0

Gute Arbeit leistet aber der Dependency Checker, der bei der SCSF mitgeliefert wird. Alle notwendigen Downloads werden vom Checker geprüft und die Links zur Verfügung gestellt.

Wer eine Installation unter Visual Studio 2008 wagen möchte, der sollte mal im Blog von Ezequiel Jadib vorbeischauen. Der Post ist allerdings für Orca Beta 2, wer etwas Ahnung hat, der sollte sonst aber auch keine Probleme haben. Ich habe das nicht ausprobiert, da ich wie oben geschrieben hab, die Installation in einer VM durchgeführt habe.

Die Hands on Labs (HOL) sind leider auch noch in einer Beta Phase und noch nicht komplett, aber um einen Einstieg zu erhalten, sind sie super.

Als Anwendung bieten sich eigentlich alle Anwendungen an, die im Intranet eines Unternehmens ausgeführt werden. Durch die saubere, manchmal auch etwas aufwendigere, Aufteilung und Entkopplung können Module leicht auf Veränderungen reagieren. Die Entkopplung ist bereits in vielen anderen Factories enthalten und ist definitiv für eine verbesserte Wartbarkeit durchzuführen.

Dies ist jetzt mein 3. Oder 4. Anlauf, wenn ich die CAB-Versuche mit zähle, mich in die Materie und Verwendung einzuarbeiten. Man sollte sich dafür durchaus 20h Zeit nehmen und einfach die HOLs von vorn bis hinten durchgehen. Bevor danach die Arbeit losgeht, sollte man sich aber noch mal Gedanken, wie bei jedem Projekt, über die Module machen. Ebenso ist es wichtig die Aufteilung/Layout des SCSF-Workspace zu beachten.

Ich werde mich das nächste Jahr weiter mit verschiedenen Modulen beschäftigen, unter anderem ein Modul zum Bearbeiten einer SVN-Authz-Datei und zur besseren Pflege von Stammdaten in unserem Unternehmen. Die für mich interessanteren Stammdatenpflege-Module sind unsere Mitarbeiterkontakte und die Projektdaten. Wer jetzt schreit Kundendaten kann er auch noch machen, wenn er schon Mitarbeiterdaten entwickelt, der irrt aus meiner Sicht. Kundendaten sind wesentlich Komplexer und werden vermutlich in anderen/mehreren Datenquellen abgelegt. Mitarbeiter Informationen sollten alle aus dem Active Directory kommen. Natürlich muss man dafür das AD-Schema evtl. erweitern. Mal schauen, wie schwierig es wird alle Daten in das AD zu überführen. Allerdings bedarf es vor dem Beginn der Mitarbeiterpflege einiger Nachforschungen der Informationen der Mitarbeiter.

Ich werde den Service zum ändern der SVN-Authz-Datei, sobald er fertig ist hier zur Verfügung stellen. Momentan ist das Laden implementiert, dies ist allerdings noch nicht bis ins kleinste getestet, was auch noch eine Weile dauern wird. Momentan will ich es einfach zum Laufen bringen.