.
Anmeldung | Registrieren | Hilfe

.NET-Blogs Archiv September 2010

Silverlight Tipp der Woche: Design-Time Data verwenden

30.09.2010 22:04:00 | Stefan Lange

In diesem Tipp geht es um die Verwendung von Design-Time Attributen wie d:DataContext, d:DesignInstance oder d:DesignData, die einem das Arbeiten im Visual Studio Designer ganz schön erleichtern können.

Zusammenfassung

Die Verwendung von Design-Time Attributen erlaubt die Nutzung des Property Explorers beim Erstellen von Datenbindungen im XAML-Code, sowie das Anzeigen von Beispieldaten im Designer zur Design-Zeit. Auf das Verhalten der Silverlight- Anwendung zur Laufzeit haben sie keinen Einfluss.

Beschreibung

Vor Visual Studio 2010 war das Erstellen von Datenbindungen in XAML mehr oder weniger ein Blindflug. Ob man alles richtig eingetippt hat, konnte man letztlich erst nach einem Start der Anwendung überprüfen. Und wenn man keine Daten angezeigt bekam, musste man recht mühsam nach den Ursachen suchen. Auch das Erstellen von Datatemplates war ohne Expression Blend praktisch nicht effizient möglich. Mit dem neuen Visual Studio ist das sehr viel einfacher geworden, wenn man ein paar Formalitäten beachtet.

Das Erstellen für den korrekten XAML-Code eines Databindings kann über Property Explorer durchgeführt werden. Dazu muss man ihm allerdings die Information über den zu bindenden Datentyp geben. Das folgende Beispiel zeigt, was zu tun ist:

<UserControl x:Class="DesignTimeData.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
    xmlns:data="clr-namespace:DesignTimeData"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">
  <Grid x:Name="LayoutRoot" d:DataContext="{d:DesignInstance Type=data:Person}">
    <TextBox Text="{Binding Path=Name, Mode=TwoWay}"/>  
  </Grid>
</UserControl>

Der XML-Namespace d wird standardmäßig angelegt und verweist auf die Design-Time Attribute. Außerdem sorgt die Zeile mc:Ignorable="d" dafür, dass alle Elemente aus diesem Namespace zur Laufzeit ignoriert werden. Damit ist es nun möglich, einem äußeren Element wie hier dem Grid einen DataContext zuzuweisen, der nur zur Designzeit verwendet wird. Im Beispiel sorgt das Attribut DesignInstance dafür, dass dem DataContext eine Instanz des Typs Person zugewiesen wird. Mit diesen Informationen ausgestattet kann der Property Explorer den Datentyp analysieren und beispielsweise zum Binden der Property Text dem Entwickler einen hilfreichen Dialog anbieten:

Der Dialog zeigt die Properties der Klasse Person als mögliche Werte für den Binding Path. Den Dialog erhält man über die rechte Maustaste auf der Property Text im Property Explorer und dann über den Menüpunkt "Apply Data Binding…". Damit kann ein Databinding viel leichter erstellt werden als es bisher möglich war. Es empfiehlt sich also, in allen User-Controls generell im LayoutRoot-Element den Design-Time DataContext auf den zur Laufzeit verwendeten Datentyp zu setzen.

Design-Time Daten

Bei komplexeren Controls wie einem DataGrid kann es zusätzlich hilfreich sein, zur Designzeit ein paar Beispieldaten angezeigt zu bekommen. Dadurch kann beispielsweise das individuelle Layout der Spalten besser angepasst werden.

Im Beispiel gibt es zwei vereinfachte Datenklassen Person und Address, sowie eine Collection von Person Objekten:

public class Person
{
  public string Name { get; set; }
  public DateTime Birthday { get; set; }
  public Address Address { get; set; }
}
 
public class PersonCollection : ObservableCollection<Person>
{ }

public class Address
{
  public string City { get; set; }
}

Mit etwas XAML-Code werden damit die Beispieldaten angelegt:

<data:PersonCollection xmlns:data="clr-namespace:DesignTimeData">
  
  <data:Person Name="Miller" Birthday="1.2.1999">
    <data:Person.Address>
      <data:Address City="Cologne"/>

    </data:Person.Address>
  </data:Person>
 
  <data:Person Name="Baker" Birthday="2.3.1988">
    <data:Person.Address>
      <data:Address City="Berlin"/>
    </data:Person.Address>

  </data:Person>
 
  <data:Person Name="Smith" Birthday="3.4.1977">
    <data:Person.Address>
      <data:Address City="Munich"/>
    </data:Person.Address>
  </data:Person>

 
</data:PersonCollection>

Die Beispieldaten kommen in eine XAML-Datei, die Teil des Projektes ist. Die Build Action dieser Datei muss auf DesignData (oder DesignDataWithDesignTimeCreatableTypes) stehen.

Mit diesen Daten wird nun ein DataGrid wie im folgenden Beispiel versorgt:

<sdk:DataGrid Width="376" Height="138" HorizontalAlignment="Left" Margin="12,96,0,0" VerticalAlignment="Top"
          d:DataContext="{d:DesignData Source=./DesignTimeSampleData.xaml}"
          ItemsSource="{Binding}" AutoGenerateColumns="False">
  <sdk:DataGrid.Columns>
    <sdk:DataGridTextColumn Binding="{Binding Path=Name}" Header="Name" />
    <sdk:DataGridTextColumn Binding="{Binding Path=Birthday, StringFormat='dd.MM.yyy'}" Header="Birthday" />
    <sdk:DataGridTextColumn Binding="{Binding Path=Address.City, Mode=TwoWay}" Header="City" />
  </sdk:DataGrid.Columns>

</sdk:DataGrid>

Der DataContext des DataGrids wird über das Design-Time Attribut DesignData direkt mit den Beispieldaten aus der XAMLDatei verbunden. Als Effekt davon werden die Beispieldaten im Designer angezeigt:

Das ist äußerst praktisch, wenn man beispielsweise die Spalten über Data-Temples layouten möchte, denn ohne eine WYSIWYG-Datenvorschau geht das nur mit sehr sehr viel Übung.

Expression Blend verfügt schon etwas länger über die Möglichkeit, das Layout mit generierten Beispieldaten auszustatten. Das dabei verwendete Verfahren ist aber komplizierter und nutzt dafür u.a. Static Resources. Außerdem werden die Daten dem "echten" DataContext zugwiesen und sind daher auch zur Laufzeit vorhanden. Der Entwickler muss sie also entweder irgendwann wieder aus dem XAML entfernen oder zumindest per Code den DataContext überschreiben.

Das beschriebene Verfahren mit den Design-Time Attributen hat dagegen keine Auswirkungen zur Laufzeit und eignet sich auch sehr gut für Entwickler, die keinen Zugriff auf Blend haben.

Weitere Details finden sich in der MSDN Hilfe.

Das Projekt, mit dem die Screenshots gemacht wurden, ist hier:

DesignTimeData.zip (8 kB)

Hier geht's zum nächsten Tipp.

Neuer Benachrichtigungsmechanismus im MSDN Forum fuer Forum-Alerts

30.09.2010 14:52:41 | Kay Giza

Neuer Benachrichtigungsmechanismus im MSDN Forum fuer Forum-Alerts: Mit dem nächsten Update der Foren-Plattform vom MSDN unter http://www.msdn-foren.de dürfen sich alle User über eine neue und bessere Benachrichtigungsform (E-Mail-Alert) freuen. Die Möglichkeit, sich bestimmte Diskussionen im MSDN Forum zu abonnieren und über neue Beiträge informiert zu werden, wurde bisher über den Dienst Windows Live Alerts realisiert. Dieser wird nun durch einen neuen Mechanismus abgelöst. Wer in Zukunft bestimmte Diskussionen abonnieren möchte, muss... [... lesen Sie den vollständigen Beitrag auf Giza-Blog.de]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:  MSDN Aktuell
© Copyright 2006-2010 Kay Giza. All rights reserved. Legal
Subscribe

Codezone.de: Mission erfuellt

30.09.2010 11:02:16 | Kay Giza

Im Jahr 2004 startete Microsoft mit Codezone.de eine ambitionierte Web-Initiative für .NET-Entwickler, die die Zusammenarbeit und den Infoaustausch innerhalb der deutschsprachigen Developer-Community seitdem maßgeblich befeuert hat. Unter dem Motto Von Entwicklern für Entwickler sind in den vergangenen sechs Jahren auf dem Portal tausende von entwickler-relevanten Fundstellen zusammengetragen und erschlossen worden - Infos zu Artikeln, FAQ-Sammlungen, Büchern, Links zu Fachautoren, Sprechern, User Groups und Organisationen oder Hinweise auf aktuelle Community-Events. Auf diese Weise hat sich Codezone.de rasch zu einer relevanten Metasearch-Engine gemausert, die mit ihrem strukturierten Ressourcen-Fundus Transparenz in die vielfältigen Community-Aktivitäten bringen konnte. Inzwischen haben Web 2.0- und Social Media-Portale zahlreiche der ursprünglichen Codezone-Funktionen übernommen. So nutzen Entwickler heute Facebook, Twitter, Foren oder Tagging-Dienste wie beispielsweise DotNetKicks, um sich auszutauschen, Inhalte zu vermitteln und Networking zu betreiben. Im Herbst beendet Microsoft daher sein Codezone-Engagement. In diesem Blogposting ziehe ich ein Resümee der spannenden Arbeit in und mit der Community... [... mehr in diesem ausführlichen Blogeintrag auf Giza-Blog.de]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:  MSDN Aktuell
© Copyright 2006-2010 Kay Giza. All rights reserved. Legal
Subscribe

Einladung zum ALM Summit in Redmond – 16.-18. November 2010

29.09.2010 14:56:00 | Peter Kirchner

Microsoft sponsort den ersten offiziellen ALM Summit auf dem Microsoft Campus – die Veranstaltung geht über drei Tage und findet vom 16.-18. November 2010 im Microsoft Conference Center in Redmond statt. Die Teilnehmerplätze sind strikt limitiert. Melden Sie sich jetzt an unter: www.alm-summit.com

Tickets kosten bis 30. September $1.295,- netto, ab 1. Oktober 2010 $1.495,- netto. Ihr Ansprechpartner bei Microsoft kann Ihnen eventuell einen Promocode zur Verfügung stellen, mit dem Sie einen Rabatt von $200,- gegenüber diesen Preisen erhalten.

Ähnlich wie auf der TeamConf kommen auf dem ALM Summit führende Innovationstreiber der IT-Branche zusammen, um zu diskutieren und um herauszufinden, wie Application Lifecycle Management (ALM) ihre Entwicklung und ihre Forschungszyklen beschleunigen kann, um sich Wettbewerbsvorteile zu sichern und Innovationen umzusetzen.

Der hochkarätige Anspruch des Events wird durch ein erstklassiges Angebot an Keynotes unterstrichen:

clip_image003

clip_image004

clip_image005

clip_image006

image

Ken Schwaber
Scrum
Alliance

Brian Harry
Technical Fellow,
Microsoft

Dave West
Forrester
Research

Sam Guckenheimer
Microsoft

Tony Scott
CIO, Microsoft

Die Teilnehmerplätze sind strikt limitiert. Melden Sie sich jetzt an unter: www.alm-summit.com

Der ALM Summit ist neben dem ausgezeichneten Vortragsprogramm eine hervorragende Gelegenheit für CIOs, IT-Leiter, Senior Architekten, Entwicklungsleiter und IT-Infrastrukturverantwortliche zum Austausch und Networking mit Kollegen aus anderen führenden Unternehmen, um aktuelle Entwicklungen aus erster Hand zu diskutieren.

ASP.NET Security Vulnerability Bug Fix

28.09.2010 20:49:00 | Michael Schwarz

Der Bugfix für die ASP.NET Sicherheitslücke ist jetzt über Microsoft Download verfügbar, einfach mal nach "MS10 070” suchen:

http://www.microsoft.com/downloads/en/results.aspx?freetext=ms10+070&displaylang=en&stype=s_basic

Update: hier gibt’s ja noch die Übersichtsseite für alle .NET Frameworks und Betriebsysteme.

Update 2 (from Scott Guthrie):

Find your operating system within the below chart, then check to see which versions of .NET you have installed on it (details on how to determine which version of the .NET Framework is installed can be found here).  Download and apply the update packages for each version of .NET that you are using on that server.

Windows Server 2008 R2 and Windows 7

 

.NET Framework Version

KB Article

Patch

.NET Framework 3.5.1

KB2416471

Download

.NET Framework 4

KB2416472

Download

Windows Server 2008 SP2, Windows Vista SP2

 

.NET Framework Version

KB Article

Patch

.NET Framework 2.0 SP2

KB2416470

Download

.NET Framework 4

KB2416472

Download

.NET Framework 3.5 SP1

KB2416470, KB2416473

Download, Download*

.NET Framework 3.5

KB2416470, KB2418240

Download, Download*

.NET Framework 1.1 SP1

KB2416447

Download

*When multiple patch downloads are listed above against a .NET version (for example with .NET 3.5 SP1 and .NET 3.5 installs) then all patches should be installed (order is not relevant).

Windows Server 2008, Windows Vista SP1

 

.NET Framework Version

KB Article

Patch

.NET Framework 2.0 SP1 (default install)

KB2416469

Download

.NET Framework 4

KB2416472

Download

.NET Framework 3.5 SP1

KB2416474, KB2416473

Download, Download*

.NET Framework 2.0 SP2

KB2416474

Download

.NET Framework 3.5

KB2416469, KB2418240

Download, Download*

.NET Framework 1.1 SP1

KB2416447

Download

*When multiple patch downloads are listed above against a .NET version (for example with .NET 3.5 SP1 and .NET 3.5 installs) then all patches should be installed (order is not relevant).

Windows Server 2003 SP2 32-bit

 

.NET Framework Version

KB Article

Patch

.NET Framework 1.1 SP1

KB2416451

Download

.NET Framework 4

KB2416472

Download

.NET Framework 3.5 SP1

KB2418241, KB2416473

Download, Download*

.NET Framework 2.0 SP2

KB2418241

Download

.NET Framework 3.5

KB2416468, KB2418240

Download, Download*

*When multiple patch downloads are listed above against a .NET version (for example with .NET 3.5 SP1 and .NET 3.5 installs) then all patches should be installed (order is not relevant).

Windows Server 2003 64-bit

 

.NET Framework Version/SP

KB Article

Patch

Default OS Configuration

NA

NA

.NET Framework 4

KB2416472

Download

.NET Framework 3.5 SP1

KB2418241, KB2416473

Download, Download*

.NET Framework 2.0 SP2

KB2418241

Download

.NET Framework 3.5

KB2416468, KB2418240

Download, Download*

.NET Framework 1.1 SP1

KB2416447

Download

*When multiple patch downloads are listed above against a .NET version (for example with .NET 3.5 SP1 and .NET 3.5 installs) then all patches should be installed (order is not relevant).

Windows XP SP3 32-bit and 64-bit

 

.NET Framework Version/SP

KB Article

Patch

Default OS Configuration

NA

NA

.NET Framework 4

KB2416472

Download

.NET Framework 3.5 SP1

KB2418241, KB2416473

Download, Download*

.NET Framework 2.0 SP2

KB2418241

Download

.NET Framework 3.5

KB2416468, KB2418240

Download, Download*

.NET Framework 1.1 SP1

KB2416447

Download

*When multiple patch downloads are listed above against a .NET version (for example with .NET 3.5 SP1 and .NET 3.5 installs) then all patches should be installed (order is not relevant).

Ausserplanmaessiges Sicherheitsupdate fuer die ASP.NET-Schwachstelle 2416728 am 28.09.2010

28.09.2010 12:50:30 | Kay Giza

