Das Gesetz von Paul Fitts (1954)

“The most important factor in the human interface model is of course the human.”

Ich weiß leider nicht von wem dieses Zitat ist, oder ob es überhaupt ein echtes Zitat ist. Auch eine eindringliche investigativ-journalistische Suche lieferte mir dazu leider keine neue Erkenntnis. Wenn jemand es herausfindet würde ich mich über einen Kommentar freuen.

Aber zum Thema: Fitts’s Law. Dieses interessante Gesetz macht Aussagen darüber wie lange ein Benutzer eines GUIs benötigt um mit dem Eingabegerät (in der Regel einer Maus) ein Ziel (in der Regel ein Icon oder Menü – allgemein Steuerelement) zu “treffen”. Wen die mathematischen Grundlagen interessieren, dem sei der entsprechende Wikipedia-Artikel ans Herz gelegt. Hier nur die wichtigsten Aussagen:

    • Steuerelemente sollten eine angemessene Größe besitzen. Sind sie zu klein kann man sie nur schwer treffen (Okay, irgendwie trivial)
    • Grenzen der Bewegungsfreiheit (die Bildschirmränder und Ecken) eigenen sich um Steuerelemente anzubringen, da das Zeigegerät mit relativ geringem feinmotorischen Aufwand dorthin bewegt werden kann (Start-Menü von Windows, Apple-Menü in Mac OS X)
    • Kontextmenüs können schneller verwendet werden als klassische (fixe) Menüleisten
    • Pie-Menüs sind noch besser als Kontextmenüs, da alle Menüpunkte vom Zeiger äquidistant sind.

Nun, gerade mit dem letzten Punkt kann ich persönlich mich nicht wirklich anfreunden. Ich fand Pie-Menüs bislang immer recht umständlich. Aber von der Theorie her macht es natürlich Sinn und vermutlich wird sich eine derartige Steuerung mit dem Aufkommen von Touch-Oberflächen auch immer mehr durchsetzten.

Achja, wie ich darauf komme? Golem.de schreibt über das Programm Edgeless, welches die Bildschirmbegrenzung entfernt (so, dass der Mauszeiger “umlaufen” kann). Vielen Dank an Benutzer Rupfzupf für den Hinweis in den Kommentaren.

Dynamisches Hinzufügen von Markern im Code-Behind

Und wieder einmal eine wichtige Erkenntnis gewonnen. Wenn man bei dem MediaElement-Steuerelement von Silverlight 2.0 die Markers-Collection dynamisch mit Inhalten befüllen möchte muss man natürlich warten bis das entsprechende Media-File geladen ist. Also: die Logik zum einfügen von Markers frühsten nach dem MediaOpend-Event ausführen!

Also zum Beispiel so:

public partial class Page : UserControl
    {
        public Page()
        {
            InitializeComponent();
        }

        private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
            this.mePlayer.MediaOpened += 
                   new RoutedEventHandler(mePlayer_MediaOpened);
            this.mePlayer.MarkerReached += 
                   new TimelineMarkerRoutedEventHandler(mePlayer_MarkerReached);
        }

        void mePlayer_MediaOpened(object sender, RoutedEventArgs e)
        {
            MockUpCommentSource Mock = new MockUpCommentSource();
            foreach (VideoComment vc in Mock.VideoComments)
            {
                this.mePlayer.Markers.Add(
                  new TimelineMarker() { 
                         Time = vc.Position, Text = "Test", Type = String.Empty 
                         });
            }
        }

        void mePlayer_MarkerReached(object sender, TimelineMarkerRoutedEventArgs e)
        {
            this.tblOut.Text += Environment.NewLine + e.Marker.Text;
        }
     }

Naja, da hätte ich auch früher drauf kommen können.

ASP konferenz – SharePoint Development Special

Am 22. und 23. Juni 2009 findet in dem beschaulichen Städtchen Burghausen (in Ostbayern nahe der Grenze zu Österreich) die ASP konfezenz mit Themenschwerpunk SharePoint Entwicklung statt. Natürlich bin auch ich mit von der Partie. Wie an dem nebenstehenden animierten GIF unschwer zu erkennen ist bin ich Sprecher und werde über die neuen WSS Tools für Visual Studio (Version 1.3 – CTP bislang) sowie Webparts auf Basis von Web User Controls referieren.

Es werden eine Menge interessanter Sessions angeboten. Eine genaue Auflistung der Themen kann man dem Flyer entnehmen.

robert-vogel

Also bis dann in Burghausen. Ich hoffe man sieht sich!

Diplomarbeit: Entwicklungsumgebung #1

So, in zwei Tagen Schwerstarbeit habe ich nun eine Virtuelle Maschine (Microsoft Virtual PC 2007 SP1) mit Windows Server 2008, SQL Server 2008, Visual Studio 2008 SP1 und natürlich SharePoint Server 2007 SP1 aufgesetzt. Dank des hervorragenden Blogeintrags von Fabian Moritz lies sich das sogar noch in relativ kurzer Zeit bewerkstelligen.

VSeWSSv1.3

Schwieriger wurde es dann schon mit den Windows SharePoint Services 3.0 Tools v1.3: Extenstions for Visual Studio 2008 CTP March 2009 (Wow, was ein Name!). Die Installation war nämlich nicht mehr so ohne weiteres möglich. Nach dem Start und dem Abklicken der Lizenzvereinbarung fror der Installer mir einer Dialogbox “Please wait while the installer finishes determining your disk space requirements” ein. Beenden lies er sich zwar noch, aber mehr auch nicht. Nach einiger Suche bin ich auf diesen Post von Corey Roth gestoßen. Darin wird beschrieben wie man aus der ausgelieferten EXE-Datei die eingebettete MSI-Datei extrahieren kann.

VSeWSSv13_x86_Build-433.exe /extract C:einOrdner

Achtung: Der Pfad muss angegeben werden. Es ist leider nicht so, dass sich ein Dateibrowserdialog öffnet, wenn man nur /extract angibt, so wie man es von Patches gewohnt ist.

 

AVM WLAN USB-Stick und Microsoft Virtual PC 2007 SP1

Auch ein ziemliches Ärgernis war, dass in meiner VM zunächst kein Netzwerk verfügbar war. Ich habe verschiedene Einstellungen – NAT, direktes Device-Mapping, … – durchprobiert. Leider half nichts.

Scheinbar lag es an meinem AVM WLAN USB-Stick. Nachdem ich nämlich ein Netzwerkkabel durch die Wohnung gelegt und meine Adapter umgestellt hatte ging’s. Also merke: WLAN USB-Sticks + VPC2007 = blöde Idee.