Microsoft veröffentlicht heute ein außerplanmäßiges Sicherheitsupdate für die Sicherheitsanfälligkeit in ASP.NET, die eine Offenlegung von Informationen ermöglichen kann. Die Sicherheit seiner Kunden und Partner ist für Microsoft ein vordringliches Anliegen. Um diese beim sicheren Betreiben Ihrer IT-Infrastruktur bzw. ihres Computers optimal zu unterstützen, wird Microsoft heute, Dienstag, den 28. September 2010, gegen 19:00 Uhr Mitteleuropäische Zeit eine außerplanmäßige Sicherheitsaktualisierung (Out of Band Release to Address Microsoft Security Advisory 2416728 welches diese Microsoft-Sicherheitsempfehlung (2416728) betrifft) veröffentlichen. Das Update behebt die in der kürzlich veröffentlichten Sicherheitsempfehlung... [... mehr in diesem Blogeintrag auf Giza-Blog.de]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:  MSDN Aktuell
© Copyright 2006-2010 Kay Giza. All rights reserved. Legal
Subscribe

Kommen Sie zur ALMconf: Die unabhängige Konferenz für Application Lifecycle Management und Senior Developer

28.09.2010 10:59:11 | Oliver Scheer

Ende Oktober findet in Stuttgart erstmals die ALMConf statt. Die unabhängige Konferenz für Application Lifecycle Management ist eine Schwesterkonferenz der erfolgreichen TeamConf. Anders als die TeamConf – welche sich speziell mit Application Lifecycle Management auf Basis von Visual Studio Team Foundation Server beschäftigt – ist die ALMConf eine herstellerunabhängige Konferenz. Wie die TeamConf gliedert sie sich in einen Technik-Track für Developer und einen Management-Track für IT-Leiter, Projektentscheider und Entwicklungsleiter.

clip_image002Die ALMConf findet am 26. Oktober 2010 (Management Day) und 27.-28. Oktober 2010 (Technical Tracks) in Stuttgart statt. Veranstaltet wird sie von der HLMC Events GmbH in enger Kooperation mit der iX aus dem Heise Zeitschriftenverlag.

Microsoft ist Sponsor und Aussteller vor Ort, die Agenda bietet spannende Vorträgen von Unternehmen wie HOOD, IBM, MKS, AIT, Artiso und NERO, sowie natürlich von Microsoft. So finden Sie im Management-Track u.a. die folgenden Vorträge:

  • Lean und Agile Software Development – Best of Both Worlds
  • True Cost of Ownership oder Wie sage ich es meinem Management?


Im Technik-Track erhalten Entwickler neueste Informationen zu den aktuellen Entwicklungen, beispielsweise:

  • Distributed Scrum: Agiles Arbeiten in verteilten Teams – ein Erfahrungsbericht
  • Wie entwickelt Microsoft in der Developer Division, Formal oder Agil?


Tickets kosten zwischen 220,- und 390,- Euro – Informieren Sie sich unter http://www.almconf.de

oder melden Sie sich gleich an: http://www.almconf.de/anmeldung.html

Fun-Video der Woche: Pac Man mit menschlichen Pixeln

28.09.2010 09:01:00 | Oliver Scheer

Das Video ist mal wirklich sehenswert Smiley

ASP.NET Sicherheitslücke – Heute gibt es das Update

28.09.2010 02:42:01 | Jürgen Gutsch

Michael Schwarz hat es eben gebloggt: Heute im Laufe des Tages gibt es vom Microsoft das Update zur ASP.NET Sicherheitslücke zu der Stefan Falz bereits geschrieben hat.

Michaels Beitrag: ASP.NET Sicherheitslücke – Morgen gibt’s das Update

Weitere Infos: http://blogs.technet.com/b/[...]microsoft-security-advisory-2416728.aspx
Stefan Falz: Aktuelles ASP.NET Sicherheitsproblem - Sofortige Aktion notwendig!
Stefan Falz: Update zur ASP.NET Sicherheitslücke

DotNetKicks-DE Image

ASP.NET Sicherheitslücke – Morgen gibt’s das Update

28.09.2010 00:09:00 | Michael Schwarz

Für alle, die auf den Bugfix zur ASP.NET Sicherheitslücke warten, morgen soll es den Download im Microsoft Download Center geben:

Today we provided advance notification to customers that we will release an out-of-band security update to address the vulnerability discussed in Security Advisory 2416728. The update is scheduled for release tomorrow, Tuesday, September 28, 2010 at approximately 10:00 AM PDT. The bulletin has a severity rating of Important and addresses a publicly disclosed vulnerability in ASP.NET that affects all versions of the .NET Framework when used on Windows Server operating systems. Windows desktop systems are listed as affected, but consumers are not vulnerable unless they are running a Web server from their computer.

[…]

The update will also be released through Windows Update and Windows Server Update Services within the next few days as we test to make sure distribution will be successful through these channels. This approach allows us to release sooner to customers who may choose to deploy it manually without delaying for broader distribution. 

Mehr Details gibt’s hier

VirtualBox und VERR_SVM_IN_USE

27.09.2010 15:43:00 | Martin Hey

Vor einigen Monaten bin ich zu VirtualBox als Virtualisierungsumgebung gewechselt. Heute nun wollte ich eine virtuelle Maschine starten und wurde begrüßt mit einer schönen Fehlermeldung:
AMD-V is being used by another hypervisor. (VERR_SVM_IN_USE). VirtualBox can't enable the AMD-V extension. Please close all other virtualization programs. (VERR_SVM_IN_USE).
VirtualBox schien sich also mit irgend einer anderen Virtualisierungssoftware um Ressourcen zu streiten. Da ich mir sicher war, dass keine andere Software dieser Art lief, machte ich mich auf die Suche nach anderen laufenden Prozessen.
Nach einigem Probieren wurde ich dann auch fündig: VirtualBox und der Windows Phone 7 Emulator können nicht zur gleichen Zeit auf einem Host laufen - und irgendwie ist der Emulator ja auch eine Art der Virtualisierung.

Slides & Samples von der BASTA!

27.09.2010 10:25:00 | Jörg Neumann

Auch die Herbst-BASTA! hat wieder mächtig Spaß gemacht. Einen Dank an die Teilnehmer meiner Sessions! Hier das Material:

Deutsche Microsoft-Partnerkonferenz 2010 – Ich bin dabei!

27.09.2010 09:01:00 | Lars Keller

Am 29/30.09.2010 findet in Darmstadt die deutsche Microsoft-Partnerkonferenz statt. Ich werde mit Frank Solinske vor Ort sein. Dies ist meine erste Partnerkonferenz und ich bin sehr gespannt was mich erwartet. Frank hat mir vor einiger Zeit über einen Besuch von der Partnerkonferenz berichtet. Ich sage nur: Frank, du hast die Haare schön! :D

Frank und ich werden als MVP-Blogger & Twitterer die Konferenz unsicher machen und mit dem einen oder anderem Fachsimpeln! Auf meiner Liste stehen schon Ralph Haupter (Geschäftsführer Microsoft Deutschland) und Steffen Ritter (Produkt Marketing Manager für Visual Studio). Themen, die mich besonders interessieren, sind Cloud Computing (Azures), Dynamic AX und natürlich Windows Phone 7

Also stay tuned!

Neues Projekt: 3D Scanner. Heute: 2 Achsen und erste Resultate

27.09.2010 00:41:00 | Daniel Springwald

Nach mehreren Wochen des Grübelns darüber, wie die Konstruktion am sinnvollsten aussehen könnte, habe ich heute mit der Umsetzung begonnen.

Der 3D-Scanner wird kein Laser-Scanner und hat auch nicht das Ziel, Objekte möglichst geometriegenau einzuscannen. Statt dessen wird die Aufgabe des Gerätes sein, stereoskopische 360° Aufnahmen von Objekten (insbesondere menschlichen Köpfen) zu erstellen. Der Fokus liegt daher mehr auf optischer/fotografischer als auf geometrischer Genauigkeit.

Aktuell plane ich den 3D-Scanner mit 2 Achsen - je nach Praktikabiltät in der Praxis könnten es aber auch 3 werden.

Vor dem Gang in die Werkstatt steht die Arbeit am Computer - die Schnittmuster für den Lasercutter wollen gezeichnet sein:

Anschließend eine Scheibe Plexiglas in den Laser und abwarten - hier werden gerade die Halterungen für die Kugellager geschnitten:

Die Einzelteile für eine der Achsen:

Die ersten Achse zusammen gebaut:

Hier kann man bereits sehen, wie die Zahnräder der ersten und zweiten Achse ineinander greifen werden:

.NET-Stammtisch Konstanz-Kreuzlingen ist jetzt ein Verein :-)

26.09.2010 03:24:00 | Jürgen Gutsch

Am Samstag den 25.09.2010 um 10:00 Uhr hat sich das .NET-Stammtisch-Team getroffen um die Vereinsgründung zu beschließen.

Der .NET-Stammtisch Konstanz-Kreuzlingen ist hiermit seit dem 25.10.2010 ein Verein nach schweizerischem Recht, mit Sitz in Kreuzlingen. Die Vereinsstatuten (entspricht in Deutschland der Satzung) wurden von allen Anwesenden einstimmig akzeptiert und angenommen.

Was hat das für Auswirkungen?

Für die monatlichen Stammtisch-Treffen hat die Vereinsgründung keine Auswirkungen. Wir treffen uns weiterhin jeden zweiten Mittwoch im Monat in Konstanz oder Kreuzlingen. Jeder interessierte (ob Mitglied oder nicht) kann weiterhin zu uns stoßen und von uns, den Sprechern, den Themen und den Aktionen profitieren. Die monatlichen Treffen werden also weiterhin für alle offen sein. Der Verein veranstaltet also nur die monatlichen öffentlichen Treffen und weitere Veranstaltungen wie zum Beispiel die See# Party.

Wir hoffen also, viele weitere interessierte Besucher bei uns begrüßen zu dürfen :-)

Warum eine Vereinsgründung?

Bei der Veranstaltung der See# Party sind wir auf mehrere kleinere Probleme gestoßen: Bei der Suche nach eine Location war es für die Leute etwas irritierend, dass vier Privatpersonen kommen und eine ganze Halle mit Nebenräumen für eine Großveranstaltung buchen wollten. Bei Caterern, potentiellen Sponsoren war es genau das gleiche. Wenn wir nun als Verein ankommen, werden wir von Anfang an ernster genommen werden. Ein weiteres Problem war, dass wir die Gelder über zwei Privatkonten gelaufen sind, auf denen teilweise noch weitere Kontobewegungen stattgefunden haben. Wir werden nun ein separates Vereinskonto führen.

Desweiteren würden wir über Mitgliedsbeiträge, die Räumlichkeiten für die monatlichen Treffen finanzieren können.

Welche Vorteile haben Mitglieder?

Wir haben beschlossen, dass es drei Arten von Mitgliedern geben wird:

Ehrenmitglieder: Sind Mitglieder sich für ihre Leistung und ihr Engagement für den Verein hervorgetan haben.

Passive Mitglieder: Die mit einem geringen Beitrag den Verein unterstützen möchten, aber sonst keine Pflichten eingehen möchten.

Aktive Mitglieder: Mit einem etwas höheren Beitrag unterstützen die Mitglieder den Verein noch mehr. Mitglieder haben Mitbestimmungsrecht, bei der Ausrichtung und Aktionen des Vereins, bei der Wahl des Vorstands. Mitglieder schlagen Ehrenmitglieder vor.

Alle Mitglieder erhalten für ihr Engagement natürlich Vergünstigungen bei Aktionen wie Großveranstaltungen.

Über die Höhe der Beiträge und die Art der Vergünstigungen für Mitglieder, lassen wir beim nächsten Treffen von Teilnehmern und interessierten möglichen Mitgliedern .NET-Stammtisch abstimmen.

Zahlen und Fakten

  • Die Gründungsmitglieder sind Peter Bucher, Jürgen Gutsch, Tilo Schinke, Markus Schmid und Stefan Zybart.
  • Mit 4 zu 1 Stimmen wurde ich zum Präsidenten vorgeschlagen und gewählt.
  • Peter Bucher ist Beisitzer im Vorstand. Da es ohne ihn den .NET-Stammtisch nicht geben würde, ist er auch unser erstes Ehrenmitglied.
  • Golo Roden ist für seine Unterstützung in Abwesenheit zum Ehrenmitglied nominiert worden. Nimmt er die Nominierung an, ist er unser zweites Ehrenmitglied.
  • Der Vorstand besteht aus den fünf Gründungsmitgliedern.

Der Vorstand setzt sich mit allen Posten wie folgt zusammen:

  • Präsident:
    Jürgen Gutsch
  • Stellvertreter:
    Tilo Schinke, Markus Schmid, Stefan Zybarth
  • Kassier:
    Tilo Schinke
  • Schriftführer:
    Stefan Zybarth
  • Mitgliederverwaltung:
    Markus Schmid
  • Termine und Veranstaltungen:
    Markus Schmid
  • Ansprechpartner für Referenten:
    Jürgen Gutsch
  • Ansprechpartner für Sponsoren:
    Jürgen Gutsch
  • Öffentlichkeitsarbeit:
    Stefan Zybarth
  • Zuständig für Räumlichkeiten:
    Tilo Schinke
  • Website und E-Mails:
    Stefan Zybarth und Jürgen Gutsch
  • Beisitzer:
    Peter Bucher

Was noch?

Mit der Vereinsgründung gibt es neues Logo das den Farben der See# Party angepasst ist und nach Möglichkeit wird es eine neue Website geben. Ich werde mit der K&K Internet GmbH sprechen um zu fragen, ob nicht nur die Website der See# Party mit dem CMS add.min gehostet wird, sondern auch die zukünftige Website des .NET-Stammtisch Konstanz-Kreuzlingen

Es hat mich super gefreut, dass Peter Bucher bei der Vereinsgründung dabei war. Dass er nicht nur mit mir den .NET-Stammtisch ins Leben gerufen hat, sondern nun auch bei diesem Weiteren großen Schritt beteiligt war und mit seinen Ideen großartigen Einfluss genommen hat.

DotNetKicks-DE Image

Einstiegshürden mit Fluent NHibernate und dem Oracle Instant Client

25.09.2010 21:07:00 | Jan Christian Selke

NHibernate kenne ich nun schon eine Weile, auch Fluent NHibernate ist mir – zumindest theoretisch – kein Unbekannter mehr. Außer einem sehr flüchtigen Versuch damit einen kleinen Prototypen zu entwickeln, gab es damit noch wenig Berührungspunkte. Jetzt habe ich es doch versucht und habe prompt die Eine oder Andere Fallgrube mitgenommen. Das gab mir Grund genug, etwas darüber zu schreiben.

Schon vor einiger Zeit habe ich einen sehr schönen Einstiegsartikel von Jürgen Gutsch gelesen. Eine willkommen Hilfe dabei, mich intensiver mit dem Thema zu beschäftigen. Also holte ich auf der einen Seite das Visual Studio 2010 heraus, auf der anderen Jürgens Artikel und es konnte los gehen (an dieser Stelle noch ein kleines Dankeschön für die gelungene Einstiegshilfe :-)).

Jetzt verwendete ich als Datenbank nicht den SQL Server und folglich nicht die SQL Server Client Verbindung, sondern Oracle Express und den Oracle Instant Client. Ich tat es erst einmal als Marginalie ab – ein Trugschluss, wie sich heraus stellte. Ich möchte damit nicht sagen, dass der Einstieg in dieser Kombination mit Fluent NHibernate schwierig ist. Es sind aber anfänglich schon die eine oder andere Hürde, die genommen werden möchten.

Genug der Vorrede, es kann losgehen. Zunächst habe ich die aktuellste Version von FluentNHibernate heruntergeladen und entpackt. Aus dem gesamten Verzeichnis habe ich die folgenden Assemblies in mein Testprojekt eingebunden:

  • FluentNHibernate.dll
  • NHibernate.dll
  • NHibernate.ByteCode.Castle.dll

Schon ein erstes Kompilieren war spontan nicht von Erfolg gekrönt :-(. In der Zusammenfassung hagelte es folgende Fehler:

  • The referenced assembly "NHibernate.ByteCode.Castle" could not be resolved because it has a dependency on "System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" which is not in the currently targeted framework ".NETFramework,Version=v4.0,Profile=Client".
  • The referenced assembly "NHibernate" could not be resolved because it has a dependency on "System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" which is not in the currently targeted framework ".NETFramework,Version=v4.0,Profile=Client".
  • The referenced assembly "FluentNHibernate" could not be resolved because it has a dependency on "System.Data.OracleClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which is not in the currently targeted framework ".NETFramework,Version=v4.0,Profile=Client".

Ok, die Meldung ist recht eindeutig –Mist, schon wieder vergessen... Also rein in die Projekteinstellungen und das Target framework entsprechen umsetzen.

TargetFramework

Wunderbar – Jetzt baut es wenigstens schon einmal fehlerfrei. Es kann also weiter gehen. Jetzt muss der Datenbankzugriff konfiguriert werden. Ich habe den Zugriff erst einmal vollständig im Quellcode abgebildet. Es sah dann schließlich folgendermaßen aus:

ISession session = Fluently.Configure()
.Database(OracleClientConfiguration.Oracle10.ConnectionString(cs =>
cs.Instance("xe")
.Server("localhost")
.Port(1521)
.Username("myuser")
.Password("mypassword"))
.ProxyFactoryFactory(typeof(NHibernate.ByteCode.Castle.ProxyFactoryFactory))
.ShowSql())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<IEntity>()).BuildSessionFactory().OpenSession();

Das Kompilieren funktionierte auch, also los - mit dem Test starten. Und schon fing ich mir die erste Laufzeit Ausnahme ein: OCIEnvCreate failed with return code -1 but error message text was not available.


FalscherProvider 


Nach kurzer Suche hatte ich die Lösung. Ich habe den falschen Provider gewählt. Wenn der Instant Client statt des Microsoft Clients verwendet wird, ist nicht die Klasse OracleClientConfiguration zu verwenden, sondern OracleDataClientConfiguration. Gut zu wissen. Kurze Anpassung.


ISession session = Fluently.Configure()
.Database(
OracleDataClientConfiguration.Oracle10.ConnectionString(cs =>
cs.Instance("xe")
.Server("localhost")
.Port(1521)
.Username("myuser")
.Password("mypassword"))
.ProxyFactoryFactory(typeof(NHibernate.ByteCode.Castle.ProxyFactoryFactory))
.ShowSql())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Form1>()).BuildSessionFactory().OpenSession();

Kompiliert und weiter im Test. –Rumms! Die nächste Laufzeit Ausnahme – schon wieder… Immerhin ist schon in der vierten inneren Ausnahme die Lösung zu finden ;-).


NoOracleDataAccess


Richtig, ich hatte nur die XCopy Installation des Instant Clients durchgeführt. Keine Installation in den GAC mit den mitgelieferten Skripten. In das Ausführungsverzeichnis hatte ich die Oracle.DataAccess.dll auch noch nicht kopiert. Kein Wunder also. Schnell die Assembly in das /bin Verzeichnis kopiert und sie da: Ich konnte endlich auf die Datenbank zugreifen! Nach all den kleinen Startschwierigkeiten funktionierte endlich mein Datenbankzugriff mit Fluent NHibernate.


Es fehlte nur eine Kleinigkeit; dass Auslagern der Zugriffsinformationen in einen ConnectionString. Gesagt, getan:


<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="FNH.Properties.Settings.Lokal" connectionString="User Id=myuser;Password=mypassword;Data Source=localhost:1521"
providerName="Oracle.DataAccess.Client" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>

Dazu muss natürlich auch der Konfigurationsaufruf entsprechend angepasst werden:


ISession session = Fluently.Configure()
.Database(OracleDataClientConfiguration.Oracle10.ConnectionString(cs =>
cs.FromConnectionStringWithKey("FNH.Properties.Settings.Lokal"))
.ProxyFactoryFactory(typeof(NHibernate.ByteCode.Castle.ProxyFactoryFactory))
.ShowSql())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Form1>()).BuildSessionFactory().OpenSession();

Was lange währt, … Schwierig war es letztlich wirklich nicht, aber ich habe anscheinend traumwandlerisch alles erwischt, was nicht funktionieren könnte. Das nächste Mal geht es mit Sicherheit deutlich schneller :-)

BlogEngine.NET Update auf Version 1.6.2.6

25.09.2010 16:38:18 | Klaus Bock

Die letzte Aktualisierung von Blogengine.NET hatte es in sich. Dass Änderungen vorgenommen werden erwartet man ja; sonst bräuchte man ja kein Update.

Diesmal waren jedoch einige breacking changes enthalten. Angefangen mit geänderten Spaltennamen in Datenbanktabellen bis zur Einführung eines neuen Namensraums. Einige Änderungen betreffen allerdings nur jene, die auch eigenen Erweiterungen oder UserControls unter BlogEnginge.NET verwenden. Doch jetzt der Reihe nach.

Datenbank:

Tabelle be_Pages
    IsPublished –> Published
    IsFrontPage –> FrontPage

Tabelle be_Posts
    IsPublished –> Published

Klassen:

Post
    IsVisible –> Visible
    IsVisibleToPublic –> VisibleToPublic

Comment
    IsVisible –> Visible
    IsVisibleToPublic –> VisibleToPublic

ExtensionSettings
    IsScalar –> Scalar

Erweiterungen:

Alle Klassen die für Erweiterungen benötigt werden, wie etwa das ExtensionAttribute oder die ExtensionSettings, sind jetzt im Namensraum BlogEngine.Core.Web.Extensions zu finden.
In einer bestehende Erweiterung muss also eine using-Direktive mit besagtem Namensraum hinzugefügt werden.

Wer eigene Erweiterungen verwendet, sollte diese einzeln auf die Lauffähigkeit unter der Version 1.6.2.6 überprüfen. Für UserControls gilt natürlich das gleiche.

Fazit:

Seit der Version 1.6.2.x wurde sehr viel am Code gearbeitet und auch vieles verbessert. Unter anderem wird jetzt bei der Erzeugung von Auflistungen vermehrt auf LINQ gesetzt.
Trotzdem liegt noch vieles im Argen.
Es werden noch immer alle Artikel eines Blog beim Start in den RAM geladen. Bei der Verwendung des XmlProvider mag es ja aus Performancegründen sinnvoll sein. Aber wenn die Daten aus einem SQL-Server kommen?
Bei der Erzeugung des HTML in den Controls muss noch immer sehr viel nachgearbeitet werden. Manche Leute haben noch immer nicht verstanden, dass eine Link auch ein Title-Attribut besitzt. Auch wird noch sehr viel Spaghetticode erzeugt. Anscheinend kann sich manch einer einfach nicht vom Style-Tag trennen.

Laut der BlogEngine.NET Roadmap zur Version 2.0 soll noch dieses Jahr die Migration zu ASP.NET 3.5 inklusive Unterstützung des IIS7 abgeschlossen sein. Eigentlich hätte ich mit BlogEngine.NET 2.0 eine Migration zu .NET 4.0 erwartet.
Noch sind ja einige Minor-Updates möglich. Warten wir also ab, was da noch kommt.

Application Lifecycle Management Summit in Redmond

25.09.2010 08:21:55 | Christian Binder

Einladung zum ALM Summit in Redmond – 16.-18. November 2010

Microsoft sponsort den ersten offiziellen ALM Summit auf dem Microsoft Campus – die Veranstaltung geht über drei Tage und findet vom 16.-18. November 2010 im Microsoft Conference Center in Redmond statt. Die Teilnehmerplätze sind strikt limitiert. Melden Sie sich jetzt an unter: www.alm-summit.com

Tickets kosten bis 30. September $1.295,- netto, ab 1. Oktober 2010 $1.495,- netto. Ihr Ansprechpartner bei Microsoft kann Ihnen eventuell einen Promocode zur Verfügung stellen, mit dem Sie einen Rabatt von $200,- gegenüber diesen Preisen erhalten.

Ähnlich wie auf der deutschen TeamConf kommen auf dem ALM Summit führende Innovationstreiber der IT-Branche zusammen, um zu diskutieren und um herauszufinden, wie Application Lifecycle Management (ALM) ihre Entwicklung und ihre Forschungszyklen beschleunigen kann, um sich Wettbewerbsvorteile zu sichern und Innovationen umzusetzen.

Der hochkarätige Anspruch des Events wird durch ein erstklassiges Angebot an Keynotes unterstrichen:

clip_image002

clip_image003

clip_image004

clip_image005

clip_image006

Ken Schwaber
Scrum Alliance

Brian Harry
Technical Fellow, Microsoft

Dave West
Forrester Research

Sam Guckenheimer
Microsoft

Tony Scott
CIO, Microsoft

Die Teilnehmerplätze sind strikt limitiert. Melden Sie sich jetzt an unter: www.alm-summit.com

Der ALM Summit ist neben dem ausgezeichneten Vortragsprogramm eine hervorragende Gelegenheit für CIOs, IT-Leiter, Senior Architekten, Entwicklungsleiter und IT-Infrastrukturverantwortliche zum Austausch und Networking mit Kollegen aus anderen führenden Unternehmen, um aktuelle Entwicklungen aus erster Hand zu diskutieren.

Tabellen in Word Dokumenten auf Vorlagenbasis erweitern - Reloaded

24.09.2010 22:07:00 | Jan Christian Selke

Schon vor einiger Zeit habe ich über das vorlagenbasierte Erweitern von Tabellen geschrieben. Vor kurzem wurde in einem Kommentar um Hilfe gebeten, den Quellcode in VB.Net umzusetzen. Meine Neugier war nahezu sofort geweckt, wie es wohl tatsächlich in VB.Net aussehen könnte.

So habe ich mich daran gemacht, den Quellcode zu portieren. Die erste Lösung war eine nahe 1:1 Umsetzung des Quellcodes. Einige Änderungen waren notwendig, wie etwa der Aufruf von TypParametern. Aus MyType<MyTypeParamter> wurde unter VB.Net beispielsweise MyType(Of MyTypeParameter).

Das Ergebnis sieht nun wie folgt aus.

Using package As WordprocessingDocument = WordprocessingDocument.Open(fileName, True)
Dim mainDocumentPart As MainDocumentPart = package.MainDocumentPart
Dim document As Document = mainDocumentPart.Document
Dim sdt As SdtBlock = document.Descendants(Of SdtBlock) _
.Where(Function(sdtBLock) sdtBLock.GetFirstChild(Of SdtProperties) _
.GetFirstChild(Of Tag).Val.Value = "Tabelle") _
.First

For i As Integer = 0 To 5

Dim lastRow As DocumentFormat.OpenXml.Wordprocessing.TableRow = sdt.Descendants(Of Table).First.Descendants(Of TableRow).Last
lastRow.InsertAfterSelf( _
New DocumentFormat.OpenXml.Wordprocessing.TableRow( _
New DocumentFormat.OpenXml.Wordprocessing.TableCell(New DocumentFormat.OpenXml.Wordprocessing.Paragraph(New DocumentFormat.OpenXml.Wordprocessing.Run(New DocumentFormat.OpenXml.Wordprocessing.Text(String.Format("Zeile {0}: Zelle 1", (i + 2)))))), _
New DocumentFormat.OpenXml.Wordprocessing.TableCell(New DocumentFormat.OpenXml.Wordprocessing.Paragraph(New DocumentFormat.OpenXml.Wordprocessing.Run(New DocumentFormat.OpenXml.Wordprocessing.Text(String.Format("Zeile {0}: Zelle 2", (i + 2)))))), _
New DocumentFormat.OpenXml.Wordprocessing.TableCell(New DocumentFormat.OpenXml.Wordprocessing.Paragraph(New DocumentFormat.OpenXml.Wordprocessing.Run(New DocumentFormat.OpenXml.Wordprocessing.Text(String.Format("Zeile {0}: Zelle 3", (i + 2))))))))
Next
End Using

Das gefiel mir syntaktisch eigentlich nicht besonders gut. Besonders die LINQ Erweiterungsmethoden mit den anonymen Methoden waren mir ein Dorn im Auge. Also habe ich noch etwas weiter gesucht und mich schließlich für eine Version mit der LINQ Abfrage Syntax entschieden. Dies lässt sich nun meines Erachtens deutlich einfacher lesen. Bedauerlicherweise war ich hierbei nur bedingt erfolgreich.


Wer hier mehr Erfahrung hat und mehr Kürze in die Abfragen bringen kann, soll sich hiermit dazu aufgerufen fühlen! ;-)


Ich hoffe, das hilft fürs erste auch weiter. Ich freue mich immer über solche Anreize, wieder etwas Neues auszuprobieren. :-)

Kostenloser Ganztages-Workshop zu ASP.NET MVC 2 – Webcamp in Bad Homburg

24.09.2010 09:53:40 | Oliver Scheer

Lernen Sie in diesem Eintages-Workshop die Programmierung beeindruckender Web-Anwendungen auf Basis von ASP.NET MVC 2.

In einem ersten Block werden die Grundlagen von ASP.NET MVC erläutert. Dabei lernen Sie den Umgang mit ASP.NET MVC und Visual Studio Web Developer 2010 Express anhand eines einfachen Beispiels.

Darüber hinaus wird auch darauf eingegangen, wie Sie mit Hilfe SQL Server Express eine Datenanbindung implementieren. Alle verwendeten Tools für diesen Workshop sind kostenlos als Download verfügbar.

Agenda

Start Time

Dauer

Inhalt

9:00

10’

Begrüßung und Agenda

9:10

50’

MVC Fundamentals

10:00

50’

Data Access und Modeling

10:50

10’

Pause

11:00

50’

Forms und Validation

11:50

10’

Q&A

12:00

60’

Mittagspause

13:00

3 h

Labs und App Building

16:00

10’

Zusammenfassung

Bitte bringen Sie folgendes mit:

· Notebook

· Notizblock

Für Verpflegung während des Tages ist natürlich gesorgt J

Wir freuen uns auf Ihre Anmeldung!

 

Jetzt anmelden: http://bit.ly/webcampASP

Schritt für Schritt zur eigenen App: Windows Phone 7 Coding Camps!

24.09.2010 09:11:28 | Oliver Scheer

Als einer der ersten Apps für Windows Phone 7 schreiben – Microsoft zeigt Studenten und Start-Ups, wie es geht!Bei den Windows Phone 7 Coding Camps zeigen Experten zwei Tage lang alles rund um das neue Phone und machen die Teilnehmer in Einführungsvorträgen fit zu den Technologien Windows Phone 7, Silverlight und XNA. Das Ziel der Veranstaltungen ist es, am Ende eine eigene App für Windows Phone 7 in den Marketplace zu laden!

Die Veranstaltung richtet sich an Studierende aller Fachrichtungen, die Lust haben, eigene Apps für Windows Phone 7 zu schreiben, sowie an Start-Ups. Die Teilnahme am Event ist kostenlos. Zusätzlich besteht für die Teilnehmer, die einen längeren Anreiseweg haben, auch eine Übernachtungsmöglichkeit.

Die Termine

  • 09.– 10.10 Unterschleißheim/München (Sa/So)
  • 14.– 15.10 Berlin (Do/Fr)
  • 23.– 24.10 Hamburg (Sa/So)
  • 30.– 31.10 Köln (Sa/So)

Weitere Informationen und Details zur Agenda finden Sie hier und hier geht’s direkt zur Anmeldung

Gedankenspiel: Softwareentwicklung als Handwerkskunst

24.09.2010 08:57:02 | Jürgen Gutsch

Ob das folgende Gedankenspiel der Software-Craftsmanship-Bewegung entspricht weis ich nicht, damit habe ich mich nicht wirklich ausführlich beschäftigt. Im Gegenteil empfinde ich die Bewegung vorerst – mit ihrem Manifesto und dem ganzen Drumherum – als etwas zu extrem.

Aber ich fand alleine schon die Idee, Softwareentwicklung als Handwerkskunst zu sehen, nicht nur interessant, sonder sehe auch parallelen zu meinem Werdegang und zur Softwareentwicklung allgemein. Man muss nicht viel nachdenken um Parallelen zu entdecken.

Ich selber…

… hatte die große Ehre, bei der Firma K&K Internet GmbH in Radolfzell-Böhringen meine Ausbildung zum Fachinformatiker für Softwareanwendungsentwicklung zu machen und das Softwarehandwerk zu erlernen. Mein Gesellenstück, ein Dokumenten Management System für das CMS add.min, war damals der Höhepunkt, auf das ich auch heute noch mit Stolz zurückblicken kann. Seit dem Ende der Ausbildung 2004 konnte ich als Geselle meine Techniken verfeinern und mein Wissen vergrößern und kann jetzt – ebenfalls mit Stolz – auf eine sechsjährige Karriere als Geselle zurückblicken.

(Klingt ein wenig hochtrabend, gell? Ist aber nun mal eine Kurzfassung meiner Sicht auf die vergangenen Jahre als Softwarehandwerker.)

Und weitere Parallelen?

Außer meiner Laufbahn als Softwarehandwerker, gibt es natürlich eine ganze Reihe weiterer Parallelen, von denen ich hier die offensichtlichen mal kurz anreiße. Zum einen tue ich das um eine Diskussionsgrundlage zu schaffen, zum anderen um einen Denkanstoß zu geben und die Dinge mal von einer anderen Seite aus zu betrachten aber eigentlich schreibe ich das nur um das mal geschrieben zu haben, bevor ich den ganzen Kram nicht mehr in Worte fassen kann oder wieder vergesse. ;-)

Parallele: Werkzeuge

Für einen Schreiner ist es enorm wichtig seine Werkzeuge zu beherrschen: Nur wenn er die Hobelmaschine bedienen kann schafft er es eine gerade Tischoberfläche hinzubekommen.

Für einen Schreiner ist es wichtig, die neuesten Werkzeuge zu nutzen: Ein Hobel ist gut, aber eine Hobelmaschine ist genauer und schneller. Feile und ein Stechbeitel können eventuell das selbe wie eine Fräse, aber um einiges langsamer und ungenauer.

Die IDE und die Programmiersprache sind die wichtigsten Werkzeuge für einen Softwareentwickler. Diese sollte er bestens beherrschen können um Hochwertige Software zu entwickeln. Im Beitrag Gemeine Kenntnislücken beschreibt Ralf Westphal wieso man auf dem neuesten Stand bleiben und im Beitrag Lesen heute für Softwareentwickler wie man dazu kommt.

Auch die weiteren Werkzeuge und Hilfsmittel sind wichtig. Auf der Keynote der See# Party beschrieb Golo Roden, das man dafür sorgen muss die besten Werkzeuge zu nutzen die man für Geld kaufen kann. Und vor allem sollte man nicht nur bekannte Werkzeuge verwenden, sondern auch mal schauen was sich woanders bewährt hat.

Parallele: Prinzipien und Praktiken

Auch der Handwerker lernt Prinzipien, die ihm gewisse Handgriffe erleichtern und auch Praktiken die ihm sagen, wie man das Werkstück bearbeiten sollte. Der Handwerker hat seine Handbuch, seine Fibel in der Vorgehensweisen und bestimmte Konstanten beschrieben sind.

In der Softwareentwicklung haben Ralf Westphal und Stefan Lieser Prinzipien und Praktiken auf der clean-code-developer.de zusammengetragen. Dieses Werk ist ein wichtiger Schritt. Es bleibt jedem selber überlassen, wie er diese Prinzipien und Praktiken anwendet. Wichtig ist nur, dass sie überhaupt beachtet und angewendet werde.
Aber das alleine reicht noch nicht. Was in der Softwareentwicklung fehlt ist ein umfassendes kleines Handbuch, dass sowohl Prinzipien und Praktiken beinhaltet, als auch allgemeine Techniken und Design Patterns. Ein Buch das in jeder Gesäßtasche eines Softwarehandwerkers stecken sollte.

Parallele: Qualitätsdenken

In der Regel gibt ein Handwerker sein Produkt erst raus, wenn es seinen Qualitätsansprüchen genügt. Bei einem Tisch ist es nicht anders möglich, es ist etwas greifbares, das der Kunde berühren kann. Mängel sind sichtbar. Anders leider bei Software. Welcher Softwareentwickler kann – ganz ehrlich - von sich behaupten eine 100% hochqualitative Software an den Kunden herausgegeben zu haben? Damit meine ich nicht nur Qualität im Code, sondern auch bei der Usability.

Aber es geht auch anders:
In der letzten Ausgabe des .NET-Magazins habe ich ausführlich ein Buch vorgestellt, dass ich auch schon hier im Blog erwähnt habe: Why Software Sucks… ist ein Buch von David S. Platt das dem Softwareentwickler und dem Softwareanwender eine andere andere Sichtweise nahe bringt und auf diese Art Mängel in der Software sichtbar macht. Keiner sagt einem auf eine so ehrlich brutale Art was man die letzten Jahre falsch gemacht hat.
Zumindest offensichtliche Mängel können so schnell gefunden und beseitigt werden.

Parallele: Stolz

Die letzte Parallelität ist die Eigenschaft, auf die in der Softwareentwicklung – aus meiner Sicht – am wenigsten Wert gelegt wird. Die fast am unwichtigsten scheint. Aber die größten Probleme bereiten könnte. Was passiert mit einem, wenn man ständig ein Produkt rausgeben muss, auf das man nicht Stolz sein kann? Man verliert den Spaß an der Arbeit und den Spaß daran sich weiter zu entwickeln.

Ich weiß aus meinen kurzen Erfahrungen in der (richtigen) Handwerksarbeit (Schreiner, Gärtner und Kunststoffschlosser) das es ein unglaublich tolles Gefühl ist, seine hochwertige, fertige Arbeit in den Händen des zufriedenen Kunden zu sehen. Andersherum habe ich als Softwareentwickler zur Genüge die Erfahrung gemacht, aus Zeitdruck und Druck von oben, eine schnell zusammengebastelte Anwendung an einen zufriedenen Kunden herauszugeben und zu wissen, dass die Zufriedenheit nicht von langer Dauer ist. Der Job als Gärtner macht so – ehrlich gesagt – mehr Spaß.

Aber auch der Softwareentwickler sollte Stolz auf seine Arbeit sein können. Das geht natürlich nur, wenn die ersten drei parallelen Eigenschaften auch umgesetzt werden. Erst wenn die Werkzeuge stimmen, bestimmte Werte eingehalten werden und ein Qualitätsbewusstsein existiert, kann man eine Software bauen auf die man Stolz sein kann.

Fazit

Frage: Ist es wichtig, dass sich Softwareentwickler als Handwerker sehen?
Antwort: Nein, ich denke nicht!

Es wäre eventuell hilfreich, um auf die richtigen Werkzeuge und den Umgang damit zu beachten. Es wäre Hilfreich, um Prinzipien und Praktiken ernst zu nehmen. Es wäre eventuell Hilfreich, um ein Qualitätsdenken zu entwickeln, um dann mit Stolz auf seine Arbeit schauen zu können.

Aber letzten Endes ist es völlig egal, ob man sich als Handwerker, Architekt oder Pfarrer sieht. (Nur als Fließbandarbeiter sollte man sich nicht sehen *g*) Wichtig ist, dass man bestimmt Werte entwickelt und diese Konsequent umsetzt. Wichtig ist, dass man am Ende des Tages auf seine Arbeit stolz sein kann, dass mal alles dafür getan hat um eine höchstmögliche Qualität zu erreichen.

DotNetKicks-DE Image

Schritt für Schritt zur eigenen App: Windows Phone 7 Coding Camps!

23.09.2010 17:02:12 | Jan Schenk

Als einer der ersten Apps für Windows Phone 7 schreiben – Microsoft zeigt Studenten und Start-Ups, wie es geht!

Bei den Windows Phone 7 Coding Camps zeigen Experten zwei Tage lang alles rund um das neue Phone und machen die Teilnehmer in Einführungsvorträgen fit zu den Technologien Windows Phone 7, Silverlight und XNA.

Das Ziel der Veranstaltungen ist es, am Ende eine eigene App für Windows Phone 7 in den Marketplace zu laden!

Die Veranstaltung richtet sich an Studierende aller Fachrichtungen, die Lust haben, eigene Apps für Windows Phone 7 zu schreiben, sowie an Start-Ups.

Die Teilnahme am Event ist kostenlos. Zusätzlich besteht für die Teilnehmer, die einen längeren Anreiseweg haben, auch eine Übernachtungsmöglichkeit.

Die Termine

  • 09.– 10.10 Unterschleißheim/München (Sa/So)
  • 14.– 15.10 Berlin (Do/Fr)
  • 23.– 24.10 Hamburg (Sa/So)
  • 30.– 31.10 Köln (Sa/So)

Weitere Informationen und Details zur Agenda finden Sie hier.

Zur Anmeldung https://www.event-team.com/events/CodingCamp/Default.aspx

.NET Open Space 2010 Leipzig

22.09.2010 13:05:00 | Martin Hey

Vom 16. Oktober bis zum 17. Oktober 2010 wird erneut der .NET Open Space in Leipzig stattfinden. Bereits im letzten Jahr war diese Veranstaltung sehr erfolgreich und zählte mehr als 150 Teilnehmer. Seit gestern ist die Anmeldung möglich und auch für dieses Jahr haben sich bereits in kürzester Zeit über 130 Teilnehmer angemeldet.

Ein Open Space hat als wesentlichstes Merkmal, dass es keine feste Agenda gibt. Die Inhalte der einzelnen Sessions ergeben sich weitestgehend spontan und durch die Teilnehmer getriggert - einzig als Rahmen ist der große Themengebiet Entwicklung mit .NET vorgegeben. Ebensowenig gibt es eine Rollenaufteilung in Sprecher und Zuhörer. Unabhängig von der Ausbildung, dem bisherigen Lebenslauf oder der aktuellen Position soll eine offene Diskussion gefördert werden. Die Teilnehmer gestalten ihr Programm somit vollkommen selbst. Und so ist ein Erfahrungsaustausch verschiedensten Bereichen vorprogrammiert.

Die Teilnahme am .NET Open Space ist kostenlos. Mehr Informationen und die Anmeldung sind unter http://netopenspace.de/2010 zu finden.
Zeit: 16.10.2010, 8 Uhr bis 17.10.2010, 19 Uhr
Ort: Commundo Tagungshotel Leipzig, Zschochersche Straße 69, 04229 Leipzig

Auch ich werde mit dabei sein und freue mich auf spannende Diskussionen.

decoded–conference for code and design

21.09.2010 18:19:34 | Oliver Scheer

Die decoded conference steht für eine Verbindung von Design und Code. Sie verknüpft gestalterische und technologische Aspekte des digitalen Lebens und führt diese in einem Event zusammen.Sprecher aus den Bereichen generative Gestaltung, Informationsvisualisierung, Gaming, interaktive Installationen bis hin zu Physical Computing lüften für euch den Vorhang und geben tiefe Einblicke in ihre Arbeiten und deren Entstehungsgeschichten.

banner_468x60

Link: http://www.decoded-conference.com/

Dort werde ich hingehen, mal nicht als Sprecher, sondern als Gast. Ich freu mich.

hallo

21.09.2010 13:03:20 | Martin

Test

21.09.2010 12:38:00 | Martin

Das ist ein “

„hallo“ <> über ß

 

<test>
	hallo
</test>

Winter

 

 

<code>
	<html>
		<a>bla</a>
	</html>
</code>

 

 

Videospiel Kettenanhänger aus Bügelperlen

21.09.2010 00:45:00 | Daniel Springwald

Supermario wird dieses Jahr 25! Grund genug, mit einer passenden Kette durch die Stadt zu ziehen ;o)

Mit Bügelperlen geht das ganz einfach:

1. Einfach Original-Sprites aus dem Internet herunterladen, am Besten in maximal 16x16 Pixeln

2. Die Sprites farbig ausdrucken mit der Auflösung "2 Pixeln pro Zentimeter". Dieser Ausdruck sollte dann exakt die Auflösung des Bügelperlen-Steckbretts haben - das macht das Stecken der Perlen relativ leicht.

3. Richtig komfortabel wird es, wenn man die Audrucke noch passend perforiert. Entweder mit einem Locheisen oder (wie hier) mit einem Lasercutter. Dann kann man die Motive direkt auf der Steckbrett legen und muss nur noch die Bügelperlen passend aufstecken:

4. Wenn alle Perlen positioniert sind müssen sie nur noch gebügelt werden - und schon ist der SuperMario-Anhänger fertig!

Team Foundation Server 2010 Backups direkt in der MMC

20.09.2010 13:00:21 | Christian Binder

Die neuen TFS Power Tools enthalten einige Neuerungen im Team Explorer aber vor allem ist ein Add-On für die TFS MMC hinzugekommen, welches eine zentrale Verwaltung der Backups für die Infrastruktur ermöglicht.

Für alle TFS 2010 Administratoren sollte dieses Add-On das Leben erheblich vereinfachen  :-)

Chris

28.09.10 Treffen der DNUG Braunschweig – WCF & WF 4.0

20.09.2010 11:22:00 | Lars Keller

Die DNUG Braunschweig trifft sich am 28.09.2010 um 19:00 im Restaurant Zucker (Tagungsraum). Uns kommt der Microsoft MVP Damir Dobric mit einem Vortag über ´WCF & WF 4.0 besuchen.

Der Talk richtet sich insbesondere an alle Software Architekten und Entwickler, die auf Basis der .NET Technologien komplexe Enterprise Applikationen für die Windows Plattform entwickeln.
Hier die Themen:
o Simplified Configuration
o File-Less Activation
o Multiple Site Bindings
o Standard Endpoints
o Service Discovery
o Routing Service
o Workflow Services
o AppFabric
o REST Improvements
Geplant sind ca. 120 Minuten vollgepackt mit vielen Demos.
Damir Dobric ist Lead-Architekt des Microsoft Gold-Partners DAENET GmbH aus Frankfurt a.M. Er ist MVP, Technology Advisor der Microsoft Connected Technology Advisory Group und Mitglied von Visual Studio Team System Quality Board. Er freut sich über Ihr Feedback in seinem Blog.
    * Blog
    * http://www.daenet.de

Wie immer ist dieses Event kostenlos und jeder .NET Interessierte ist herzlich willkommen!

Weitere Informationen zur DNUG Braunschweig findest du hier.

Public Viewing der PDC Keynote in Köln

20.09.2010 00:55:00 | Stefan Lange

Ende Oktober findet die diesjährige Microsoft Professional Developers Conference (PDC) in Redmond statt. Die Keynote wird live im Internet übertragen.

Zu diesem Anlass veranstalten wir als Gemeinschaftsaktion der .NET User Groups Köln, Bonn und Niederrhein am 28.10. um 18:00h ein Public Viewing bei Microsoft in Köln.

Wer also im Großraum Köln ansässig ist und Spaß hätte daran teilzunehmen, sollte sich sofort anmelden. Es gibt erstaunlich viele von Microsoft gesponserte Preise zu gewinnen und die Veranstaltung wird wahrscheinlich zeitnah ausgebucht sein.

Alle weiteren Informationen auf unserer Site PDCologne live. Viel Spaß!

Erste Gehversuche mit MVVM Light

20.09.2010 00:44:00 | Jan Christian Selke

Vor Kurzem habe ich mich dazu entschlossen, erste Schritte mit dem MVVM Light von Laurent Bugnion in der WPF Entwicklung zu versuchen. Eines muss man diesem Framework lassen, es ist wirklich einfach und schnell damit produktiv zu werden.

Kurzerhand habe ich die aktuelle Version 3 als ZIP Paket herunter geladen und entpackt. Der Anfang ist altbekannt: Neues WPF Projekt im Visual Studio angelegt, die WPF4 Assemblies in mein Prototypen Projekt eingebunden - los gings.

Meine erste Versuche beschäftigten sich mit dem Commanding. Innerhalb meines Prototypen fügte ich vorerst mal nur einen TreeView ein. Bei Doppelklick auf einzelne Elemente sollte ein kleines Fenster für Detailinformationen geöffnet werden. Da der TreeView eine solche Funktionalität nun mal nicht out-of-the-box liefert, habe ich mir das Command Binding des MVVM Light zunutze gemacht. Was soll ich sagen – es war klasse.

Als erstes habe ich den Commanding Namespace eingebunden.

using GalaSoft.MvvmLight.Command;


Dann in meinem ViewModel eine Eigenschaft vom Typ RelayCommand hinzugefügt, der im Konstruktor die Funktionalität zugewiesen wurde.


public DokumentViewModel(Dokument dokument)
{
_dokument = dokument;
ShowDokument = new RelayCommand(() => Messenger.Default.Send(new ShowDokument(Id)));
}

public RelayCommand ShowDokument { get; private set; }

Innerhalb des Xaml Codes habe ich dann das Command mit Hilfe eines Triggers an den TreeView gebunden: fertig! …Und es lief auf Anhieb.


<TreeView ItemsSource="{Binding Mappe}">
<TreeView.Resources>

<DataTemplate DataType="{x:Type ViewModel:DokumentViewModel}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Id}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<cmd:EventToCommand Command="{Binding ShowDokument"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBlock>
</StackPanel>
</DataTemplate>
</TreeView.Resources>
</TreeView>

Wenn das nicht einfach ist. ;-) Zu diesem Zeitpunkt kannte meine Begeisterung keine Grenzen mehr. Wenn das so leicht weiter geht, dachte ich mir, ist das schon so gut wie fertig. :-)


Wie schon in der Command Zuweisung oben zu erkennen ist, habe ich mir direkt dabei bereits den Messenger angesehen und genutzt, der mit dem MVVM Light kommt. Dazu flugs den Namespace Messaging eingebunden.


using GalaSoft.MvvmLight.Messaging;

Auch hier war mein erster Eindruck hervorragend. Die gesendete Nachricht, aus dem obigen Codebeispiel, wird von einem registrierten Listener verarbeitet.


public class DokumentListener
{
public DokumentListener()
{
Messenger.Default.Register<ShowDokument>(typeof(ShowDokument), x => Handle(x));
}

public void Handle(ShowDokument message)
{
...
}
}

Grundsätzlich gefällt mir dieser Messenger zum Einstieg auch noch immer, ein bisschen Bauschmerzen habe ich aber bekommen.


Was mir nicht gefällt, ist die Tatsache, dass die Listener Klasse den Messenger kennt. Dies ist eine Abhängigkeit, auf die ich gerne verzichten würde. Außerdem muss jede behandelbare Nachricht einzeln in der Klasse registriert werden, was bei zentralen Klassen mehr Aufwand bedeuten kann. Was mir ebenfalls nicht besonders gut gefällt, ist die Tatsache, dass Klassen, die Nachrichten behandeln können, nicht sofort durch ein Muster/Namensgebung erkennbar sind.


Da ohnehin mit DI Frameworks gearbeitet wird, halte ich eine eigene Interceptor Implementierung mit festen Konventionen in Kombination mit einem eigenen Messenger für die Registrierung von Listenern an einem Messenger für die bessere Variante.


Ich werde nach dem jüngsten Stand die Funktionalität zum Binden von Commands des MVVM nutzen. Den Messenger werde ich mir aber voraussichtlich maßschneidern und meinen Vorstellungen entsprechend anpassen. Vielleicht werde ich darüber ein anderes mal schreiben…

Internet Explorer 9 Beta ist draußen – Try it!

19.09.2010 04:14:00 | Lars Keller

Eine Beta-Version des Internet Explorers wurde letzte Woche veröffentlicht. Grund genug, diese einmal zu testen. Gesagt getan und ich muss ehrlich zugeben, dass ich über den Speed des IE 9 begeistert bin.

Beeindruckend ist auch die Performance und Kompatibilität zu HTML 5 (s. youtube).

Einziger Nachteil, es fehlen einfach noch ein paar AddOns, welche mir bei der Benutzung des Firefox an Herz gewachsen sind. Ich hoffe, dass sich hier noch einiges tut, dann bin ich gern wieder begeisterter IE-User. :-)

Download: IE 9 Beta

Einladung zum Treffen der .NET Usergroup Dresden am 29.09.2010

17.09.2010 11:47:00 | Martin Hey

Das nächste Treffen der .NET Usergroup Dresden findet am 29.09.2010 bei der T-Systems MMS statt. Beginn ist wie immer 18:00 Uhr.
Peter Fleischer wird eine kurze Einführung zum Thema MVVM-Pattern (Model-View-ViewModel) geben. Dies gibt uns auch die Gelegenheit, in eine Diskussion über Best Practices, Erfahrungen und Meinungen zu diesem Pattern einzusteigen. Detailliert geht es um:
  • Probleme bei der Erstellung einer Anwendung mit Bedienoberfläche
  • Entwurfsmuster
  • Elemente des MVVM
  • Grundprinzipien (Bindung von Eigenschaften, Commands, Ereignisse)
  • MVVM in WPF
  • MVVM in Silverlight
  • MVVM in Winforms
Um eine grobe Teilnehmerzahl zwecks Raumplanung zu haben, bitten wir euch, im Xing-Event einzutragen, ob ihr dabei sein wollt. Nach dem Treffen ist jeder gern eingeladen, zum Stammtisch zu mitzukommen und in geselliger Runde über .NET oder jedes andere Thema zu plauschen.

Kostenloser Download: Die Windows Phone Developer Tools sind fertig! RTW

16.09.2010 19:39:31 | Kay Giza

Die finale Version der Windows Phone Developer Tools sind erschienen und stehen allen Interessierten zum kostenlosen Download bereit. Also: jetzt loslegen oder Gas geben und die Chance nutzen, die eigene Kreation den allerersten Windows Phone 7-Kunden anbieten zu können, die in wenigen Wochen die ersten Geräte in den Händen halten werden und die Regale des Marketplace nach interessanten Dingen durchforsten... [... Download-Links und weitere Hinweise in diesem Blogeintrag auf Giza-Blog.de]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:  MSDN Aktuell
© Copyright 2006-2010 Kay Giza. All rights reserved. Legal
Subscribe

Wurli Wurm Revival

16.09.2010 14:00:00 | Daniel Springwald

Hier mal ausnahmsweise ein Blogeintrag ohne etwas selbstgebasteltes:

In den 1970ern gab es für einige Zeit den "Wurli-Wurm" oder auch "Fips den Wurm" - ein scheinbar lebender Flauschwurm in Neonfarben, der sich über Gegenstände und Hände schlängelt.

In den letzten 30 Jahren habe ich diese Würmer dann eigentlich nicht mehr gesehen. In den letzten 2 Wochen jedoch bin ich diversen Spielwarengeschäften auf insgesamt auf Varianten von bisher 5 verschiedenen Herstellern gestoßen.

Teilweise leider so billig produziert, dass das "geheime" Hilfsmittel, welches den Wurm belebt so offensichtlich ist, dass der ganze Effekt dahin ist. Daher beim Kauf besser auf die Qualität achten. Meinem Eindruck nach ist "Magic Twist" von "fun promotion" die beste Umsetzung und nennt sich selbst auch "the original".

Also: Wer selbst jünger als 30 ist und Wurli noch nicht kennt oder solches Publikum hat: Wurli Wurm hat zumindest damals eine Menge Spaß gemacht.

Wenn Ihr gute Quellen für Tricks und Tipps zum Wurli habt, schreibt doch vielleicht einen Kommentar?

TechTalk im Oktober: Windows Phone 7 - Das portable Tor zur Welt

15.09.2010 16:05:51 | Oliver Scheer

Mit insgesamt fünf Veranstaltungen geht der MSDN TechTalk im Oktober wieder auf Deutschland-Tour. Bei der kostenlosen Roadshow informiert MSDN-Berater Tom Wendel diesmal über Windows Phone 7 und die vielfältigen Möglichkeiten, die sich auf Basis der neuen Anwendungsplattform aus .NET, Silverlight und XNA damit für Entwickler bieten. Für alle, die den Juni TechTalk verpasst haben, ist dies eine gute Gelegenheit, Windows Phone einmal in Live-Demos ganz aus der Nähe zu erleben und dabei vor allem die aktuellste Version der Developer Tools ausführlich kennenzulernen. Gleich anmelden!

http://www.microsoft.com/germany/msdn/techtalk/WindowsPhone7_DasPortableTorZurWelt.mspx

MSDN Homepage, neuer Look, neuer Service fuer Entwickler: Windows, Web, Cloud und Azure, Windows Phone 7

13.09.2010 20:49:34 | Kay Giza

Seit 19.00 Uhr am heutigen Montag, 13.09.2010, hat die Homepage von MSDN, dem Microsoft Developer Network, ein verändertes, neues und frisches Aussehehen sowie neue Funktionalitäten. Neben Ihren Wünschen und Hinweisen, auf Grund von Studien und Umfragen, haben wir eine Simplifizierung der angebotenen Inhalte vollzogen auf MSDN. Wir haben kleine, permanente Themeninseln, als Startpunkte in den Vordergrund auf unserer MSDN Homepage gesetzt. Dabei haben wir uns besonders darauf konzentriert, die MSDN Homepage zu vereinfachen und mit den vier Themenschwerpunkten jedermann den Start in die Software-Entwicklung oder die Know-how-Vertiefung in einem speziellen, vielleicht noch unbekannten Bereich, zu ermöglichen. Natürlich finden Sie weiterhin auf der Startseite bei uns... [... lesen Sie den vollständigen Blogeintrag auf Giza-Blog.de]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:  MSDN Aktuell
© Copyright 2006-2010 Kay Giza. All rights reserved. Legal
Subscribe

Neu bei Microsoft Deutschland: Kostenlose TechNet Hotline

13.09.2010 17:23:55 | Kay Giza

Es freut mich sehr, heute mitteilen zu können: Die MSDN Hotline, unsere seit über drei Jahren erfolgreich laufende Telefon-Guidance durchs MSDN-Universum für Entwickler, findet nun ihr Pendant in der TechNet Hotline für IT Professionals. Seit heute bieten wir Administratoren und IT-Professionals den gleichen Service wie für die Entwickler – nur eben für das TechNet-Portal. Die Mitarbeiter der TechNet-Hotline, erfahrene Infrastruktur-Supportmitarbeiter helfen gerne, die richtigen Downloads, Tools oder technischen Ressourcen online zu finden. Die Hotline bedient die Nische zwischen klassischem technischen Support und Online Guidance und beantwortet die Anfragen per Telefon und E-Mail mit dem Hinweis auf fall-relevante technische Ressourcen zu den Server-, Client- und Verwaltungsprodukten von Microsoft. Wir bieten die Hotline zunächst für einen begrenzten Zeitraum an, um dieses neue Angebot in der Praxis zu testen. Die Idee hinter... [... lesen Sie den vollständigen Blogeintrag auf Giza-Blog.de]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:  MSDN Aktuell
© Copyright 2006-2010 Kay Giza. All rights reserved. Legal
Subscribe

Das war die See# Party 2010

13.09.2010 13:59:00 | Jürgen Gutsch

Zwei Wochen ist es her, dass die erste See# Party stattgefunden hat. Uns Veranstalter freute am meisten, dass das Feedback von euch, als auch von den Speakern durchweg positiv war.

Die Sessions waren super, alle Teilnehmer hatten auch ausreichend Zeit miteinander zu reden und das Essen war ausreichend und gut..

Ein spezielles Highlight war, dass wirklich jeder Teilnehmer, der an der Verlosung teilgenommen hat, auch tatsächlich mit einem Gewinn nach Hause gehen konnte.

Insgesamt war es eine gelungene Veranstaltung und wir fühlen uns durch euer Feedback angespornt, eine See# Party 2011 zu veranstalten.

Wir als grenzübergreifende .NET Usergroup haben natürlich auch für den Süden Deutschlands, die Schweiz und das westliche Österreich mit Konstanz-Kreuzlingen den idealen Standort für eine solche Veranstaltung.

Allerdings ist es für uns als Veranstalter noch nicht vorbei:

Wir hatten nicht wenige Sponsoren, die uns mit Software, Material und Büchern großartig unterstützt haben. Ebenso wurden wir von großen .NET-Magazinen als Medienpartner unterstützt. Dafür sind wir natürlich sehr dankbar.
Aber wir hatten nur fünf Sponsoren, die uns auch finanziell unterstützt haben.
Außerdem wurden viel mehr Teilnehmer erwartet, als dann tatsächlich kamen.

Diese beiden Punkte führten leider dazu, dass wir als Veranstalter einiges aus der eigenen Tasche drauflegen müssen.

Aus mehreren Gründen haben wir die Veranstaltung trotz fehlenden Sponsoring-Geldern und weniger Registrierungszahlen wie geplant durchgeführt. Wir haben schon während der Vorbereitungen am Feedback gemerkt, dass eine Veranstaltung wie diese hier in der Region gewünscht ist. Wir hatten auch noch mit einigen spontanen Teilnehmern gerechnet und bis zum Schluss noch auf spontane Sponsoring-Gelder gehofft.

Da noch einige größere ausstehende Zahlungen zu leisten sind, würden wir uns freuen, wenn sich noch die eine oder andere finanzielle Unterstützung finden würde.
Wer noch einen kleinen Beitrag dazu geben kann und möchte kann sich an info@dotnetkk.de wenden um weitere Informationen zu erhalten.

Vielen Dank an alle die an der ersten See# Party dabei waren und vielleicht dürfen wir euch wieder auf der See# Party 2011 begrüßen.

Viele Grüße
Markus, Stefan, Tilo und Jürgen
Die Organisatoren der See# Party

PS:
Unterstützung ist auch per PayPal möglich:
Jetzt einfach, schnell und sicher online bezahlen – mit PayPal.

DotNetKicks-DE Image

Public Viewing beim .NET-Stammtisch Konstanz-Kreuzlingen

13.09.2010 13:29:04 | Jürgen Gutsch

Die Professional Developers Conference (PDC) ist die Konferenz, auf der Microsoft gewöhnlich die neuesten Pläne und Veröffentlichungen für Entwickler bekannt gibt. Sie findet dieses Jahr am 28. und 29. Oktober in Redmond statt und ist schon seit geraumer Zeit ausverkauft.

Aber am Donnerstag, 28. 10. 2010 ab 18:00 Uhr unserer Zeit wird die Keynote (u.a. mit Steve Ballmer) live übers Internet übertragen.

Viele Interessierte User Groups – darunter auch der .NET-Stammtisch Konstanz-Kreuzlingen – zeigen nun öffentlich die Live-Übertragung bei einem Treffen zum gemeinsam ansehen.

Also ein Public Viewing wie beim Fußball :-)

 

Mit der Unterstützung von Microsoft verlosen wir auf dem Public Viewing unter allen Zuschauern:

  • 1x Visual Studio 2010 Professional NFR (Not for Resale, kein Weiterverkauf)
  • 1x Windows 7 Ultimate NFR
  • 1x Competition Pro C64 USB-Joystick inkl. umfangreicher Spielesammlung für Nostalgiker

Aber damit keiner leer ausgeht, gibt es für jeden Teilnehmer ein USB Lanyard mit Content passend zur PDC.

Interessiert?

Dann seit Ihr eingeladen am Donnerstag, 28. 10. 2010 ab ca. 17:30 Uhr debei zu sein und am Public Viewing teilzunehmen (der genaue Ort wird noch bekannt gegeben). Nach der Übertragung bleiben – wir wie immer – nach Stammtischmanier beim gemütlichen Bierchen sitzen und unterhalten uns weiter über die Keynote, die PDC, Softwareentwicklung und den ganzen Rest :-)

DotNetKicks-DE Image

Code Formatting Test

13.09.2010 11:46:26 | Martin

Code Snippet:
   1: <test x="test1">
   2:     <a>hallo, dies ist ein test. hallo, dies ist ein test. hallo, dies ist ein test. hallo, dies ist ein test. </a>
   3:     <b />
   4: </test>

Code <> (nicht bearbeitbar):

   1:  <test x="test1">
   2:  <a>hallo, dies ist ein test. hallo, dies ist ein test. hallo, dies ist ein test. hallo, dies ist ein test. </a>
   3:  </test>
.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

Code:

<test x="test1">
<a>hallo, dies ist ein test. hallo, dies ist ein test. hallo, dies ist ein test. hallo, dies ist ein test. </a>
</test>

Parbir Syntax Highlighter:

<test x="test1">
	<a>hallo, dies ist ein test. hallo, dies ist ein test. hallo, dies ist ein test. hallo, dies ist ein test.</a>
	<b />
</test>

Microsoft Web Platform Installer (Web PI): Mehr als 100 Programme, Tools, Datenbanken, Frameworks, Funktionen und Services kostenlos downloaden und mit einem Klick installieren!

13.09.2010 09:05:04 | Kay Giza

Microsoft Web PI ist ein 1 MB großer kostenloser Download, der es Ihnen ermöglicht, mit einer 1-Klick-Experience die populärsten und beliebtesten Web-Anwendungen im Handumdrehen zu installieren! Kostenlos! Auf der ICE 2010 in Lingen habe ich mich u.a. mit Stephan Walcher darüber unterhalten, wieso er nicht einen eigenen Windows (Web-) Server betreibt, da seine Anforderungen an seine Internetpräsenz doch recht hoch sind und er somit individueller agieren könnte, als auf einem Shared-Web-Hosting. Nun, ohne die ganze Diskussion hier wiederzugeben gibt es einen vielfachen Grund: Man möchte das erst mal alles ausprobieren und testen. Den Windows Server kennenlernen, individuell auf Anforderungen prüfen. Weiterhin gibt es vielleicht noch eine Hürde: Man kennt sich nicht 100%ig aus, man ist sich unsicher wie man einen IIS installiert, Frameworks, HTTP-Module? Was muss ich bei der Einrichtung beachten, um die Sicherheit meines Webservers optimal zu gewährleisten. Hierbei ist mir die Idee gekommen, diesen Blogartikel zu schreiben. Er soll einen Überblick geben über den Microsoft Web Platform Installer, seine enthaltenen Komponenten und wie einfach es ist, die Microsoft Web Plattform einmal auszuprobieren... [... mehr in diesem ausführlichen Blogartikel auf Giza-Blog.de]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:  MSDN Aktuell
© Copyright 2006-2010 Kay Giza. All rights reserved. Legal
Subscribe

Slides & Demos zur NRW Conf 2010

12.09.2010 11:37:00 | Lars Keller

Als Agententrainer war ich bei der NRW Conf 2010 dabei und habe mein "Spezialwissen" über VSTO an die anwesenden Agenten weitergegeben!

Wer nun denkt, was ist Phase? Agenten? – Der sei beruhigt, dass diesjährige Motto der NRW Conf war “Mission: IT-Community & Wissensaustausch”.

Ich hatte eine Session zum Thema "Office 2010 & VSTO 4 – Neues aus der Office Entwicklung“.

Hier sind meine Slides & Demos meiner Session:

VSTO4_nrwconf2010.pdf (352,54 kb)

nrwconf_demos.zip (61,24 kb)

 

Ich bin einem Teilnehmer noch eine Antwort schuldig geblieben, die möchte ich nun nachholen:

Frage: Kann man ein Kontextmenü in Outlook 2010 per Ribbon.xml verstecken und ein eigenes Kontextmenü dafür anzeigen? So ähnlich wie man ein Ribbion von “start the scratch” starten kann?

Antwort: Nein, per XML geht dies nicht. Wie vermutet geht dies aber per Code. Einfach das Event abfangen und ein eigenes Kontextmenü einblenden. Wie das geht, kann man hier nachlesen. Im Ribbion.xml kann man nur das Kontextmenu verstecken/disabled.

Weiterhin war ich auch als Vertreter der INETA Deutschland vor Ort und habe mich besonders gefreut, ein paar neue UG Leads kennenzulernen und einige Fragen & Tipps geben zu können.

Es hat mir sehr viel Spaß gemacht auf der NRW Conf dabei zu sein. Es war eine sehr gelungene Community Veranstaltung. Vielen Dank an den Vorstand des JustCommunity e.V. (Stephan Oetzel, Daniel Fisher, Kostja Klein) für die Orga der NRW Conf 2010!

Ich freue mich schon auf das nächste Jahr - 09.09.2011 – Ich bin dabei!

NRW Conf 2010 NRW Conf 2010 - Begrüßung

Weitere Impressionen findet Ihr auch bei Robert Meyer.

SQL Server Backup, Zip und FTP(s) Up-/Download mit EasySQLBackupFtp

12.09.2010 10:14:00 | Lars Keller

Ich stand vor dem Problem ein regelmäßiges Backup bei einer SQL Server Express Edition durchzuführen (der SQL Express hat keinen Job Agent, darum kann dies nur über ein Batch machen). Des Weiteren sollte das Backup gezippt und Passwort verschlüsselt werden. Danach soll das Zip per FTP oder FTPs versendet und im Fehlerfall sollte mir eine E-Mail mit dem Logfile geschickt werden. In meinem Fall muss ich das Backup auch per Download an einen weiteren Ort kopieren, diese Funktionalität habe ich auch in das Tool integriert. Somit kann mit dem Konsolentool ein automatisierter Download sowie Backups (mit FTP(s) Versand) per Taskplaner festgelegt werden.

Powershell Erfahrung

Zuerst habe ich es mit der Powershell probiert. Die Powershell ist wirklich ein mächtiges Werkzeug! Ein SQL Server ein Backup zu entlocken, ist sehr einfach mit der Powershell. Das Zippen fand ich dann schon komplizierter… Nach einer Weile bin ich dann übergegangen mir ein eigenes Tool in C# zu schreiben (da bin ich eindeutig schneller ;-). Gesagt getan und ich möchte allen, die vor dem ähnlichen Problem stellen ein automatisiertes SQL Server Backup zu erstellen, mein Tool zur Verfügung stellen.

EasySQLBackupFtp(s)

EasySQLBackupFtp

Das Tool kann über verschiedene Parameter, welche in der App.Config angepasst werden, gesteuert werden. Es bietet in der ersten Version die Modi: Backup, BackupAndFtp und Download an (Weitere Informationen dazu s.u.). Weiterhin bietet das Tool die Möglichkeit über FTP oder FTPS das gezippte Backup zu verschicken. Das Tool loggt im Hintergrund alle relevanten Aktionen mit und im Fehlerfall wird eine E-Mail mit dem LogFile verschickt. Des Weiteren kann das Zip an einen anderen Ort kopiert werden und dies Abhängig von der Uhrzeit. Diese Funktion habe ich eingebaut, da ich ein Backup x1 am Tag per Download abhole, aber es gibt mehrere Backups am Tag.

Verschiedene Modi

Backup: Es wird ein SQL Backup erstellt und dies gezippt

BackupAndFtp: Es wird wie im Modus Backup ein Zip erstellt und dies automatisch per FTP(s) an einen Server transferiert

Download: Dieser Modus ermöglicht das herunterladen von Zips per Ftp(s).

Einstellungen in der App.Config:

SQLServer = SQL Server von dem das Backup gezogen werden soll
Database = Datenbankname
BackupPath = Pfad in dem das Backup erstellt wird
ZipFilePath = Pfad für die Erstellung des Zips
FTPServer = IP des FTP Server
FTPPath = FTP-Pfad für den Upload des Zips
FTPUsername = FTP Login
FTPPassword = FTP Password
MailServer = Mailserver IP
MailFrom = E-Mail von der der Fehlerbericht versendet wird
Mailto = E-Mail wohin die Fehlermeldung geschickt wird
FTPDownloadPath = FTP Pfad von dem ein Zip runtergeladen werden soll
FTPDownloadFileName = Angabe des Download Filename, es werden auch Wildcards unterstützt (z.B. *.zip)
DeleteAfterFTPDownload = Soll nachdem Download das File auf dem FTP gelöscht werden (true/false)
FTPDownloadLocalDir = Lokaler Downloadpfad.
DeleteFilesAfterXDays = Angabe nach wie vielen Tagen sollen Files auf dem FTP Sever gelöscht werden. Dies wird geprüft, wenn Files per FTP an einen Server übertragen werden.
FileNameToZip = Name des Zips
CopyZipToDir = Pfad für die lokalen Speicherung auf dem Server, z.B. um das Zip per FTP erreichbar zu machen, somit muss der eigentlich Speicherort nicht unbedingt vom Internet erreichbar sein.
DoNotCopyBeforeTime = Ab wann soll das Zip woanders hinkopiert werden (Angabe in Form von 13:00:00). Dies dient dazu, wenn man mehrfach ein Backup erstellt, aber nur bestimmte Version per FTP erreichbar machen möchte.
UseFTPForUpload = Soll FTP und nicht FTPs für den Upload genutzt werden? (true/false)
UseFTPForDownload = Soll FTP und nicht FTPs für Download genutzt werden? (true/false)
ZipPassword = Hier kann ein Passwort für das Zip eingestellt werden

Herunterladen könnt Ihr es hier:

EasySQLBackupFtp.zip (292,84 kb)

EasySQLBackupFtp_src.zip (295,41 kb)

Ordnungsneurotiker oder Messi?

10.09.2010 16:47:00 | Klaus Bock

Wie soll ich dass denn beurteilen, oder wer gibt sich schon gerne selbst eine schlechte Note?
Gordon Breuer verlangte in seinem zuletzt veröffentlichten Artikel Ordnungsneurotiker oder Messi: Zeigt her eure Layouts! nach weiteren Impressionen seiner Kollegen aus der Community. Nun, damit kann ich dienen.

Visual Studio Workplace

In Ermangelung eines zweiten Monitor, muss ich das beste aus meinem Notebook-Display machen. Also gehöre ich wohl eher zur Kategorie:
Alles auf einem Monitor komprimiert mit am Rand verschwindenden Reitern”.

Permanent geöffnet habe ich eigentlich immer den Solution-Explorer, die Eigenschaften sowie die Erweiterung VS10x Code Map. Der Server-Explorer und die Toolbox verschwinden am Rand. Da ich nur sehr wenig mit UIs zu tun habe, können sie da auch gerne bleiben.
Den Server-Explorer habe ich, soweit ich mich erinnern kann, schon sehr lange nicht mehr benötigt. Wenn ich auf den SQL-Server zugreifen muss, dann verwende ich dazu meist das SQL Server Management Studio Express.

Ich hoffe ich habe mit diesem Artikel Gordons Neugier gestillt und der Blick über meine Schulter war ausreichend.

Technorati-Tags: |

TeamSpeak Sidebar Gadget New Server IP's

09.09.2010 20:35:00 | Andreas Mehl

Server Migration! New Server (IP: 82.165.138.193, 82.165.133.44, 93.186.201.146) .

Screenshots can be found here: Screenshots

New Video can be found here: Video

Documentation can be found here: Documentation

Have fun Laughing

Download Sidebar Gadget Teamspeak 3.6

 

back to basics: Generische XML-Serialisierung

09.09.2010 12:36:00 | Martin Hey

Im heutigen btb-Post soll es um das Thema XML-Serialisierung gehen. Häufig sieht man im Alltag oder in Foren die Frage, wie ein Objekt in einen String serialisiert werden kann - z.B. um diese Daten dann in einem Datenspeicher abzulegen.

Im Grunde ist der Vorgang recht einfach: Man erzeugt einen XMLSerializer des zu (de-)serialisierenden Objekts und ruft dessen Serialize- bzw. Deserialize-Methode auf. Wenn man sich noch nie mit der Problemstellung beschäftigt hat, stellt sich dann aber die Frage, welche Parameter man der Methode übergibt, da hier String als Parametertyp nicht existiert. Verwendet man diese Methode häufiger, so ist es zudem noch nervig, am Ende der Deserialisierung den Cast zum Ziel-Typ zu machen.

Um die Sache zu vereinfachen kann man sich mit Hilfe von Generics recht einfach zwei Methoden schreiben, die diesen Task übernehmen.
static string SerializeObject<T>(T objectToSerialize)
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (StringWriter writer = new StringWriter())
{
serializer.Serialize(writer, objectToSerialize);
return writer.ToString();
}
}

static T DeserializeObject<T>(string serializedData)
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (StringReader reader = new StringReader(serializedData))
{
return (T)serializer.Deserialize(reader);
}
}

Der Aufruf ist dann recht einfach:
Employee employee1 = new Employee { Name = "André Meyer" };
string serializedEmployee = SerializeObject(employee1);
Employee employee2 = DeserializeObject<Employee>(serializedEmployee);

Einen kleinen interessanten Nebeneffekt hat diese Art noch, wenn es auch nicht die beste Art ist, dieses Ziel zu erreichen: Durch die Serialisierung und Deserialisierung ist eine 1:1-Kopie des ursprünglichen Objekts entstanden.

Google scribe ausprobiert - (noch) nicht überzeugend

08.09.2010 15:07:00 | Michael Schwarz

Habt ihr schon mal Google scribe aus den Google Labs ausprobiert? Na ja, der erste Satz ging schon gleich in die Hose:

Google scribe labs

Bin mal gespannt, was andere so noch finden, wird bestimmt wieder lustig.

Test 2

08.09.2010 14:14:00 | Martin

Anhand von zwei Projekt-Beispielen wird die Anwendung von nicht ganz alltäglichen Transparenz-Effekten vorgestellt.

1. Transparentes Video

Die Vorgabe der Grafikerin klang eigentlich ganz einfach: Das zu bewerbende Produkt sollte aus sich bewegendem Nebel herausragen und dabei aber noch teilweise mehr oder weniger vom Nebel verdeckt werden. Da Nebel an sich ja durchsichtig ist, sollte dies eigentlich kein Problem sein.

Der Nebel lag in Form eines HD Videos von real gefilmtem Nebel vor, das Bild vom Produkt war ein freigestelltes PNG. Nun ist aber ein Video von Nebel etwas anderes als realer Nebel. Natürlich kann man der Property Opacity des Media-Elements, welches den Nebel abspielt, einen Wert kleiner eins geben. Damit erhält man zwar ein durchsichtiges Video, aber nicht den gewünschten Effekt. So einfach geht es leider nicht.

Das folgende Bild zeigt einen Screenshot der fertigen Seite. Durch Anklicken kommt man auf die echte Seite.

Die Lösung besteht darin, das Produktbild vor das Video zu legen und es mit Hilfe einer OpacityMask nach unten hin immer durchsichtiger werden zu lassen. Hier ein Auszug des dazugehörigen XAML-Codes:

<MediaElement x:Name="fog1" Source="http://localhost/newblonde/assets/NewBlondeFog.wmv" AutoPlay="True" Stretch="UniformToFill"/>
<SSME:SmoothStreamingMediaElement x:Name="fog2" SmoothStreamingSource="http://localhost/newblonde/assets/NewBlondeFog.ism/Manifest" AutoPlay="True" Stretch="UniformToFill"/>
...
<Image x:Name="imgPackShot" Height="501" Width="356" Canvas.Left="321" Canvas.Top="94" Source="Assets/packshot.png" Stretch="Fill" RenderTransformOrigin="0.5,0.5">
  <Image.OpacityMask>
    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
      <GradientStop Color="White" Offset="0"/>
      <GradientStop Color="#7FFFFFFF" Offset="0.33"/>
      <GradientStop Color="Transparent" Offset="1"/>
    </LinearGradientBrush>
  </Image.OpacityMask>
</Image>

Die ersten beiden Elemente sind zwei verschiedene Videoplayer. Der erste ist der Standardplayer für WMV-Dateien, während der zweite aus dem Smooth Streaming SDK stammt. Durch Silverlight Smooth Streaming kann wahlweise eine höhere Qualität des Nebel-Videos erreicht werden. Welcher der beiden Player verwendet wird, kann per Konfiguration festgelegt werden.

Das dritte Element ist das Foto des Produktes. Die OpacityMask sorgt dafür, das im unteren Bereich des Bildes mehr und mehr vom dahinterliegenden Nebel zu sehen ist. Beim Betrachter entsteht so die Illusion, das Produkt schwebe mitten im Nebel. Durch eine leichte, mittels PowerEase gedämpfte Bewegung des Bildes wird dieser Effekt noch unterstrichen. Es ist schon erstaunlich: Obwohl ich es gemacht habe, kann ich nicht "sehen", dass sich der Nebel in Wirklichkeit hinter dem Bild befindet.

Der Nebel

Das Nebel-Video ist übrigens wie folgt gemacht: Das von der Agentur gelieferte ca. 25 Sekunden lange HD Video habe ich mit Sony Vegas so bearbeitet, dass die letzten 5 Sekunden mit dem Anfang per Kreuzblende überlagert wurden. Damit sehen der letzte Frame und der Frame aus Sekunde 5 des Originalvideos identisch aus. Das so entstandene neue und um 5 Sekunden kürzere Video kann nun in einer Endlosschleife abgespielt werden und der Sprung an den Anfang ist dabei fast nicht zu bemerken.

 

2. Transparente Silverlight Anwendung

Hier bestand die Aufgabe darin, ein mit Silverlight animiertes Firmenlogo auf einer normalen HTML-Seite anzuzeigen. Eine Silverlight-Anwendung von beispielsweise 150 x 150 Pixeln Größe zu erstellen, in der ein Logo animiert wird, ist trivial. Das Problem bestand darin, durch die Anwendung hindurch das Hintergrundbild der darunterliegenden HTML-Seite sehen zu können.

Die einfachste Lösung ist, die Silveright-Anwendung auf windowless zu schalten. Dies sollte jedoch gerade nicht gemacht werden, da dieser Modus möglicherweise nicht bei allen Browsern einwandfrei funktioniert.

Eine alternative Lösung besteht darin, dass die Silverlight-Anwendung das gleiche Hintergrundbild wie die HTML-Seite lädt und dann exakt den Ausschnitt davon anzeigt, den sie selbst gerade verdeckt. Die folgende Test-Anwendung zeigt, wie man das im Prinzip machen kann:

nochmal neu:

Das Bild mit dem Baum soll den Hintergrund einer HTML-Seite darstellen. Die eigentliche Silverlight-Anwendung ist zur Verdeutlichung mit gelben Punkten umrandet. Durch Anklicken kann die Umrandung ab und auch wieder angeschaltet werden.

Als Logo Beispiel dient hier ein Dodekaeder, dessen Seiten mit einem teiltransparenten ImageBrush gefüllt sind. 5 Sekunden nach dem Laden der Seite beginnt der Dodekaeder sich zu drehen. Nach weiteren 15 Sekunden fängt die Silverlight-Anwendung an, sich zusätzlich noch auf dem Hintergrund herumzubewegen.

Es entsteht dabei die Illusion, die Silverlight-Anwendung sei transparent, obwohl sie in Wirklichkeit nur geschickt ihren Hintergrund zeichnet.

Das div Element, welches das Silverlight object Element enthält, liegt wiederum in einem div mit dem background Bild:

<div style="height:375px; width:600px; background:url(http://.../background.jpg)">
  <div id="silverlightControlHost" style="height:150px; width:150px; left:90px; top:50px;
      position:relative">
    <object data="data:application/x-silverlight-2," type="application/x-silverlight-2"
       width="150" height="150">

Dieses div mit dem Namen "silverlightControlHost" sorgt dafür, dass sich die Anwendung 90 Pixel vom linken und 50 Pixel vom oberen Rand entfernt befindet. Hier nun der XAML-Code der eigentlichen Anwendung:

<UserControl x:Class="PseudoTransparentBackground.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:PseudoTransparentBackground" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d" 
    Height="150" Width="150">
  <Grid x:Name="LayoutRoot" Cursor="Hand">
    <Grid.Background>
      <ImageBrush ImageSource="http://.../background.jpg"
          Stretch="None" AlignmentX="Left" AlignmentY="Top">
        <ImageBrush.Transform>
          <CompositeTransform x:Name="Offset" TranslateX="-90" TranslateY="-50"  />
        </ImageBrush.Transform>
      </ImageBrush>
    </Grid.Background>
    <local:DodecahedronLogo RenderTransformOrigin="0.5 0.5" >
      <local:DodecahedronLogo.RenderTransform>
        <ScaleTransform ScaleX="0.25" ScaleY="0.25"/>
      </local:DodecahedronLogo.RenderTransform>
    </local:DodecahedronLogo>
    <Rectangle x:Name="ControlBorder" Stroke="Yellow" StrokeThickness="4" StrokeDashArray="0 2"
        StrokeDashCap="Round" StrokeDashOffset="0.5" />
  </Grid>
</UserControl>

Das selbe Hintergrundbild wie aus der HTML-Seite wird über eine ImageBrush als Background verwendet. Dabei wird das Bild über eine CompositeTransform entsprechend so verschoben, dass es den gleichen Ausschnitt zeigt wie die Stelle, die die Anwendung momentan verdeckt.

Damit habe ich erreicht, eine nicht-windowless Silverlight-Anwendung mit einem scheinbar transparenten Hintergrund zu erstellen.

Noch mehr Bewegung

Nur so zum Ausprobieren habe ich dann auch noch die Position der Silverlight-Anwendung animiert. Dazu wurde eine neue Klasse AppPosition mit zwei Dependency Properties Left und Top angelegt. Mittels zweier DoubleAnimation Objekte werden Left und Top animiert und so die Anwendung immer wieder auf neue Zufallspositionen innerhalb der Grenzen des Hintergrundbildes bewegt.

Damit nun die Silverlight-Anwendung ihre eigene Position im Browserfenster verändern kann, verwendet sie die Funktion SetStyleAttribute der Klasse HtmlElement. Hier der Code, der aufgerufen wird, wenn sich beispielsweise der Wert der Property Left ändert:

private static void LeftChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
  int x = Convert.ToInt32((double)e.NewValue);
  MainPage.Offset.TranslateX = -x;
  SilverlightControlHost.SetStyleAttribute("left", String.Format("{0}px", x));
}

Zum einen wird die Property TranslateX aus dem ImageBrush angepasst, zum anderen das Attribut left des Styles des SilverlightControlHost div Elements. Analoges gilt für die Property Top. Diesen Effekt hätte man vielleicht auch mit JavaScript erreichen können, aber mit Silverlight fiel mir das Programmieren deutlich leichter.

Im Internet Explorer 8 funktioniert diese Bewegung übrigens ganz gut, während der Hintergrund im Firefox 3.6 und in Chrome 4.1 relativ stark zittert. Im aktuellen Internet Explorer 9 Platform Preview sieht es am geschmeidigsten aus.

Für alle, die es sich genauer anschauen wollen, hier der Quellcode zum Downloaden:

PseudoTransparentBackground.zip (235 kB)

(Hinweis: Vor dem Build muss möglicherweise die Datei Petzold.Media3D.dll über Eigenschaften/Sicherheit zur Verwendung zugelassen werden.)

Einstieg in Visual Basic 2010 - Komplexe Datenstrukturen - einfach erklaert

08.09.2010 07:22:37 | Kay Giza

Mein Tipp für diese Woche bei den Webcasts: 262.7 MB geballtes Wissen stellt MSDN Online jetzt in Form eines - wie immer kostenfrei erhältlichen - Webcasts zur Verfügung. Thema ist: "Einstieg in Visual Basic 2010 - Komplexe Datenstrukturen – einfach erklärt" Der Webcast ist ideal für Einsteiger, die Visual Basic 2010 anschaulich und praxisorientiert erlernen wollen. Im Webcast geht Trainer Dimitrios Chrissostomou unter anderem auf Arrays und Strukturen ein und führt Ihnen nützliche Klassen von Visual Basic wie »Collection« oder »Dictionary« direkt im Einsatz vor! Weitere Themen sind... [... mehr in diesem Blogeintrag auf Giza-Blog.de]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:  MSDN Aktuell
© Copyright 2006-2010 Kay Giza. All rights reserved. Legal
Subscribe

Windows Azure – Anwendungen professionell in der Cloud betreiben

07.09.2010 12:19:40 | Peter Kirchner

Windows Azure ist das neue Cloud-Computing-Angebot von Microsoft mit dem Unternehmen Webseiten bzw. Web-Portale, Web-Anwendungen und Web-Dienste sowie Speicherplatz sehr einfach, hoch verfügbar und skalierbar in Microsoft-Rechenzentren bereitstellen können. Windows Azure entlastet Sie dabei von jeglichen Administrationsarbeiten.

Die Cloud ist näher als Sie denken. Typische Web-Anwendungen sind in wenigen Minuten in der Cloud, probieren Sie es selbst aus und nutzen Sie eines unserer Angebote für den Einstieg:

Sobald Sie Anwendungen mit Azure entwickelt haben, können Sie diese als Produkte auf Microsoft Platform Ready eintragen, damit Sie mit Ihrer Lösung bei uns kompatible Anwendung gelistet sind. Dies ist schon einmal ein Kriterium für Ihren Einstieg ins Microsoft Partner Network, womit viele Vorteile für Sie verbunden sind wie Lizenzen, Support-Möglichkeiten, lukrative Bundeling-Möglichkeiten oder verschiedene Angebote, um Ihr Marketing und Vertrieb zu unterstützen.

TechTalk im Oktober: Windows Phone 7 - Das portable Tor zur Welt

06.09.2010 22:05:00 | Jan Schenk

Mit insgesamt fünf Veranstaltungen geht der MSDN TechTalk im Oktober wieder auf Deutschland-Tour. Bei der kostenlosen Roadshow informiert MSDN-Berater Tom Wendel diesmal über Windows Phone 7 und die vielfältigen Möglichkeiten, die sich auf Basis der neuen Anwendungsplattform aus .NET, Silverlight und XNA damit für Entwickler bieten. Für alle, die den Juni TechTalk verpasst haben, ist dies eine gute Gelegenheit, Windows Phone einmal in Live-Demos ganz aus der Nähe zu erleben und dabei vor allem die aktuellste Version der Developer Tools ausführlich kennenzulernen. Gleich anmelden!

http://www.microsoft.com/germany/msdn/techtalk/WindowsPhone7_DasPortableTorZurWelt.mspx

Nicht verpassen und viele Grüße,

jan

Wer lesen kann...

05.09.2010 18:12:00 | Martin Hey

Wer lesen kann ist klar im Vorteil. Hinter diesem Spruch steckt immer wieder etwas Wahrheit. Das hat sich auch heute mal wieder gezeigt.
Für das Prüfen vom Verhalten von Websites in den verschiedenen Versionen von Internet Explorer bietet Microsoft Virtual PC Images an. So weit so gut. Ein Problem ergibt sich dann, wenn der Kennwortschutz greift und der Rechner geperrt ist, denn dann muss man das Kennwort des Benutzers IETest kennen. Und wenn man Microsoft kennt, dann ist es meist irgend eine Mutation des Wortes "password" - aber auch da gibt es noch mehrere Möglichkeiten.
Manchmal ist es einfacher als gedacht denn die Lösung findet sich in der mit ausgelieferten readme.txt - aber wer liest schon die readme.txt. Daher hier der Tipp für alle Nicht-ReadMe-Leser. Das Kennwort der aktuell gültigen Images ist: P2ssw0rd

Silverlight Tipp der Woche: .restext statt .resx Dateien für Text–Ressourcen

04.09.2010 10:48:00 | Stefan Lange

In diesem Tipp geht es um die Verwaltung von String Ressourcen in .restext Dateien, welche beispielsweise bei der Lokalisierung Vorteile gegenüber üblichen .resx Dateien haben.

Zusammenfassung

Beim Verwalten von Texten als Ressourcen beispielsweise für die Lokalisierung werden üblicherweise .resx Dateien verwendet. Für Texte sind Dateien im .restext Format jedoch oft besser geeignet.

Beschreibung

Der Standardweg zum Verwalten von Ressourcen in .NET sind die XML-basierten .resx Dateien. Mit ihnen können Daten aller Art als sog. Embedded Resources in Assemblies eingebettet werden. In .NET gibt es aber schon von Anfang an ein Format, mit dem man Text-Ressourcen sehr viel leichter erfassen und verwalten kann. Dabei handelt es sich um einfache Text-Dateien mit folgendem Aufbau:

; Kommentare beginnen mit ; oder #
; Texte werden als Name/Wertepaare aufgeschrieben

Bezeichner1 = Das ist ein Text.
Bezeichner2 = Das ist ein anderer Text.

Das ist schon alles, was man zum Aufbau dieser Dateien wissen muss. Bis einschließlich Visual Studio 2005 hatten diese Dateien einfach die Endung .txt und mussten mit dem SDK Tool resgen mehr oder weniger manuell in .resources Dateien konvertiert werden. Im Gegensatz dazu wurden .resx Dateien immer schon automatisch in .resources Dateien umgewandelt. Die .resources Dateien enthalten die Ressourcen in dem internen Format, wie sie in Assemblies eingebettet werden.

Seit Visual Studio 2008 kann man die Endung .restext anstatt .txt verwenden. Wenn man dann noch die Build Action auf Embedded Resource stellt, wird automatisch mit resgen eine entsprechende .resources Datei erzeugt und eingebettet.

Der Zugriff auf die Texte erfolgt wie bei .resx Dateien über die Klasse System.Resources.ResourceManager. Verschiedene Sprachen werden über den Dateinamen unterschieden. Beispielsweise enthält die Datei MyTextStrings .restext die neutrale bzw. default Sprache. Die Dateien MyTextStrings.de.restext und MyTextStrings.fr.restext enthalten die deutschen bzw. französischen Übersetzungen, die Datei MyTextStrings.de-CH.restext die schweizerischen Texte, die von denen aus MyTextStrings.de.restext abweichen usw. Der ResourceManager sucht abhängig von den UI-Einstellungen im laufenden Programm automatisch den richtigen Text heraus.

Der große Vorteil der .restext Dateien liegt in ihrem einfachen Format. Im Gegensatz zu dem für einfache Texte viel zu unübersichtlichen XML-Format der .resx Dateien kann man .restext Dateien ohne Weiteres einem Übersetzer geben. Dieser sieht sofort, was für ihn zu tun ist, wenn er die Datei in einem schlichten Texteditor öffnet. Als Einziges muss beachtet werden, dass die Datei im UTF-8 Format gespeichert werden muss, da resgen Unicode erwartet.

Hier geht's zum nächsten Tipp.

Mal ausnahmsweise kein Standard

03.09.2010 12:44:00 | Martin Hey

Mal ausnahmsweise kein Standard - so oder so ähnlich lässt sich beschreiben, was ich erreichen möchte. Ich möchte ein WPF-Fenster haben mit folgenden Eigenschaften:
  1. es soll eine fixe Innengröße haben - unabhängig von den Einstellungen für Rahmengrößen im Windows
  2. es soll einen 3D-Rahmen haben, der im Aero-Stil ist, wenn das Betriebssystem die Voraussetzungen dazu bietet
  3. es soll kein Menü und auch keine Systemschaltflächen haben
Das hört sich eigentlich gar nicht so schwer an, besonders wenn man sieht, dass die Standardeinstellungen für Fenster schon ziemlich nah am Ziel sind. Ein Fenster mit WindowStyle=None und ResizeMode=NoResize erfüllt die erste und die dritte Anforderung; ein Fenster mit WindowStyle=None und ResizeMode=CanResize erfüllt die zweite und dritte Anforderung. So könnte auch alle anderen Kombinationen durchgehen - alle sind nah dran, aber keine erfüllt alles.
Mein Ansatz ist nun, ausgehend von WindowStyle=None und ResizeMode=NoResize das Fenster so zu verändern, dass es eine Border bekommt. Dazu verwende ich die Funktion SetWindowLong aus der user32.dll und eine geschickte Kombination aus mehreren Window-Stlyes.
static void SetBorder(Window target)
{
const int GWL_STYLE = -16;
const int GWL_EXSTYLE = -20;

var newStyles = NativeMethods.WindowStyleFlags.WS_VISIBLE | NativeMethods.WindowStyleFlags.WS_BORDER | NativeMethods.WindowStyleFlags.WS_THICKFRAME;
var newExStyles = NativeMethods.ExtendedWindowStyleFlags.WS_EX_TOOLWINDOW | NativeMethods.ExtendedWindowStyleFlags.WS_EX_APPWINDOW;
var interopHelper = new WindowInteropHelper(target);

NativeMethods.SetWindowLong(interopHelper.Handle, GWL_STYLE, (int)newStyles);
NativeMethods.SetWindowLong(interopHelper.Handle, GWL_EXSTYLE, (int)newExStyles);
}

WS_BORDER und WS_THICKFRAME lassen um mein Fenster einen 3D-Rahmen erscheinen, WS_VISIBLE sorgt dafür, dass das Fenster nach dem Deaktivieren auch wieder aktiviert werden kann. Zusätzlich definiere ich noch den erweiterten Style WS_EX_TOOLWINDOW, der dafür sorgt, dass das Fenster nicht mehr auf das Snapping in Windows 7 reagiert. Ohne diese Einstellung kann mit Hilfe der Tastenkombination [Windows] + [Pfeil links] bzw. [Windows] + [Pfeil rechts] doch noch die Größe verändert werden. Diese Einstellung hat jedoch auch einen Nebeneffekt. Tool-Windows können nicht mehr mit [Alt] + [Tab] erreicht werden. Um das zu beheben setze ich zusätzlich den Style WS_EX_APPWINDOW.
Durch die Änderungen an der Border kann das Fenster nun aber mit Hilfe der Maus in der Größe verändert werden. Um das zu verhindern setze ich einen Hook auf das Fenster, der die Window-Message abfängt, die prüft, ob der Mauszeiger sich ändern soll, um die Resize-Pfeile anzuzeigen.
static void DisableResizing(Window target)
{
var interopHelper = new WindowInteropHelper(target);
var hwndSource = HwndSource.FromHwnd(interopHelper.Handle);
hwndSource.AddHook(WndProcResizeHook);
}

static IntPtr WndProcResizeHook(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
if (msg == (int)NativeMethods.MouseInputNotifications.WM_NCHITTEST)
{
handled = true;
return (IntPtr)1;
}

return (IntPtr)0;
}

Durch das Hinzufügen der Border hat sich auch noch geändert, dass die Innengröße sich um die Rahmenbreite verkleinert hat. Da die Border manuell hinzugefügt wurde, kann die neue Größe recht einfach ermittelt werden, in dem die Werte aus SystemParameters.ResizeFrameHorizontalBorderHeight und SystemParameters.ResizeFrameVerticalBorderWidth ermittelt und zur Fenstergröße hinzuaddiert werden.
static Size GetWindowSizeByClientSize(Size size)
{
Thickness borderThickness = new Thickness(0, 0, 0, 0);

borderThickness.Top = borderThickness.Bottom = SystemParameters.ResizeFrameHorizontalBorderHeight;
borderThickness.Right = borderThickness.Left = SystemParameters.ResizeFrameVerticalBorderWidth;

double width = size.Width + borderThickness.Left + borderThickness.Right;
double height = size.Height + borderThickness.Top + borderThickness.Bottom;

return new Size(width, height);
}

Das Ergebnis sieht so aus wie es soll:

Ein fixes Fenster mit Aero-Rahmen, das kein Aero-Snap vollführt, per [Alt]+ [Tab] erreichbar ist, das kein Menü hat und dessen Innengröße definierbar ist.
Ich hoffe, dass es sich auch so verhält wie es soll, denn die Eingriffe per PInvoke sorgen dafür, dass das Fenster eine andere Kombination von Flags hat als es vom Betriebssystem vorgesehen ist. Bisher macht diese Lösung aber einen guten Eindruck.

MSDN Hilfe und Support: Herzlichen Glueckwunsch zum 3. Geburtstag der kostenlosen MSDN Hotline

02.09.2010 17:45:29 | Kay Giza

Die MSDN Hotline feiert Geburtstag: Seit genau drei Jahren sorgt die kostenlose Telefon-Auskunft inzwischen dafür, dass rund um MSDN und andere Microsoft-Entwicklerthemen keine Frage offen bleibt. Hinter dem Service-Angebot steht das Team des Microsoft Education Support Center (ESC) in Karlsruhe. Die Fachleute dort helfen Entwicklern nicht nur im direkten Telefongespräch oder per Messenger weiter – Montag bis Freitag jeweils von 12 bis 18 Uhr – sondern regelmäßig auch in den MSDN-Foren und im Rahmen spezieller Webcasts.

Herzlichen Glückwunsch :-)

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:  MSDN Aktuell
© Copyright 2006-2010 Kay Giza. All rights reserved. Legal
Subscribe

Fuer Entwickler: Hilfe und Support: kostenlos, aber nicht umsonst!

01.09.2010 16:23:12 | Kay Giza

Wussten Sie: 99,5% der MSDN Online-Angebote gibt’s zum Nulltarif! Wer’s nicht glaubt, findet im MSDN-Forum eine hilfreiche Übersicht all der kostenfreien Services, die das Microsoft Developer Network (MSDN) im Web für die Entwickler-Community bereithält. Dass die zahlreichen Infos & Ressourcen zwar komplett kostenlos abrufbar, aber beileibe nicht umsonst sind, zeigt schon ein oberflächlicher Blick auf das Material: tonnenweise Fachartikel, Video-Tutorials, Webcasts, News, dazu Downloads, Vor-Ort-Events, FAQs und vieles mehr.

Welch vielfältige Unterstützung MSDN Entwicklern bietet, wollen wir in den kommenden Tagen hier bei MSDN Aktuell (RSS-Feed) immer wieder mal in den Fokus stellen – in einer kleinen Inforeihe mit dem Titel „MSDN Hilfe & Support“.

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:  MSDN Aktuell
© Copyright 2006-2010 Kay Giza. All rights reserved. Legal
Subscribe

Du kommst hier nicht rein!

01.09.2010 00:39:43 | Andre Kraemer

Nutzer des IE 6 sehen sie im Internet immer häufiger: mehr oder weniger diskrete Hinweise, dass der genutzte Browser veraltet wäre und man doch bitte die aktuelle Version einspielen, oder aber einen alternativen Browser einsetzen solle.

Gegen solche Hinweise habe ich nichts einzuwenden. Schließlich ist der IE 6 nun wirklich kein aktueller Browser mehr und aufgrund seiner vielen bekannten Fehler bei der Darstellung von standardkonformen (X)HTML / CSS ist es für den Webdesigner nur unter großem Aufwand möglich, einen Internetauftritt so zu gestallten, dass er sowohl in standardkonformen Browsern und im IE 6 vernünftig aussieht. Außerdem sollte man auch die zum Teil recht eigenwillige Implementierung des DOMs und von JavaScript nicht vergessen, die den IE 6 auch für JavaScript Entwickler schnell zum Alptraum werden lassen.

Türsteher

Heute kam mir jedoch eine sehr restriktive Variante des bekannten “Rette deine Seele und nutze einen moderneren Browser” Hinweises unter: Und zwar wollte ich kurz einen Eintrag auf Jan Welkers Blog lesen, der meine Aufmerksamkeit erregt hatte. (Anmerkung: Ich schätze Jan wirklich sehr! Dieser Beitrag soll sich nicht persönlich gegen ihn richten!) Nach dem Öffnen des Beitrags im Browser bekam ich jedoch nicht die gewünschte Information zugesicht, sondern wurde automatisch auf eine Seite weitergeleitet, die mir freundlich erklärte, dass man meinen Browser nicht möge und ich doch bitte mit einem neueren oder anderen Browser wieder kommen soll. Ab diesem Augenblick war ich also ausgesperrt. Ausgesperrt, weil der Rechner an dem ich saß (es war nicht mein Rechner) von der dortigen IT Abteilung nur den IE 6 installiert bekommen hatte.

Nun wusste ich also endlich, wie sich meine Freunde vor 15 Jahren gefühlt haben müssen, als der Türsteher vor der Disco sagte “Du kommst hier nicht rein! Deine Klamotten gefallen mir nicht!”. Tja, damals lachte ich noch über die Jungs, die die Kleidung noch morgens von ihrer Mutter herausgelegt bekamen und mit diesem Outfit dann halt nicht in die Disco kamen. Heute war ich es jedoch, der im wahrsten Sinne des Wortes dumm aus der Wäsche guckte.

Gegenwind

Etwas missmutig über das gerade geschehene wechselte ich auf Twitter – wo ich im Übrigen nur einen Hinweis “your browser is outdated” erhielt – und fragte Jan, oder die Idee mit dem Aussperren wirklich für so gut hält.

Leider bekam ich bis jetzt noch keine Antwort Jan, dafür aber von anderen bekannten Gesicherten der Community, die zu meiner Verwunderung Jans Strategie vollstens unterstützten und zum Teil sogar das gleiche taten.

Grob zusammengefasst lauteten die Argumente:

  • Wenn mehr große Webseiten genauso agieren würden, wäre der IE 6 endlich weg
  • Der Aufwand für ein IE 6 konformes Layout ist im Vergleich zum Nutzen viel zu groß

Beide Argumente kann ich sehr gut nachvollziehen – und um eines ganz klar zu stellen: Ich bin kein Fan des IE 6. Auch mich hat er, wie wahrscheinlich die meisten Webentwickler bereits viel Zeit, Nerven und Haare (nein, Haare nicht: die waren schon vor dem IE 6 weg ;-) gekostet.

Wie denn sonst?

Trotzdem halte ich wenig vom aktiven Aussperren von interessierten Nutzern (m)einer Website. Für weitaus besser und vor allem anwenderfreundlicher halte ich es in den meisten Fällen, im Falle des IE 6 einen Hinweis einzublenden, dass der genutzte Browser nicht aktuell ist, was dazu führen könnte, dass sowohl Darstellungs-, als auch Funktionsfehler auftreten.

Über diesen Weg habe ich niemanden den Zugriff auf die von mir bereitgestellten Informationen verwehrt und Nutzer veralteter Browser trotzdem über mögliche Fehler auf der Seite, welche durch ihn verschuldet sind, informiert.

Wenn ich nämlich kurz überlege, warum jemand noch den IE 6 einsetzen könnte, dann fallen mir folgende Gründe ein:

  1. Geringe Computerkenntnisse:
    Der IE 6 war vorinstalliert und der Anwender ist sich entweder nicht bewusst, dass er updaten sollte, oder aber traut sich dies nicht zu.
  2. Falsche Informationen:
    Ein befreundeter “Computerspezialist” hat dem (laienhaften) Anwender erzählt, dass der IE 6 der schnellste Browser sei, weil er schon so alt ist und deshalb auf moderner Hardware besonders schnell läuft.
  3. Faulheit:
    Der Anwender weiss zwar, dass der IE 6 fehlerhaft ist, hat ihn aber aus dem selben Grund noch installiert, aus dem er auch keine regelmäßigen Backups macht und keinen bzw. keinen aktuellen Virenscanner hat.
  4. Gewohnheit:
    Der Anwender nutzt den IE 6 bereits seit Jahren, kommt gut mit ihm zurecht und will deshalb gar nicht updaten.
  5. Abhängigkeiten von alten, aber wichtigen Intranet Anwendungen:
    Der Anwender würde gerne updaten, kann es aber nicht, weil seine geschäftskritische Intranetanwendung nur vernünftig unter dem IE 6 läuft (ja, das soll es auch geben ;-)).
  6. Die IT-Abteilung:
    Der Anwender würde gerne upgraden, hat gar keine Rechte dies zu tun. Die IT-Abteilung hingegen weigert sich gegen das Update, weil sie dann vielleicht eine Liste unzähliger Intranetanwendungen auf Kompatibilität testen und den neueren IE direkt auf unmengen von Clients ausrollen müsste.

Wenn ich nun auf diese Liste Blicke frage ich mich, welche Kategorie ich wirklich von meinem Internetangebot ausschließen möchte. Drei und Vier wären vielleicht geeignete Kandidaten, der ganze Rest jedoch eigentlich nicht. Und selbst bei drei und vier frage ich mich, ob man hier nicht doch die Freiheit gewähren sollte mit einem Browser der Wahl zu arbeiten.

Wenn das Ergebnis dann anschließend nicht vernünftig aussieht: Selber schuld!

Mein Appell

Mein Aufruf an die Betreiber von Webangeboten lautet daher: Schließt keine interessierten Anwender aus! Informiert lieber dezent, dass der Browser und somit das Ergebnis nicht optimal ist, aber lasst IE 6 User nicht draußen warten!

Denn wenn wir tief in uns gehen und uns ehrlich fragen, ob durch das Aussperren des IE 6

  • die Welt besser wird?
  • das Web besser wird?
  • Der IE 6 schneller aussterben wird

dann müssen wir, oder zumindest ich diese Fragen wohl mit nein beantworten. Dies ist übrigens die gleiche Antwort, die man wahrscheinlich auf die Frage:

  • Wird der User den ich eben wegen seines Browsers ausgesperrt habe jemals wieder kommen?

In diesem Sinne: http://saveie6.com/ ;-)

Natürlich lasse ich mich aber auch gerne vom Gegenteil überzeugen. Sprich: Eure Meinung zu diesem Thema interessiert mich sehr.

Regeln | Impressum