.
Anmeldung | Registrieren | Hilfe

.NET-Blogs Archiv Januar 2009

Reflection in einer Zeile

31.01.2009 20:37:48 | Klaus Bock

Mehr oder weniger durch Zufall, bin ich heute auf ein sehr einfache Möglichkeit gestoßen, die Attribute einer Assembly auszulesen. Als Beispiel die Version einer im Projekt referenzierten Assembly. Es muss lediglich irgendeine Klasse aus der Assembly mit dem Operator typeof verwendet werden. Z.B. gibt folgende Zeile 2.0.0.0 zurück.

string version = typeof(int).Assembly.GetName().Version.ToString();

Oder der Dateiname der Assembly mit:

string fileName = Path.GetFileName(typeof(int).Assembly.Location);

gibt mscorlib.dll zurück.

Wie gesagt; diese Schreibweise funktioniert mit jeder Assembly die im aktuellen Projekt referenziert ist.
Es ist immer wieder erstaunlich welche Möglichkeiten sich hinter einem so “einfachen” Operator wie typeof verbergen.

Technorati-Tags: | |

WPF Blogger auch in Spanisch

31.01.2009 11:57:01 | Norbert Eder

Bisher wurden auf WPF-Blogger.com drei Sprachen angeboten. Verfügbare waren bis jetzt deutsch, englisch und französisch. Heute kam eine neue Sprache hinzu. Ab sofort werden auch spanisch-sprachige Blogs aggregiert. Dies passierte auf vielfachen Wunsch, eingebracht über mein englischsprachiges Blog. Wer übrigens empfehlenswerte Blogs zum Thema...

By Design – Oder besser: By schlechten Design

31.01.2009 10:55:00 | Michael Schwarz

Immer wieder finde ich fehlende Funktionen in Programmen, die ich den Herstellern melde, in der Hoffnung, dass diese das Programm in einer späteren Version darauf hin verändern. Noch besser wäre ein kostenloses Update, aber das habe ich schon aufgegeben.

Aktuelles Beispiel ist die Testversion vom Windows Vista Nachfolger Windows 7. Im Media Center kann man Fernsehsendungen mit dem elektrischen Programmführer schon ganz gut planen, doch sehr oft will man eine Sendung mit Angabe der Zeiten (von/bis) aufzeichnen. Grund sind vorrausichtliche Überziehungen, bei denen man einfach eine halbe Stunde mehr aufzeichnen möchte, sicherheitshalber.

Eine manuelle Aufzeichnung gibt man wie folgt ein (Screenshot aus Windows Vista, ist bei Windows 7 aber auch so):

image

Was mich persönlich stört ist die Tatsache, dass ich hier die Kanalnummer eingeben muss, anstatt den Kanal anhand des Sendernamens auswählen kann. Selbst bei nur 24 Sendernamen (DVB-T) ist das viel.

Ich habe über Microsoft Connect ein Feedback gegeben, und heute bereits eine Antwort bekommen:

Product/Technology - Windows 7 Beta Program
Feedback ID - 406206
Feedback Title - Not possible to select channel with real name

The following fields or values changed:

Field Status changed from [Active] to [Resolved]
Field Resolution changed from [Not Set] to [By Design]

Hm, By Design also. Klar, dass das durch einen Programmierfehler nicht möglich ist, hatte ich mir schon gedacht. Aber bedeutet By Design, dass das nicht doch vielleicht interessant ist?

Ein anderes Beispiel in Outlook:

Ich möchte für jeden Freitag im Monat einen Termin eintragen, nur am 3. Freitag habe ich für diesen Termin eine andere Uhrzeit (deswegen kann ich nicht "jeden Freitag" auswählen). Nun aber das Problem mit dem 5. Freitag und dem "letzten Freitag". Der Februar 2008 hat 5 Freitage, d.h. dort müsste ich Serientermine mit "1., 2., 4. und letzten Freitag" anlegen. Mache ich das, dann bekomme ich z.B. für den März am letzten Freitag zwei Einträge, da das der letzte als auch der 4. ist.

Ich habe dafür einen meiner Support Calls bei Microsoft geopfert, aber leider die gleiche Antwort bekommen: "das ist halt so, ist by Design”. Microsoft hat mir am Ende gesagt, ich solle halt einfach einen Anbieter von Add-Ons für Outlook speziell für Termine kaufen.


Ärger mit einem Bild, oder: Woher kommt der zweite Request?

31.01.2009 00:51:00 | Peter Bucher

Bei den Entwicklung eines Controls wurde nach ein paar Änderungen die <Control>.OnPreRender-Methode nach scheinbar einem Request (Seitenanforderung) zweimal aufgerufen.

Da muss also irgendwas faul sein, denk sich Peter und nimmt den Firebug / Fiddler zur Hand um den HTTP-Verkehr zu überprüfen.
Schlussendlich kam dabei raus, dass zuerst der vom Browser ausgelöste Request stattfindet und später noch ein anderer auf die gleiche Seite nachzieht.

Also zwei GET-Requests auf dieselbe Seite obwohl diese nur einmal angefordert wurde, wieso?

Mein Verdacht viel auf Javascript / AJAX, wobei dort in den meisten Fällen POST zum Einsatz kommt.
Nach vielem Eingrenzen und Ausprobieren habe ich schliesslich herausgefunden woran das lag und möchte das euch natürlich nicht vorenthalten.

Das Control enthielt ein Image-Control und die ImageUrl-Eigenschaft wurde nicht gesetzt.
Aufgrund dieses Codes bzw. _weil_ das src-Attribut des img-Tags leer war:

<img src=”” alt=”Peter Bucher” />

…wurde in Firefox noch einmal die aktuelle Seite per GET angefordert, das sieht in Fiddler dann so aus:

firefox_request 

Also einen weiteren Request auf “/<Aktuelle_Seite>”.

Im Internet Explorer (7) passiert bei einem leeren img-Tag folgendes:

internetexplorer_request

Also einen Request auf den Root “/” und anschliessend wird dem Browser mitgeteilt doch bitte die entsprechende Standardseite zu laden, also bspw. “default.aspx” oder bei einer geschützten Seite - wie hier – die Login.aspx.

Gut zu wissen… und auch gut das es sowas wie Fiddler oder Firebug gibt.

Highlight im April: Microsoft Software Strategy Summit

30.01.2009 16:16:25 | Peter Kirchner

Am 24. April 2009 findet im Gürzenich in Köln der aus Microsoft Sicht wichtigste Strategie Event im deutschsprachigen Raum für alle Softwarehersteller statt.

Der Microsoft Software Strategy Summit ist eine eintägige Veranstaltung, die speziell auf die Anforderungen und Anliegen von Softwareherstellern zugeschnitten ist. Der Summit richtet sich sowohl an Business Entscheider wie auch an Technologie Entscheider von softwareherstellenden Unternehmen. Die Inhalte der Veranstaltung werden exklusiv im deutschsprachigen Raum präsentiert. Geplante Themen sind unter anderem Software plus Services, Windows Azure, Microsoft Plattform, Office Business Applications.

Als Keynote Speaker wird Steve Ballmer live vor Ort sein und zum Thema Innovationen im Softwaremarkt und Microsoft sprechen.

Der Summit dient als Plattform zum gemeinsamen Austausch und Diskussion zwischen Microsoft und den Teilnehmern um zu erörtern welche Maßnahmen, Innovationen und Strategien den Erfolg des deutschen Softwaremarktes weiterhin sicherstellen können.

Weitere Informationen erhalten Sie auf der Website www.microsoft-S3.com

Styling und Animation einer WPF ListBox

30.01.2009 02:09:05 | Norbert Eder

Eine sehr häufig gestellte Frage ist die, wie eine WPF ListBox gestyled und animiert wird. Anhand des nachfolgenden Beispiels wird gezeigt, in welchen Templates was gemacht werden kann und welche Auswirkungen dies hat. Was kann aus diesem Artikel gelernt werden? Animieren von Listbox-Einträgen Überschreiben des Fokuses Styling eines...

HowTo: SQL Datenbank Weboberfläche mit ASP.NET Dynamic Data und dem Entity Framework (auf IIS 6.0)

30.01.2009 00:09:31 | Robert Mühsig

image Ich habe meine ersten richtigen Programmiererfahrungen mit PHP in Zusammenhang mit MySQL gemacht. Als Datenbank-Administrationspanel diente eine sehr praktische Weboberfläche namens "PhpMyAdmin".
Es hat zwar nicht den kompletten Komfort eines SQL Management Studios, allerdings war es mit jedem Browser zu erreichen und daher leicht für jedermann nutzbar.
Mit den ASP.NET Dynamic Data und Linq2Sql bzw. dem Entity Framework kann man sich innerhalb von wenigen Minuten eine nette Administrationsoberfläche erstellen, fast ohne Programmieraufwand.

(more…)

ShareThis

Visual Studio 2008 stürzt beim Kompilieren eines Outlook 2007 Add-Ins ab.

29.01.2009 22:04:57 | Andre Kraemer

Heute versuchte ich mein erstes Outlook 2007 Add-In unter Visual Studio 2008 zu entwickeln. Nachdem ich bereits einiges an Code geschrieben hatte, wagte ich den ersten Kompiliervorgang.

Das Ergebnis war allerdings wenig erfreulich, denn anstatt mir ein das Ergebnis meines Kompiliervorgangs anzuzeigen, ging Visual Studio einfach kommentarlos zu.

Um auszuschließen, dass es an meinem Code lag, stellte ich dasselbe zusätzlich noch mit einem leeren Outlook 2007 Add-In nach. (Glücklicherweise) war das Resultat gleich :-)

Nach ein wenig googeln wurde ich darauf aufmerksam, dass die Visual Studio PowerCommands die Ursache sein sollten. Diese habe ich jedoch gar nicht installiert. Also ging die Suche weiter.

Die Lösung fand ich schließlich in folgendem Eintrag:

MSDN Forum - VS 2008 closes at build, Outlook 2007 Add-In

Kurz zusammengefasst: Es ist ein Fehler innerhalb der CLR, der auftritt, wenn Assemblies in einer bestimmten Reihenfolge geladen werden.

Als Workarround kann man das VSTO Native Image (nicht VSTO selbst ;-)) löschen. Dazu tippt man in einem Visual Studio Command Promt einfach folgende Zeile ein:

ngen /delete Microsoft.VisualStudio.Tools.Office.Runtime.v9.0.dll

Viel Erfolg ;-)



blog.codemurai.de © André Krämer |Impressum | Abonieren

Internet Explorer kann nur 31 Stylesheet Tags verarbeiten

29.01.2009 17:26:00 | Michael Schwarz

Das ist ja verrückt, war mir bis gerade nicht bewusst: der Internet Explorer kann nur maximal 30 (bei mir gehen 31) Stylesheet Tags (LINK mit type=text/css oder STYLE, auch inline) verarbeiten. Alle weiteren Angaben werden einfach ignoriert.

Dabei kommt es noch nicht einmal darauf an, ob darin wirklich CSS Angaben geladen werden, z.B. weil die Datei nicht existiert. Auch leere STYLE Tags zählen dazu.

Jetzt wird jemand sagen, warum brauchst du so viele Stylesheets? Nun, wer ein wenig in Controls denkt, der wird auch seine CSS entsprechend pflegen wollen. Da gibt es z.B. bei mir einen Stillstands-Dialog (für die, die mich nicht kennen: es handelt sich dabei um einen Dialog in einer Web Anwendung an einer Maschine, der erscheint, wenn bei der Maschine ein Fehler auftritt). Dieser hat selber 40 CSS Angaben, die ich für andere Seiten der Web Anwendung nicht benötige.

Ich kann das Problem sehr einfach reduzieren, in dem ich meine Scriptengine auf CSS Dateien aufbohre, zum Glück. In dem KB Artikel 262161 steht zwar nur etwas bis zur Version 6, aber im IE7 und in der aktuellen RC des Internet Explorer 8 ist die Begrenzung von 31 Tags leider auch noch. Andere Web Browser wie der Firefox haben damit kein Problem. Warum hat Microsoft ein Problem mit 0x1F (=31)?


Silverlight 2: Controls für WPF und Silverlight in einer Bibliothek entwickeln

29.01.2009 14:52:54 | Oliver Scheer

Eine der am häufigsten gestellten Fragen zu Silverlight ist: “Kann man Controls sowohl für Silverlight als auch für WPF gleichzeitig entwickeln”. Und die klare Antwort lautet: Ja, man kann.

Dazu ist allerdings ein kleiner Trick notwendig. Man kann leider nicht die gleiche dll für WPF und Silverlight verwenden. Silverlight verwendet einen eigenen Compiler und kann auch keine “normalen” dlls aufnehmen die das .NET Framework mitbringt.

Wie bekommt es nun hin das man Code und Controls, den man selbstverständlich nur einmal schreiben möchte, sowohl in WPF- und Silverlight-Anwendungen einbetten kann?

Ganz einfach.

1. Eine normale Windows Class Library / Klassenbibliothek erstellen.

image

In dieser fügt man nun die neuen Controls/Steuerelemente ein die man gerne für beide Zielplattformen (WPF und Silverlight) verwenden möchte. In meinem Fall sind das zwei Controls: LabeledTextBox und FeedbackControl. Das FeedbackControl beinhaltet wiederum drei mal die LabeledTextBox.

2. WPF User Control erstellen

image

Sofort nach dem Visual Studio mir das neue Control (LabeledTextBox) erstellt hat, sehe ich mit schrecken, wie viele Usings überhaupt im Code sind.

image

Das Problem daran ist, das Silverlight den Namespace System.Windows.Navigation nicht kennt, aber denn brauchen wir sowieso nicht. Daher bitte alle nicht benötigten Usings rauswerfen mit folgenden Trick:

image

Ungeschlagen mein Favorit an kleinen Helfern in Visual Studio. Denn nachdem ich nun alle nicht benötigten Usings rausgeworfen habe, bleibt folgendes übrig.

image

Wow. Nur noch ein Namespace wird importiert.

Der Code für meine LabeledTextBox sieht wie folgt aus:

   1: public partial class LabeledTextBox : UserControl
   2: {
   3:     public LabeledTextBox()
   4:     {
   5:         InitializeComponent();
   6:  
   7:         CheckText();
   8:         _value.TextChanged += new TextChangedEventHandler(_value_TextChanged);
   9:     }
  10:  
  11:     void _value_TextChanged(object sender, TextChangedEventArgs e)
  12:     {
  13:         CheckText();
  14:     }
  15:  
  16:     private void CheckText()
  17:     {
  18:         if (IsRequired && _value.Text.Length ==  0)
  19:         {
  20:             _warning.Visibility = System.Windows.Visibility.Visible;
  21:         }
  22:         else
  23:         {
  24:             _warning.Visibility = System.Windows.Visibility.Collapsed;
  25:         }
  26:     }
  27:  
  28:     private bool _isRequired = true;
  29:  
  30:     public bool IsRequired
  31:     {
  32:         get { return _isRequired; }
  33:         set { _isRequired = value; CheckText(); }
  34:     }
  35:  
  36:     public string LabelText
  37:     {
  38:         get { return _label.Text; }
  39:         set { _label.Text = value; }
  40:     }
  41:  
  42:     public string Text
  43:     {
  44:         get { return _value.Text; }
  45:         set { _value.Text = value; }
  46:     }
  47:  
  48:     public string Warning
  49:     {
  50:         get { return _warning.Text; }
  51:         set { _warning.Text = value; }
  52:     }
  53: }

Das Design habe ich mit Expression Blend erstellt:

image image

3. Aufbau der Silverlight / WPF – MixedMode Projektstruktur

image

Um nun die WPF Controls in Silverlight integrieren zu können, legt man ein neues Silverlight Class Library Projekt an. (Oliver.Demos.Controls.Silverlight).

Anschließend fügt man den gewünschten Code (XAML- + Codebehind-Datei) mittels hinzufügen eines bereits existieren Elements als LINK zum Projekt hinzu.

image

Dadurch kopiert man nicht den Sourcecode aus dem anderen Projekt, sondern erhält eine Referenz. Das bedeutet, das man den Code nur an einer Stelle pflegt und bei Änderungen nicht an allen referenzierten Stellen nachpflegen muss.

4. Anlegen der Clients für WPF und Silverlight

Der WPF Client erhält einen Referenz-Verweis auf das “normale” Class Library Projekt und der Silverlight Client einen Verweis auf die Silverlight-Variante mit den Referenzen.

Wenn man dann die Solution kompiliert, stehen einem im Blend die neuen Controls zur Verfügung. Änderungen an der Haupt-Control-Bibliothek werden sofort dann in die WPF- und Silverlight-Clients übernommen

Das Originalfeedback-Control in Blend

image

Das Control im WPF Projekt in Blend und im Browser

image image

Das gleiche Control in Silverlight in Blend und im Browser

image  image

Das vollständige Projekt gibt es hier zum Downloaden

Einen Splashscreen mit gerundeten Ecken in Windows Forms nutzen

29.01.2009 14:49:51 | Klaus Bock

… ist wahrscheinlich einfacher als mancher hier glaubt.
Natürlich gibt es keine fertige SplashScreen-Klasse im .NET Framework, was aber nicht weiter schlimm ist. Die Hälfte der Arbeit ist in der Form-Klasse mit der Eigenschaft Region schon fast erledigt. Mit dieser Eigenschaft wird festgelegt, wie das Control, in diesem Fall die Form, den aussehen soll. Also beschreiben wir die Form.
Dabei ist nichts weiter zu tun als vier Linien und vier Bögen zu zeichnen. Die Breite und Höhe der Form sind ja immer gegeben. Jetzt muss nur noch der Eckenradius verrechnet werden, die erzeugte Geometrie an die Eigenschaft Region übergeben werden und der Splashscreen ist fertig. Werfen wir also zunächst einen Blick auf den Code der SplashScreen-Klasse. Als erstes auf die Methode, welche die Formgrenzen erstellt.

private void CreateRoundedCorners(int radius)
{
    var path = new GraphicsPath();
    path.AddLine(radius, 0, this.Width - radius, 0);
    path.AddArc(this.Width - radius, 0, radius, radius, -90, 90);
    path.AddLine(this.Width, radius, this.Width, this.Height - radius);
    path.AddArc(this.Width - radius, this.Height - radius, radius, radius, 0, 90);
    path.AddLine(this.Width - radius, this.Height, radius, this.Height);
    path.AddArc(0, this.Height - radius, radius, radius, 90, 90);
    path.AddLine(0, this.Height - radius, 0, radius);
    path.AddArc(0, 0, radius, radius, 180, 90);

    this.Region = new Region(path);
}

Das gerundete Rechteck wird mit einer horizontalen Linie von der oberen linke Ecke, versetzt um die Größe des  Radius, begonnen und führt in die obere rechte Ecke ebenfalls um die Größe des Radius verkürzt. Anschließend ein Bogen um 90 Grad i, Uhrzeigersinn und dann weiter mit einer senkrechten nach unten. Im Anschluss daran wieder eine horizontale Linie. So geht es immer im Uhrzeigersinn weiter, bis das Rechteck geschlossen ist.
Nach der letzten Bewegung wir die erzeugte Begrenzung als Parameter an eine neue Instanz der Region-Klasse übergeben und diese als Wert in der Eigenschaft Region der Form gespeichert.
Was soll ich sagen; das war’s auch schon.
Um den Umgang mit der Klasse SplashScreen einfach zu halten, wird der Konstruktor der Form mit einem Parameter vom Typ int versehen der den Wert des Eckenradius entgegen nimmt. So ist der Aufruf des Splashscreen beim Programmstart mit zwei Zeilen Code erledigt. Zur besseren Übersicht, hier das komplette Listing der SplashScreen.cs:

namespace FormsSplashApplication
{
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Windows.Forms;

    public partial class SplashScreen : Form
    {
        public SplashScreen(int cornerRadius)
        {
            // Werte der Form setzen.
            this.FormBorderStyle = FormBorderStyle.None;
            this.Opacity = 0.8d;
            this.ShowInTaskbar = false;
            this.StartPosition = FormStartPosition.CenterScreen;
            this.TopMost = true;
            this.UseWaitCursor = true;

            InitializeComponent();

            // den Rand zeichnen lassen
            this.CreateRoundedCorners(cornerRadius);
        }

        private void CreateRoundedCorners(int radius)
        {
            var path = new GraphicsPath();

            // erste horizontale Line von oben links nach oben rechts
            path.AddLine(radius, 0, this.Width - radius, 0);

            // Bogen rechte obere Ecke
            path.AddArc(this.Width - radius, 0, radius, radius, -90, 90);
            
            // vertikale Linie von rechts oben nach unten
            path.AddLine(this.Width, radius, this.Width, this.Height - radius);
            
            // Bogen unten rechts
            path.AddArc(this.Width - radius, this.Height - radius, radius, radius, 0, 90);
            
            // horizontale Linie unten von rechts nach links
            path.AddLine(this.Width - radius, this.Height, radius, this.Height);
            
            // Bogen unten links
            path.AddArc(0, this.Height - radius, radius, radius, 90, 90);
            
            // vertikale Line links von unten nach oben
            path.AddLine(0, this.Height - radius, 0, radius);
            
            // letzter Bogen oben links; Kontur geschlossen
            path.AddArc(0, 0, radius, radius, 180, 90);

            // Begrenzung an Region übergeben
            this.Region = new Region(path);
        }

    }
}
Somit ist die Klasse SplashScreen erledigt.
Die Verwendung des Splashscreen ist denkbar einfach.
  • Eine Instanz der Splashscreen-Klasse erzeugen, mit dem gewünschten Eckenradius im Konstruktor.
  • Jetzt mit InitializeComponent die Komponenten der eigentlichen Form initialisieren.
  • Mit Show die Splashscreen-Instanz auf dem Bildschirm anzeigen.
  • Einmal Application.DoEvents aufrufen um anstehende Windowsmeldungen zu verarbeiten
  • Jetzt kann die eigentliche Ladearbeit der Form beginnen und der Splashscreen wird solange angezeigt, bis die Instanz mit Close wieder geschlossen wird.

Hierzu bietet sich das Load Ereignis der Form an, da in diesem Moment die Form geladen ist und auf dem Bildschirm ausgegeben wird. Es kann natürlich auch jedes spätere Ereignis verwendet werden. Je nachdem wie lange der Splashscreen angezeigt werden soll.
Im folgenden Beispiel habe ich, wie oben bereits angesprochen, das Load Ereignis gewählt um den Splashscreen zu schließen.

namespace FormsSplashApplication
{
    using System;
    using System.Threading;
    using System.Windows.Forms;

    public partial class Form1 : Form
    {
        private SplashScreen splashScreen;

        public Form1()
        {
            // neue Instanz der SplashScreen-Klasse
            // mit Eckenradius 15px initialisieren.
            this.splashScreen = new SplashScreen(15);

            InitializeComponent();

            // Splashscreen anzeigen
            this.splashScreen.Show();

            // Windowsmeldungen abarbeiten bevor blockiert wird.
            Application.DoEvents();

            // langer Ladevorgang…
            Thread.Sleep(5000);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // Form geladen, SplashScreen scließen
            this.splashScreen.Close();

            // und entsorgen
            this.splashScreen.Dispose();
        }
    }
}
Wie bereits Eingangs erwähnt; es ist einfacher als mancher glaubt.
Man kann natürlich auch das Aussehen des Splashscreen in der Form1-Klasse steuern. ohne weitern Code zu schreiben. Die nötigen Eigenschaften wie Breite, Höhe, Opacity udgl. sind per Design in Instanz-Membern zugänglich.

Interessierte können sich das Projekt herunterladen.

FormsSplashApplication.zip

WPF PropertyGrid in neuer Version verfügbar

29.01.2009 11:09:03 | Norbert Eder

Das zu 100% in WPF entwickelte WPF PropertyGrid Control wurde in einer neuen Version zur Verfügung gestellt. Es bietet reichhaltige Funktionen und ist zudem auch noch hübsch anzusehen. Nachfolgend ein Ausschnitt der langen Funktionsliste: 100% WPF Component (no Windows Forms interop, no native code calls, etc.) Same property editing approach...

Setting up SourceGear DiffMerge with Git

28.01.2009 21:18:58 | Alexander Groß

Git Logo For about six month I’m using Git as my preferred Source Control Management system. That is, while my colleagues at work still work with Subversion and TortoiseSVN, I am leveraging the powers of Git behind the scenes. That is, I work on local (Git) feature branches that I commit to our SVN trunk every once in a while, typically after I finished working on a feature.

If you want to get started with Git, I recommend watching the GitCasts and try one of the Windows distributions, msysgit or Cygwin. (I switched to Cygwin after the msysgit team dropped SVN integration in their 1.6 release.)

Git heavily relies on the command line, and UI tools like gitk and TortoiseGit are not quite there yet. Using a CLI might be something a lot of Windows developers do not look forward to, but you still can configure support for some UI tools. For example, file diffs and merges can be customized to work with any tool (UI and CLI-based). I use SourceGear DiffMerge (free) as my primary diff and merge tool. It’s far better that what comes with TortoiseSVN or Git itself (again CLI-based).

I could only find sparse documentation on how to make DiffMerge work with Git, so I dove into the world of Shell programming and created a couple of simple scripts. Here is what I came up with.

diffmerge-diff.sh

#!/bin/sh

path="$(cygpath $1)"
old="$(cygpath --mixed --absolute "$2")"
new="$(cygpath --mixed --absolute "$5")"

#echo -ne "path\n$path\n"
#echo -ne "old\n$old\n"
#echo -ne "new\n$new\n"

"/cygdrive/C/Tools/DiffMerge/diffmerge.exe" "$old" "$new" --title1="Old" --title2="New $path"

diffmerge-merge.sh

#!/bin/sh

localPath="$(cygpath --mixed --absolute "$2")"
basePath="$(cygpath --mixed --absolute "$1")"
remotePath="$(cygpath --mixed --absolute "$3")"
resultPath="$(cygpath --mixed --absolute "$4")"

if [ ! -f $basePath ]
then
    basePath="$(cygpath --mixed --absolute ~/diffmerge-empty)"
fi

#echo -ne "local\n$localPath\n"
#echo -ne "base\n$basePath\n"
#echo -ne "remote\n$remotePath\n"
#echo -ne "result\n$resultPath\n"

"/cygdrive/C/Tools/DiffMerge/diffmerge.exe" --merge --result="$resultPath" "$localPath" "$basePath" "$remotePath" --title1="Mine" --title2="Merged: $4" --title3="Theirs"

Setting up Git

  1. Put the files above in your home directory, either C:\Cygwin\home\<username> (Cygwin) or C:\Users\<username> (msysgit). Make sure the line endings are LF-only (UNIX style) and the file is saved without the UTF byte-order mark (BOM).
  2. Create an empty file named diffmerge-empty in the same directory.
  3. Modify the scripts to point to the correct location of DiffMerge (see the last lines). Some more modifications will be needed if you’re from the msysgit crowd, as the cygpath utility is not available there.
  4. Open a Git CLI and enter the following commands:
    git config --global merge.tool diffmerge
    git config --global mergetool.diffmerge.cmd "~/diffmerge-merge.sh \"\$BASE\" \"\$LOCAL\" \"\$REMOTE\" \"\$MERGED\""
    git config --global mergetool.diffmerge.trustExitCode false 
    git config --global diff.external "C:/Cygwin/home/<username>/diffmerge-diff.sh"
    This should add the following lines to your .gitconfig:
    [merge]
        tool = diffmerge
    [mergetool "diffmerge"]
        cmd = ~/diffmerge-merge.sh \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
        trustExitCode = false
    [diff]
        external = C:/Cygwin/home/<username>/diffmerge-diff.sh

Using DiffMerge

Using DiffMerge is pretty easy, the normal git diff and git mergetool commands work as usual, but will now spawn DiffMerge instead of vi (which is the default). If anything does not work as expected, uncomment the #echo lines and use a tool like Process Monitor and Process Explorer to see where things go wrong.

Happy diffing!

Setting up SourceGear DiffMerge with Git

28.01.2009 21:18:58 | Alexander Groß

Git Logo For about six month I’m using Git as my preferred Source Control Management system. That is, while my colleagues at work still work with Subversion and TortoiseSVN, I am leveraging the powers of Git behind the scenes. That is, I work on local (Git) feature branches that I commit to our SVN trunk every once in a while, typically after I finished working on a feature.

If you want to get started with Git, I recommend watching the GitCasts and try one of the Windows distributions, msysgit or Cygwin. (I switched to Cygwin after the msysgit team dropped SVN integration in their 1.6 release.)

Git heavily relies on the command line, and UI tools like gitk and TortoiseGit are not quite there yet. Using a CLI might be something a lot of Windows developers do not look forward to, but you still can configure support for some UI tools. For example, file diffs and merges can be customized to work with any tool (UI and CLI-based). I use SourceGear DiffMerge (free) as my primary diff and merge tool. It’s far better that what comes with TortoiseSVN or Git itself (again CLI-based).

I could only find sparse documentation on how to make DiffMerge work with Git, so I dove into the world of Shell programming and created a couple of simple scripts. Here is what I came up with.

diffmerge-diff.sh

#!/bin/sh

path="$(cygpath $1)"
old="$(cygpath --mixed --absolute "$2")"
new="$(cygpath --mixed --absolute "$5")"

#echo -e "path\n$path"
#echo -e "old\n$old"
#echo -e "new\n$new"

"/cygdrive/C/Tools/DiffMerge/diffmerge.exe" "$old" "$new" --title1="Old" --title2="New $path"

diffmerge-merge.sh

#!/bin/sh

localPath="$(cygpath --mixed --absolute "$2")"
basePath="$(cygpath --mixed --absolute "$1")"
remotePath="$(cygpath --mixed --absolute "$3")"
resultPath="$(cygpath --mixed --absolute "$4")"

if [ ! -f $basePath ]
then
    basePath="$(cygpath --mixed --absolute ~/diffmerge-empty)"
fi

#echo -ne "local\n$localPath\n"
#echo -ne "base\n$basePath\n"
#echo -ne "remote\n$remotePath\n"
#echo -ne "result\n$resultPath\n"

"/cygdrive/C/Tools/DiffMerge/diffmerge.exe" --merge --result="$resultPath" "$localPath" "$basePath" "$remotePath" --title1="Mine" --title2="Merged: $4" --title3="Theirs"

Setting up Git

  1. Put the files above in your home directory, either C:\Cygwin\home\<username> (Cygwin) or C:\Users\<username> (msysgit). Make sure the line endings are LF-only (UNIX style) and the file is saved without the UTF byte-order mark (BOM).
  2. Create an empty file named diffmerge-empty in the same directory.
  3. Modify the scripts to point to the correct location of DiffMerge (see the last lines). Some more modifications will be needed if you’re from the msysgit crowd, as the cygpath utility is not available there.
  4. Open a Git CLI and enter the following commands:
    git config --global merge.tool diffmerge
    git config --global mergetool.diffmerge.cmd "~/diffmerge-merge.sh \"\$BASE\" \"\$LOCAL\" \"\$REMOTE\" \"\$MERGED\""
    git config --global mergetool.diffmerge.trustExitCode false 
    git config --global diff.external "C:/Cygwin/home/<username>/diffmerge-diff.sh"
    This should add the following lines to your .gitconfig:
    [merge]
        tool = diffmerge
    [mergetool "diffmerge"]
        cmd = ~/diffmerge-merge.sh \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
        trustExitCode = false
    [diff]
        external = C:/Cygwin/home/<username>/diffmerge-diff.sh

Using DiffMerge

Using DiffMerge is pretty easy, the normal git diff and git mergetool commands work as usual, but will now spawn DiffMerge instead of vi (which is the default). If anything does not work as expected, uncomment the #echo lines and use a tool like Process Monitor and Process Explorer to see where things go wrong.

Happy diffing!

Using Nant for Metabase backup on 64bit Windows Server 2003

28.01.2009 16:26:50 | Andre Loker

For while now I’ve been using NAnt not only as a build tool but also as the tool running all my backup tasks, such as:

  • database backups
  • Subversion repository backups
  • mail backup
  • website backup

I’ve also used it to create backups of the IIS Metabase using the iisback.vbs script, which works perfectly smooth as long as it is running on a 32 bit Windows.

I’ve been trying to backup the IIS Metabase on a 64 bit Windows Server 2003 server for a while now, but for some reasons I could not make it work. If I tried to call the script directly using the commandline, e.g.

   1: iisback.vbs /backup /s localhost /e something /v NEXT_VERSION 
   2:       /b Metabase123 //E:vbscript

it would ran perfectly fine. However, when executed as a NAnt task I got an error:

Could not create an instance of the CmdLib object.
Please register the Microsoft.CmdLib component.

After digging in the dark for a while I found an interesting forum thread of somebody with a similar problem. So I more or less did what has been proposed in that thread:

  1. I copied cmdlib.wsc over from %WINDIR%\System32 to %WINDIR%\SysWOW64
  2. I also copied isschlp.wsc the same way
  3. I registered cmdlib.wsc and isschlp.wsc using regsvr32 cmdlib.wsc and regsvr32 isschlp.wsc respectively

At that point my NAnt script was happy again and created the backups.

The reason and more trouble

As far as I understand the problem was that NAnt is for some reason running as a 32 bit application. On 64bit Windows boxes, the System32 folder contains the 64bit binaries whereas the SysWOW64 folder contains the 32bit versions. Frankly, this is not the most intuitive naming ever, but it has a reason. If a 32 bit application is running the System32 folder becomes an alias for the SysWOW64 folder, with the effect that for 32 bit applications, Windows looks totally normal (ie. 32 bit). However, this also means that binaries that are found in the unaliased System32 folder are not accessible for 32 bit application. Hence the need to copy and reregister cmdlib.wsc and isshlp.wsc.

Now that I had this one working I directly faced a second problem: the backups of the metabase are stored at %WINDIR%\System32\inetserv\MetaBack. I think you can guess what’s the problem: the folder is hidden for 32 bit applications, which means that I can’t copy the Metabase backups using NAnt, because NAnt only sees the aliased version of System32.

So here’s what I did to solve this issue: I couldn’t find a way to disable the file system aliasing though standard means in NAnt, but I found an API that could help me:

Using the first of those two method disables the aliasing for the current thread. So I wrote a small C# program that first disables the aliasing (by P/Invoking the methods mentioned above) and then copies the backed up files out of the System32 folder into a conventional folder. I could then continue to use NAnt to further process those files (e.g. zipping them, mailing them somewhere – whatever).

Here’s the code of the class that disables/reverts the file system aliasing:

 /// <summary>
 /// Disables file system aliasing for 32 bit applications
 /// on 64 bit systems.
 /// </summary>
 public class DisableWow64Redirect : IDisposable {
   #region P/invoke
   [DllImport("Kernel32")]
   private static extern bool Wow64DisableWow64FsRedirection(out IntPtr oldValue);
  
   [DllImport("Kernel32")]
   private static extern bool Wow64RevertWow64FsRedirection(IntPtr oldValue)
   #endregion
  
   private readonly IntPtr oldValue;
  
   /// <summary>
   /// Creating a new object disables file system aliasing for the current thread.
   /// </summary>
   /// <remarks>
   /// Use <see cref="Dispose"/> to re-enable file system aliasing.</remarks>
   public DisableWow64Redirect() {
     Success = Wow64DisableWow64FsRedirection(out oldValue);
   }
  
   public bool Success { get; private set; }
  
   /// <summary>
   /// Disposes this object and reenables the file system aliasing.
   /// </summary>
   public void Dispose() {
     if (Success) {
       Success = Wow64RevertWow64FsRedirection(oldValue);
     }
   }
 }

Granted, this is probably not the best solution one could think of, but it works for me for the moment. If anyone has a better idea, let me know!

 

Windows 7: Interessante (Neben-)Features

28.01.2009 13:06:16 | Oliver Scheer

Seit einigen Tagen in ich nun begeisterter Windows 7 Nutzer. Natürlich gibt es unglaublich viel zu entdecken, die verbesserte UI, Aero Shake, Touch und noch vieles mehr.

Allerdings sind mir auch einige nette Kleinigkeiten aufgefallen, die man erst beim genauen Hingucken bzw. Benutzen findet.

Der Taschenrechner

image

Sehe ich das richtig? Ist es tatsächlich möglich? Nach all den Jahren? Endlich eine neue Oberfläche? Wow Nr. 1

image

Aber sieht man genau hin, dann erkennt man das der Taschenrechner jetzt noch mehr Ansichten hat als jemals zu vor (glaube ich zumindest) ;) Standard, Scientific, Programmer und Statistics.

Die Programmer-Ansicht

image

Ja daran merkt man, wir sind eine Entwickler-Firma.

Der Windows Live Messer ist zwar nicht Bestandteil von Windows 7, kann aber einfach über Windows Live installiert werden. Nach dem Starten ist er allerdings immer in der neuen Startleiste eingeblendet und verschwindet nicht diskret in die Traybar. Warum ist das so? Nun die Anwendung ist noch nicht ganz Windows 7 fit. Macht aber nichts. Mit einer kleinen Einstellung kann man jeder Anwendung sagen, verhalte dich so als seihst du auf Betriebssystem x oder y installiert.

Über die Eigenschaften von des Programmes, z.B. Windows Live Messenger, kann dies sehr leicht konfiguriert werden.

image

Und siehe da? Der Messenger ist wieder verschwunden unten in der Traybar.

Fade away - Opacity Blending von Masken

28.01.2009 12:57:00 | Jens Peter Kleinau

Um Masken ein- oder auszublenden scheint die entsprechende Animations sehr simpel. Man nehme schlicht und ergreifend die Maske, schenke ihr eine DoubleAnimation und reduziere das OpacityProperty in einem angemessenen Zeitraum auf den Wert 0. Doch leider stellt man fest, dass die auszublendende Maske im Ausblenden genauso anklickbar ist, wie im normalen Maskenleben. Einfallsreiche legen dann...

[[ This is a content summary only. Visit my website for full links, other content, and more! ]]

Sichtbarkeit von Elementen über WPF Commands steuern

28.01.2009 11:17:01 | Norbert Eder

Das WPF Command System ist ein sehr mächtiges System. Nur gibt es da eine Sache, die mich dann doch etwas stört: Zwar kann über CanExecute und PreviewCanExecute (also Bubbling bzw. Tunneling Ereignis) festgelegt werden, ob ein Command ausgeführt werden kann oder nicht, nur wird dabei lediglich darüber entschieden, ob das jeweilige Element...

Silverlight 2: Networking

28.01.2009 09:21:23 | Oliver Scheer

Daten mittes WebClient-Klasse übertragen

Der einfachste Weg Daten zu übertragen geht mit der WebClient-Klasse. Im Gegensatz zur WebClient-Klasse des großen .NET Frameworks umfasst sie nur asynchrone Aufrufe, damit der Benutzer nicht unnötig durch langlaufende Aufrufe warten muss.

Die einfachste Methode ist die DownloadStringAsync-Methode zum Laden von beliebigen Text-Dateien. Aber Uploads und Streams lassen sich damit behandeln.

Der folgende Code zeigt wie man Daten einer Url (z.B. http://blogs.msdn.com/olivers/rss.xml) laden kann. Falls einen die Crossdomain-Policy keinen Strich durch die Rechnung macht, siehe unten.

   1: string url = _address.Text;
   2: Uri uri = new Uri(url);
   3:  
   4: WebClient webclient = new WebClient();
   5: webclient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webclient_DownloadStringCompleted);
   6: webclient.DownloadStringAsync(uri);

Wichtig, damit man mitbekommt, wenn die Daten zurückkommen ist das Event DownloadStringCompleted.

   1: void webclient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
   2: {
   3:     if (e.Error != null)
   4:     {
   5:         // Error
   6:         _resultText.Text = e.Error.Message;
   7:         return;
   8:     }
   9:  
  10:     string txt = e.Result;
  11:     _resultText.Text = txt;
  12: }

Das Ergebnis, in diesem Fall ein String, befindet sich im Argument e, welches die Methode als Parameter mit übergeben bekommt.

Daten mittels WebService übertragen

Um Daten mit einem WebService auszutauschen, sind keine neuen Techniken notwendig. Es geht wie bisher sehr einfach über Visual Studio.

Zu erst benötigt man einen WebService, den man in seinem Web in dem die Silverlight-Anwendung später gehostet wird, erstellt. Es muss tatsächlich die Webanwendung sein, in der die Silverlight-Anwendung liegt. Ist dies nicht der Fall kommt man mit der Crossdomain-Policy in Berührung. Dazu später mehr.

Der eigentliche WebService ist sehr einfach:

   1: [WebService(Namespace = "http://tempuri.org/")]
   2: [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
   3: [System.ComponentModel.ToolboxItem(false)]
   4: // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
   5: // [System.Web.Script.Services.ScriptService]
   6: public class DemoWebService : System.Web.Services.WebService
   7: {
   8:  
   9:     [WebMethod]
  10:     public string HelloWorld()
  11:     {
  12:         return "Hallo Welt";
  13:     }
  14:  
  15:     [WebMethod]
  16:     public DateTime GetServerTime()
  17:     {
  18:         DateTime serverTime = DateTime.Now;
  19:         return serverTime;
  20:     }
  21:  
  22:     [WebMethod]
  23:     public int Add(int a, int b)
  24:     {
  25:         return a + b;
  26:     }
  27: }

Diesen WebService muss man nun von seiner Silverlight-Anwendung referenzieren. Dies geht am leichtesten mit der rechten Maustaste auf dem Silverlight-Projekt:

image

Anschließend sucht man sich den WebService über den folgenden Dialog aus.

image

Visual Studio erzeugt nun im angegebenen Namespace (also mit using den entsprechenden Namespace einbinden), in meinem Fall “DemoServiceReference” alle benötigten Proxyklassen und Webservice aufrufe, die dann einfach im Code ansprechen kann.

   1: DemoWebServiceSoapClient soapClient =
   2:    new DemoWebServiceSoapClient();

Prinzipiell lässt sich der Webservice-Proxy mit der obenstehenden Zeile erzeugen. Leider steht hart verdrahtet die Url auf meinen lokalen Webservice in der web.config. Das kann man beim produktiv setzen relativ einfach umstellen, ist aber beim Testen sehr mühsam.

Ich verwende daher immer die folgende Methode zum Erstellen des Webservice:

   1: private DemoWebServiceSoapClient GetWebService()
   2: {
   3:     string url = HtmlPage.Document.DocumentUri.AbsoluteUri;
   4:     url = url.Substring(0, url.LastIndexOf("/") + 1);
   5:     url += "DemoWebService.asmx";
   6:  
   7:     BasicHttpBinding binding = new BasicHttpBinding();
   8:     EndpointAddress address = new EndpointAddress(url);
   9:  
  10:     DemoWebServiceSoapClient soapClient =
  11:         new DemoWebServiceSoapClient(binding, address);
  12:  
  13:     return soapClient;
  14: }

In den Zeilen 3-5 erzeuge ich mir zur Laufzeit die Url zu meinem Webservice, den ich dann in Zeile 10 instanziere. Dazu muss ich dem Service mitteilen, welches Binding und welche Zieladresse mein Service hat.

Diese Methode funktioniert natürlich auch nur dann, wenn der Service wirklich im Root-Verzeichnis der Anwendung steht und “DemoWebService.asmx” heißt ;)

Um den Webservice-Aufruf anschließend durchzuführen ist der folgende Code notwendig:

   1: private void LoadServerTime()
   2: {
   3:     DemoWebServiceSoapClient soapClient =
   4:         GetWebService();
   5:  
   6:     soapClient.GetServerTimeCompleted 
   7:         += new EventHandler<GetServerTimeCompletedEventArgs>(soapClient_GetServerTimeCompleted);
   8:     soapClient.GetServerTimeAsync();
   9: }
  10:  
  11: void soapClient_GetServerTimeCompleted(object sender, GetServerTimeCompletedEventArgs e)
  12: {
  13:     if (e.Error == null)
  14:     {
  15:         DateTime serverTime = e.Result;
  16:         _serverTimeText.Text = serverTime.ToLongTimeString();
  17:     }
  18:     else
  19:     {
  20:         _serverTimeText.Text = e.Error.Message;
  21:     }
  22: }

Dieses Codebeispiel lädt die Uhrzeit des Servers in den Client und zeigt diese dort an.

   1: private void AddValues()
   2: {
   3:     int value1 = int.Parse(_valueA.Text);
   4:     int value2 = int.Parse(_valueB.Text);
   5:  
   6:     DemoWebServiceSoapClient soapClient = GetWebService();
   7:     soapClient.AddCompleted += new EventHandler<AddCompletedEventArgs>(soapClient_AddCompleted);
   8:     soapClient.AddAsync(value1, value2);
   9: }
  10:  
  11: void soapClient_AddCompleted(object sender, AddCompletedEventArgs e)
  12: {
  13:     if (e.Error == null)
  14:     {
  15:         int result = e.Result;
  16:         _resultText.Text = result.ToString();
  17:     }
  18:     else
  19:     {
  20:         _resultText.Text = e.Error.Message;
  21:     }
  22: }

Dieser Code ruft einen Webservice mit zwei Parametern auf und zeigt das Ergebnis ebenfalls an.

Crossdomain und die Sicherheit

Was sie vielleicht feststellen werden, ist das man über WebClient oder das Einbinden eines Webservices in Silverlight-Anwendungen (oder auch Flash-Anwendungen) nicht jeden beliebigen Inhalt von fremden Webseiten nachladen können. Solche sogenannten Cross-Domain-Calls werden von Silveright (und Flash) schlichtweg vorher geprüft und gegebenenfalls unterbunden. Um sorgenfrei eine externe Datei oder einen Webservice von einem anderen Server laden zu können müssten folgende Gegebenheit auf dem Fremdserver vorhanden sein:

1. Eine Datei mit dem Namen crossdomain.xml

2. In dieser Datei muss explizit jede (“*”) Domäne freigegeben sein, oder explizit die des Aufrufers.

Leider ist dies in den seltensten Fällen der Fall. Es lohnt sich mal im Internet bei populären Tageszeitungen die Crossdomain.xml anzusehen. Kleiner Tipp: www.bild.de/crossdomain.xml und www.spiegel.de/crossdomain.xml sind zwei tolle Beispiele dafür.

Mehr Informationen gibt es zur Crossdomain.xml hier.

Um nun diesen Problemen aus dem Web zu gehen gibt es einen ganz einfachen Weg. Und zwar verwenden eigentlich (!!!) nur Client-Technologien im Browser diesen Mechanismus, den übrigens unser Wegbegleiter standardisiert hat, und dem wir mit Silverlight folgen.

Dies alles trifft nicht zu, wenn man von einem Server oder einer Desktop-Anwendung auf diese Inhalt zugreift. Daher bauen wir uns eine kleine Brücke, und zwar einen ProxyService an unserem Server, der für uns die gewünschten Daten lädt und dann an unsere Silverlight-Seite durchreicht.

Der Service könnte wie folgt aussehen:

   1: [WebService(Namespace = "http://tempuri.org/")]
   2: [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
   3: [System.ComponentModel.ToolboxItem(false)]
   4: // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
   5: // [System.Web.Script.Services.ScriptService]
   6: public class ProxyWebService : System.Web.Services.WebService
   7: {
   8:  
   9:     [WebMethod]
  10:     public string GetTextFromUrl(string url)
  11:     {
  12:         WebClient webclient = new WebClient();
  13:         string text = webclient.DownloadString(url);
  14:         return text;
  15:     }
  16: }

Dieser Code fragt nun bei jeder Anfrage die bestimmte URL an und gibt die Textdatei an den Aufrufer zurück. Das ganze ist etwa ineffektiv wenn man die Anfrage sehr oft macht. Es würde sich hier definitiv lohnen einen Cache einzubauen, wenn man bestimmte Adressen häufiger aufruft.

Dieser WebService wird nun ebenfalls in unserer Silverlight-Anwendung referenziert. Damit können wir nun Text-Daten von jeder beliebigen Seite laden.

   1: public ProxyCrossdomainSample()
   2: {
   3:     InitializeComponent();
   4:  
   5:     _address.Text = "http://blogs.msdn.com/olivers/rss.xml";
   6:     _loadButton.Click += new RoutedEventHandler(_loadButton_Click);
   7: }
   8:  
   9: void _loadButton_Click(object sender, RoutedEventArgs e)
  10: {
  11:     LoadDataFromProxyWebService();
  12: }
  13:  
  14: private void LoadDataFromProxyWebService()
  15: {
  16:     string url = HtmlPage.Document.DocumentUri.AbsoluteUri;
  17:     url = url.Substring(0, url.LastIndexOf("/") + 1);
  18:     url += "ProxyWebService.asmx";
  19:  
  20:     BasicHttpBinding binding = new BasicHttpBinding();
  21:     EndpointAddress address = new EndpointAddress(url);
  22:  
  23:     ProxyWebServiceSoapClient soapclient 
  24:         = new ProxyWebServiceSoapClient(binding, address);
  25:  
  26:     soapclient.GetTextFromUrlCompleted += new EventHandler<GetTextFromUrlCompletedEventArgs>(soapclient_GetTextFromUrlCompleted);
  27:     soapclient.GetTextFromUrlAsync(_address.Text);
  28: }
  29:  
  30: void soapclient_GetTextFromUrlCompleted(object sender, GetTextFromUrlCompletedEventArgs e)
  31: {
  32:     if (e.Error != null)
  33:     {
  34:         _resultText.Text = e.Error.Message;
  35:         return;
  36:     }
  37:  
  38:     string result = e.Result;
  39:     _resultText.Text = result;
  40: }

Die vollständige Beispielanwendung gibt es hier:

ASP.NET MVC 1.0 RC veröffentlicht

27.01.2009 22:13:26 | Robert Mühsig

image Seit heute gibt es den ASP.NET MVC 1.0 Release Candidate zum Download. Scott Gu hat wie immer die Neuerungen gut in einem Blogpost gezeigt.

(more…)

ShareThis

VSTO Open Space auf der VSone

27.01.2009 17:11:03 | Lars Keller

Ich werde am 11.02.09 zusammen mit Mario Meir-Huber einen Open Space zum Thema VSTO auf der VSone Konferenz leiten. Was ist ein Open Space?

Open Space (englisch für „geöffneter, offener oder auch weiter Raum“) oder Open Space Technology ist eine Methode zur Strukturierung von Besprechungen und Konferenzen. Sie eignet sich für Gruppen von etwa 12 bis 2000 Teilnehmern. (s. Wikipedia)

Ziel eines Open Space ist es eine intensive Diskussion unter den Teilnehmern zu fördern, wobei diese sich die Diskussionsthemen aussuchen können, bzw. diese selber vorschlagen können. Mario und ich sind als VSTO Experten dabei und sprechen gern über jegliche Ideen, Fragen, Geschäftsprozesse oder anderweitige Dinge zum Thema MS Office.

Um am Open Space teilzunehmen, wird nur ein Ticket für die VSone benötigt, bzw. das Exhibition-Ticket, welches Interessierten eine kostengünstigere Möglichkeit bietet.

Wir sehen uns auf der VSone! :-)

Update: VSone – Open Space



This weblog is sponsored by netcreate OHG.

VSTO Open Space auf der VSone

27.01.2009 16:11:03 | Lars Keller

Ich werde am 11.02.09 zusammen mit Mario Meir-Huber einen Open Space zum Thema VSTO auf der VSone Konferenz leiten. Was ist ein Open Space?

Open Space (englisch für „geöffneter, offener oder auch weiter Raum“) oder Open Space Technology ist eine Methode zur Strukturierung von Besprechungen und Konferenzen. Sie eignet sich für Gruppen von etwa 12 bis 2000 Teilnehmern. (s. Wikipedia)

Ziel eines Open Space ist es eine intensive Diskussion unter den Teilnehmern zu fördern, wobei diese sich die Diskussionsthemen aussuchen können, bzw. diese selber vorschlagen können. Mario und ich sind als VSTO Experten dabei und sprechen gern über jegliche Ideen, Fragen, Geschäftsprozesse oder anderweitige Dinge zum Thema MS Office.

Um am Open Space teilzunehmen, wird nur ein Ticket für die VSone benötigt, bzw. das Exhibition-Ticket, welches Interessierten eine kostengünstigere Möglichkeit bietet.

Wir sehen uns auf der VSone! :-)

Update: VSone – Open Space

Wie kann ich einfache Diagramme ohne Diagramm-Steuerelemente darstellen?

27.01.2009 15:42:00 | Klaus Bock

Wer kennt nicht das Problem “mal eben schnell” den Verlauf eines Prozess darstellen zu wollen? Etwa in Form des Windows eigenen Taskmanager? Die im Framework enthaltenen Steuerelemente bieten auf den ersten Blick nichts vergleichbares. Eine Sammlung von Steuerelementen eines Dritthersteller nutzen? Nein.
Für einfache Diagramme bietet GDI+ mit der Graphics-Klasse erstaunliche und einfache Möglichkeiten. Eine Anwendung wie sie dieser Screenshot zeigt, ist wirklich relativ einfach zu verwirklichen.Diagramm Form

Ich habe bewusst das Aussehen des Taskmanager gewählt, da dieser so ziemlich jedermann geläufig sein sollte. Wie auf dem Screenshot zu sehen ist, werden zwei verschiedenen Steuerelemente verwendet. Eine vertikale Füllstandsanzeige und eine horizontale Verlaufsanzeige. Auch der aktuelle Wert wird als Grafik in der Füllstandsanzeige dargestellt.
Nun zur Umsetzung. Beide Steuerelemente sind einfach nur ein Panel. In den Eigenschaften der Panels wird lediglich die Eigenschaft BackColor auf Black gesetzt und als Rahmenattribut Fixed3D eingestellt um etwas Tiefe darzustellen. Alles andere wird im Paint-Ereignis des Panel erledigt.

Werfen wir als erstes einen Blick auf die Füllstandsanzeige. Es sind zwei verschiedene Farben darzustellen und der aktuelle Wert als Zeichenfolge. Um die Berechnung der Werte für die Positionen der Füllstandsmarken nachvollziehbar zu halten, habe ich im Beispiel feste Größen der Panels gewählt. Das Panel hat eine Größe von 60x140px. Abzüglich des Rand und der darzustellenden Zeichenfolge habe ich eine Höhe von 100px zur Darstellung des Füllgrad festgelegt. mit diesem Wert lässt sich auch einfacher rechnen, wenn man eine maximale Füllung von 100% bedenkt. Es ist also jeweils der leere Bereich von 100 bis zum aktuellen Wert und der volle Bereich ab dem aktuellen Wert bis 0 zu berechnen. Um überhaupt Werte zu erhalten mit denen gerechnet werden kann, habe ich ein Random Objekt verwendet, das zufällige Werte zwischen 0 und 100 zurückgibt. Schauen wir uns also das Paint-Ereignis des ersten Panel einmal an.

Die Verwendung von i + 10 in den Schleifen, dient zur Kompensation des oberen Rand von 10px. Pro Schleifendurchgang werden zwei Linien erzeugt um einen kleinen Abstand in der Mitte der Skala zu erhalten.

private void panel1_Paint(object sender, PaintEventArgs e)
{
    // das Graphic Objekt zum zeichnen abrufen
    Graphics graphic = e.Graphics;

    // den zufälligen Wert in einen string konvertieren
    string usageString = (this.usage * 2).ToString() + " MB";

    // Position für die Zeichenfolge berechnen, so dass sie immer
    // annähernd mittig dargestellt wird.
    PointF stringLocation = new PointF(
        28 - 
		(graphic.MeasureString(
			usageString,
			this.font).Width / 2),
        120F);

    // den Speicherverbrauch als Zeichenfolge darstellen
    graphic.DrawString(
        usageString,
        this.font,
        this.aktiveBrush,
        stringLocation);

    // passive Zeichnen
    for (int i = 0; i <= (100 - this.usage); i += 3)
    {
        graphic.DrawLine(this.passivePen, 9, i + 10, 27, i + 10);
        graphic.DrawLine(this.passivePen, 28, i + 10, 46, i + 10);
    }

    // aktive Zeichnen
    for (int i = (100 - usage); i < 100; i += 3)
    {
        graphic.DrawLine(this.aktivePen, 9, i + 10, 27, i + 10);
        graphic.DrawLine(this.aktivePen, 28, i + 10, 46, i + 10);
    }

    graphic.Dispose();
}

Wenden wir uns jetzt dem zweiten Panel zu. Bei der Erzeugung der horizontalen Verlaufsanzeige soll ein Raster erzeugt werden. Der Einfachheit halber habe ich einen Abstand von 10px gewählt. Bei einer Größe von 250x140 lässt sich das einfach aufteilen. Allerdings soll nicht nur ein statisches Raster gezeichnet werden, sonder es soll den Anschein erwecken als ob es über den Bildschirm wandert. Das lässt sich einfach mit einem variablen Anfangspunkt der vertikalen Linien erzielen, in dem dieser abwechselnd um den halben Linienabstand versetzt wird. Da das Raster in einer anderen Farbe dargestellt werden soll, wird noch eine dritte Farbe benötigt. Werfen wird jetzt einen Blick in den Code und sehen was bis jetzt vorhanden ist.

private void panel2_Paint(object sender, PaintEventArgs e)
{
    // das Graphic Objekt zum zeichnen abrufen
    Graphics graphic = e.Graphics;

    // horizontale Linien zeichnen
    for (int i = 10; i < 140; i += 10)
    {
        graphic.DrawLine(this.gridPen, 0, i, 250, i);
    }

    // vertikale Linien Zeichnen und mit offset beginnen
    for (int i = this.offset; i < 250; i += 10)
    {
        graphic.DrawLine(this.gridPen, i, 0, i, 140);
    }

    graphic.Dispose();
}
Es wird bis jetzt die Füllstandsanzeige und das Raster aus horizontalen und vertikalen Linien gezeichnet. Da da die Werte der Felder usage und offset mit 0 initialisiert werden, sollte das Ergebnis jetzt so aussehen:
Diagramm Form

Um das ganze mit Daten zur Anzeigen zu befüllen, wird das bereits angesprochene Random Objekt verwendet. Um noch einen zeitlichen Ablauf zu erreichen verwenden wir einen Timer aus dem System.Windows.Forms Namensraum. Im Ereignishandler des Tick Ereignis dieses Timer, wird ein neuer Wert vom Random Objekt zurückgegeben und die beiden Panels werden neu gezeichnet. Da wir aber einen Verlauf der ausgegebenen Werte darstellen wollen, müssen noch irgendwie diese Werte vorgehalten werden. Wegen der einfachen Handhabung habe ich mich für eine generische Klasse List<T> mit Werten vom Typ float entschieden. float deshalb, weil die Parameter der Methode Graphics.DrawLine vom Typ float sind und sich mit Werten vom Typ float einfach rechnen lässt. Zur Erinnerung: das Panel hat einen Höhe von 140px und es stehen maximal 100% zur Verfügung. Also muss mit dem Faktor 1.4 skaliert werden. Doch zurück zur Liste mit den Werten. Da beim Start der Anwendung die Liste zunächst leer ist, muss natürlich auch die Darstellung des Verlauf am Rand beginnen. Mit fortschreitender Füllung der Liste, soll auch die Darstellung im Raster wandern. Also muss die Position mit dem Füllstand der Liste synchronisiert werden. Es muss nur eine Konstante festgelegt werden, die den Fortschritt der Anzeige je Durchlauf vorgibt. Der Einfachheit halber wird hier fünf verwendet. Das Panel ist 250px lang, 5px pro Durchlauf. Also muss die volle Liste 50 Werte enthalten. Andersherum kann mit der Anzahl der Elemente in der Liste multipliziert mit der Konstanten, die Position im Raster ermittelt werden. Klingt vieleicht kompliziert, ist es aber nicht wenn man einen Blick auf die eine Zeile Code wirft:

// aktuelle horizontale Position ermittel 
int x = 250 - (this.pointList.Count * 5);

Wenn die Liste ihre 50 Werte erreicht hat, wird immer das erste Element aus der Liste entfernt und der aktuellste Wert an das Ende der Liste angefügt. Da dies alles im Timer.Tick Ereignis verarbeitet wird, hier die komplette Methode:

void timer_Tick(object sender, EventArgs e)
{
    // zufälligen Wert zwischen 0 und 100 erzeugen
    this.usage = rnd.Next(0, 101);

    // prüfen ob schon ein Wert gespeichert
    if (this.firstItem == 0F)
    {
        // aktuellen Wert zuweisen
        this.firstItem = this.usage * 1.4F;
    }

    // prüfen ob die Liste gefüllt ist
    if (this.pointList.Count >= 50)
    {
        // ersten Eintrag aus der Liste sichern
        this.lastItem = this.pointList[0];

        // den ersten Eintrag aus der Liste löschen
        this.pointList.RemoveAt(0);

        // neuen Wert am Ende der Liste anfügen
        this.pointList.Add((float)this.usage * 1.4F);
    }
    else
    {
        // Wert neu zuweisen
        this.lastItem = this.firstItem;

        // aktuellen Wert zur Liste hinzufügen
        this.pointList.Add((float)this.usage * 1.4F);
    }

    // offset verschieben
    this.offset = this.offset == 0 ? 5 : 0;

    // beide Panel neuzeichnen
    this.panel1.Invalidate();
    this.panel2.Invalidate();
}

Nach dem die Verwendung der Liste geklärt ist, nun zum zeichnen der Verlaufskurve. In diesem Fall wird keine echte Kurve verwendet, sondern eine Aneinanderreihung von kleinen einzelnen Linien, die jeweils die Länge einer Teilmenge der 250px Gesamtlänge entsprechen. Da eine Linie immer aus einem Anfangs- und Endpunkt besteht und in diesem Fall der Endpunkt einer Linie auch gleich der Anfangspunkt der nächsten Linie ist, lässt sich die Abbildung einfach realisieren. Da die Liste beim Durchlaufen immer nur einen Wert zurückgibt, wird einfach der vorangegangene Wert in einer Variablen gehalten; hier als lastItem bezeichnet. Für die zweite Koordinate wird einfach der aktuelle Wert um die Konstante 5 verkleinert. Hier nun die komplette Methode zum Darstellen des Verlauf:

private void panel2_Paint(object sender, PaintEventArgs e)
{
    // das Graphic Objekt zum zeichnen abrufen
    Graphics graphic = e.Graphics;

    // horizontale Linien zeichnen
    for (int i = 10; i < 140; i += 10)
    {
        graphic.DrawLine(this.gridPen, 0, i, 250, i);
    }

    // vertikale Linien Zeichnen und mit offset beginnen
    for (int i = this.offset; i < 250; i += 10)
    {
        graphic.DrawLine(this.gridPen, i, 0, i, 140);
    }

    // aktuelle horizontale Position ermittel
    int x = 250 - (this.pointList.Count * 5);

    // den Verlauf aus der Liste darstellen
    foreach(var item in this.pointList)
    {
        // Teillinie zeichnen
        graphic.DrawLine(            this.memoryPen,            x - 5,            140 - this.lastItem,            x,            140 - item);
        
        // aktuellen Wert für den nächsten Durchlauf speichern
        this.lastItem = item;

        // X-Koordinate um 5 erhöhen
        x += 5;
    }

    graphic.Dispose();
}

Wie ich bereits eingangs erwähnt habe, sind diese Diagramm Steuerelemente mit relativ wenig Aufwand zu erstellen. Es ist auch nicht sonderlich schwer die Panels in ihrer Größe änderbar zu gestalten. Es müssen lediglich die im Moment festen Werte von z.B. 250px Länge durch den Wert der Eigenschaft Width die das Panel zurückgibt, ersetzt werden. Als kleines Beispiel die bereits bekannte Berechnung der horizontalen Position anhand der Anzahl der Elemente in der Liste:

// aktuelle horizontale Position ermittel
int x = ((Panel)sender).Width - (this.pointList.Count * 5);

Genauso ist mit der Höhe und den anderen Werten zu verfahren. Auch die Darstellung der Diagramme weist noch viele Möglichkeiten auf. Es kann jede beliebige geometrische Form dargestellt und mit den verschiedensten Mustern gefüllt werden. Sich vorzustellen was damit alles Realisiert werden kann, überlasse ich jedem selbst.

Interessierte können sich das Projekt herunterladen.

ChartTest.Zip

Technorati-Tags: | | | |

Windows 7 Ribbons im Codeeinsatz

27.01.2009 13:33:03 | Kay Giza

Wie Sie die seit Office 2007 als Symbolleistenneuerung allgemein bekannt gewordenen „Ribbons“, die in Windows 7 nun allen Entwicklern zur Verfügung stehen, in Ihren Anwendungen einsetzen können, zeigen Ihnen diese Codebeispiele zum Windows Ribbon API sowie zu dessen Einsetzbarkeit und Features. Interessant sind fraglos auch die Einführung in die Windows Ribbons sowie das Channel9-Video zu Windows Ribbons. Großes PDC-Kino erhalten Sie auch mit der Videoaufnahme des Vortrags „Windows 7 Scenic Ribbon“ von Nicolas Brun.

Mehr Informationen bietet auch das Windows Developer Center auf MSDN.



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-2009 Kay Giza. All rights reserved. Legal

Noch mehr Tipps und Tricks

27.01.2009 12:55:39 | Norbert Eder

Die angebotene Trickkiste hat wieder eine Aktualisierung erfahren. Die Silverlight-Anwendung blieb dieselbe, jedoch habe ich an den Inhalten geschraubt. Ab sofort stehen auch Inhalte zu: Windows Presentation Foundation (WPF) Silverlight zur Verfügung. Über eine bequeme Suche nach Tags werden die einzelnen Tipps und Tricks in einer...

[[ This is a content summary only. Visit my website for full links, other content, and more! ]]

How to learn AJAX in .NET – Hm, eine gute Frage!

27.01.2009 12:24:00 | Michael Schwarz

Eigentlich ist der Titel des Beitrags jetzt falsch gewählt. Vielleicht sollte er lieber Wie filtere ich nervende E-Mails aus? lauten. Immer öfters bekomme ich E-Mails wie die hier:

i hont to learn .net so i want to use ajax in my site so give me guidense about  this subject

Please can you do this for me as I dont have the time. I have a urgent project with AJAX and don’t know ASP.NET.

Can you please send me the language packs for [Platzhalter], I cannot download.

Can you please tell me how to hack a web site? I know that you can do it and so please give me instructions. The site is [Platzhalter].

Das ist nur ein Auszug, und es werden von Tag zu Tag mehr. Ok, Fragen zu AJAX könnte ich ganz bestimmt beantworten, aber das sind ja allgemeine Fragen, wie ich ASP.NET programmiere.

Das mit den Sprachpaketen von Vista liegt vielleicht daran, dass man mit vista english language pack bei Google meinen Englischen Blog schon auf der ersten oder zweiten Seite findet. Warum? Keine Ahnung!


jQuery Tipp 1 – bind() verbessern

27.01.2009 12:06:00 | Michael Schwarz

Jeder, der mit jQuery z.B. eigenen HTML Code erzeugt, und dazu irgendwelche Events wie onclick, onmouseover etc. einsetzt, kommt um die Methoden $.bind() und $.unbind() nicht herum. Diese Methoden werden auf einen jQuery Selector angewendet:

$("#testid div").bind("click", function(ev) {
    alert("Hello World!")
});
.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; }

In dem oben gezeigten Beispiel geben wird nach dem Anklicken eines DIV Elementes unterhalb des HTML Elements mit der ID testid der Text Hello World! angezeigt.

Nehmen wir an, dass es 100 DIV Elemente unter dem Elternelement testid gibt, dann könnte man das obige Beispiel auch so schreiben (und so wird das auch intern abgearbeitet):

$("#testid div").each(function() {
    $(this).bind("click", function(ev) {
        alert("Hello World!")
    });
});
.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; }

Um das noch etwas aufzublähen könnte man auch noch das hier schreiben:

$("#testid").find("div").each(function() {
    $(this).bind("click", function(ev) {
        alert("Hello World!")
    });
});
.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; }

In einem Beispiel mit 100 Elementen komme ich auf einem Testrechner auf 10-20 Millisekunden, das ist nicht besonders viel. Baut man den Beispielcode weiter aus, und verwendet mehrere Stylesheetangaben, verschachtelt die Elemente in eine große HTML Seite von ca. 100 kB, dann werden aus den 10-20 Millisekunden schnell auch mal 100 oder auch mehr.

Wer jetzt weiter den HTML Code in kurzen Abständen aktualisieren möchte, muss zudem noch die .unbind() Methode aufrufen, da sonst der Speicher im Internet Explorer wächst.

Eine andere Lösung ist, dass man anstatt jedem einzelnen DIV Element ein onclick zuweist, und dann das Event nur noch am Elternelement abfängt. Das könnte dann so aussehen:

$("#testid").bind("click", function(ev) {
    alert("Hello World!")
});
.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; }

Misst man das Zuweisen des Events kommt man auf 0-1 Millisekunde (so genau wie das eben mit dem Date Objekt in JavaScript geht).

Da wir in unserem Beispiel noch gar nicht auf das eigentliche Element zugreifen, ist hier erst einmal alles in Ordnung. Wollen wir auf das eigentliche Element zugreifen, können wir jetzt die Eigenschaft .srcElement des Ereignis ev verwenden:

$("#testid").bind("click", function(ev) {
    var ele = $(ev.srcElement);
    alert(ele.html());
});
.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; }

Als kleinen Test zeigen wir mal den HTML Source Code des angeklickten Elements an. Soweit so gut.

Doch was ist ev.srcElement eigentlich wirklich? Ist es das erwartete DIV Element? Das kommt ganz auf den HTML Source Code an:

  1. Enthält das DIV Element nur Text, und ist mindestens so breit wie das Elternelement testid, dann erhalten wir das DIV Element.
  2. Ist das DIV Element schmäler, und wir haben daneben geklickt, bekommen wir den HTML Source Code von testid.
  3. Ist in dem DIV Element selber HTML enthalten, also z.B. verschiedene Links oder SPAN, B, … Tags, und wir haben gezielt auf diesen geklickt, bekommen wir dessen Inhalt angezeigt.

Beheben kann man das nur, indem man dafür sorgt, dass die DIV Elemente den leeren Bereich von testid komplett ausfüllen. Das ist besonders bei Tabellen als auch DIV Elementen sehr leicht.

Für den Fall, dass das DIV Element selber viele HTML Tags enthält, habe ich mir eine findParent Methode gebastelt. Mit dieser Methode ist es dann möglich, mit Hilfe eines jQuery Selectors das oberste DIV Element (direkt unter testid) zu finden.

function findParent(ele, selector, maxr) {

    if(ele.is(selector))
        return ele;

    var c = 0;
    while(++c < maxr && !ele.is("body") && !ele.is(selector)) {
        ele = ele.parent();
    }

    if(ele.is(selector))
        return ele;

    return null;
}
.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; }

Der .bind() Aufruf sieht dann wie folgt aus:

$("#testid").bind("click", function(ev) {
    var ele = $(ev.srcElement);
    var div = findParent(ele, "div[:parent=#testidx]", 10);

    alert(div.html());
});

.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; }Und hier nochmal eine ganze HTML Seite mit dem Beispiel:

<html><body>

<div id="testid" 
style="background-color:red;width:240px;"></div> <script type="text/javascript"
src="http://jqueryjs.googlecode.com/files/jquery-1.3.1.min.js"></script>
<script type="text/javascript">

function findParent(ele, selector, maxr) {

    if(ele.is(selector))
        return ele;

    var c = 0;
    while(++c < maxr && !ele.is("body") && !ele.is(selector)) {
        ele = ele.parent();
    }

    if(ele.is(selector))
        return ele;

    return null;
}

$(document).ready(function() {

    // Beispiel HTML
    var h = [];
    for(var i=0; i<10; i++) {
        h.push("<div style=\"background-color:yellow;width:200px;cursor:hand;\">" + i + "</div>");
    }
    h.push("<div style=\"background-color:yellow;width:240px;cursor:hand;\">10</div>");
    h.push("<div style=\"background-color:green;width:240px;cursor:hand;\">11 <b>fett</b> <i>kursiv</i></div>");
    $("#testid").html(h.join(""));

    $("#testid").bind("click", function(ev) {
        var ele = $(ev.srcElement);
        var div = findParent(ele, "div[:parent=#testidx]", 10);

        alert(div.html());
    });

});

</script>

</body></html>
.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; }

image Klickt man nun in den roten Bereich (das ist der Bereich, bei dem die DIV Elemente nicht bis an den Rand des Elternelements reichen, dann erhält man den kompletten HTML Source Code des Elternelements testid. Im gelben Bereich wird der richtige Source Code angezeigt, also die Zahlen 0..10.

Bei der grünen Zeile kann man jetzt auf die 11, auf fett oder kursiv klicken, und erhält immer den kompletten Source Code der Zeile. Das würde mit ele.html() nicht funktionieren.

Video: Was ist neu im Internet Explorer 8 [Streaming und kostenloser Download]

27.01.2009 10:56:25 | Kay Giza

Microsoft stellte die erste Beta-Version des neuen Internet Explorer 8 (IE8) in Deutschland auf der CeBIT 2008 vor (schauen Sie sich das Video von damals in unserem Archiv an). Eine zweite Ausgabe, die Beta 2, folgte im Rahmen der Internationalen Funkausstellung (IFA) 2008 in Berlin. Mittlerweile können Webentwickler, Designer und Anwender sich mit der kommenden Version vertraut machen, in dem Sie den Release Candidate testen. Infos dazu hier: Download & Infos: Windows Internet Explorer 8 Release Candidate 1 (RC1) 

Im Rahmen des Microsoft Technical Summits, Ende 2008, hat Kollege Daniel Melanchthon den Internet Explorer 8 vorgestellt.
Die Aufzeichnung der Session, die einen wirklichen Walkthrough bietet oder auch Überblick gibt, ist auf MSDN Online kostenfrei erhältlich.

Verfügbar sind:
  • Video-Player zum sofortigen abspielen des Videos
  • Video kostenfrei und ohne Registrierung herunterladen
  • Vortragsfolien + XPS herunterladen | PDF herunterladen

Link: Video - Was ist neu im Internet Explorer 8



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-2009 Kay Giza. All rights reserved. Legal

Probleme beim Laden von Webseiten mit dem Internet Explorer 8 (IE8) oder mit der korrekten Darstellung?

27.01.2009 10:44:07 | Kay Giza

Microsoft hat heute Nacht den Internet Explorer 8 Release Candidate 1 (RC1) in 25 Sprachen für Windows Vista, Windows XP und Windows Server veröffentlicht.
Ich berichtete hier: Download & Info: Windows Internet Explorer 8 Release Candidate 1 (RC1)

Gestern am Montag fragte ich Sie im MSDN Flash, sagt Ihnen "X-UA-Compatible" content="IE=EmulateIE7" etwas? Wird Ihre Webseite, Ihr Weblog oder Web-Portal im Internet Explorer 8 richtig dargestellt? Sie können Ihre Webseite relativ einfach mit der aktuellen Version von Internet Explorer 8 testen.

Sollten Sie auf Probleme, Fehler oder Unstimmigkeiten stoßen, haben Sie das Gefühl, dass Ihre Webseite nicht kompatibel ist, das Ihr Webseite nicht richtig gerendert wird, das Ihre Webseite nicht richtig geladen wird, haben Sie das Gefühl das Ihre Webseite nicht richtig funktioniert bzw. arbeitet oder angezeigt wird?

In diesem Fall hilft Ihnen unser Internet Explorer-Kompatibilitätscenter sicherlich weiter. Sie können im Zweifel den Browser relativ einfach per Meta-Tag oder durch einen benutzerdefinierten http-Header auf IIS oder Apache anweisen, Ihre Seiten genauso zu rendern, wie es z.B. Internet Explorer 7 tun würde. Das Internet Explorer 8 Readiness Toolkit (engl.) sowie das Internet Explorer Developer Center unterstützen Sie bei der Anpassung Ihrer Webseiten und Anwendungen für Internet Explorer 8.

Auch sehr interessant für sollte sein, dass der IE8 jetzt erstmalig eine Kompatibilitätsliste enthält. Sie umfasst bekannte und häufig besuchte Websites, die noch Kompatibilitätsprobleme mit dem Internet Explorer 8 haben. Microsoft ist sich dessen bewusst, dass Unternehmen, Webmaster und Web-Developer einige Zeit benötigen, bis der von Internet Explorer 8 vollzogene Wechsel zur Kompatibilität mit Standards abgeschlossen ist. Um diesen Übergang zu überbrücken, stellen wir eine Kompatibilitätsliste zur Verfügung. Mithilfe dieser Liste kann die Darstellung von Websites, die für ältere Browser entwickelt wurden, in Internet Explorer 8 verbessert werden.
Um das optionale Update nutzen zu können, muss die Option "Aktualisierte Websitelisten von Microsoft einbeziehen" in den Einstellungen der Kompatibilitätsansicht von Internet Explorer aktiviert sein. Zu finden über im Menü des Internet Explorers über 'Extras' --> 'Einstellungen der Kompatibilitätsansicht'.

Für Webmaster & Web-Entwickler

 



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-2009 Kay Giza. All rights reserved. Legal

Neues vom Service Pack 2 für Office 2007

27.01.2009 10:27:37 | Lars Keller

Das Service Pack 2 für Office 2007 wird zwischen Februar und Aprill 2009 erscheinen und enthält diese Neuerungen:

For Office Desktop Programs:
· Improved Outlook Calendaring Reliability
· Improved Outlook Performance
· Enabling Object Model support for Charts in PowerPoint and Word
· Improved cryptographic functionality by supporting all cryptographic algorithms offered by the operating system
· Improved functionality in Excel’s charting mechanism
· Ability to ungroup SmartArt graphics (and as a result, the ability to add animations to them in PowerPoint)
· Ability for Visio to export UML models to an XML file compliant with the XMI standard
· Tool that enables the uninstall of Office client Service Packs

For Servers:
· Performance and manageability improvements to variations in Enterprise Content Management (ECM) including STSADM commands for repairing links between source and target pages
· Improvements around processing status approvals from Office Project Web Access into Office Project Professional 2007
· Improvements to read-only content databases and index rebuild timer jobs in Windows SharePoint Services 3.0

Links:



This weblog is sponsored by netcreate OHG.

Mein Videotraining Visual C# 2008 ist erschienen

27.01.2009 10:14:04 | Lars Keller

Seit ein paar Tagen ist mein Videotraining Visual C# 2008 – Der umfassende Einstieg beim Galileo Press Verlag erschienen. Das Training richtet sich an Einsteiger und Umsteiger, die gern wissen möchten, was man alles mit C# schönes programmieren kann. Ich erkläre die Grundlagen, erweiterte Grundlagen sowie verschiedene Aspekte aus den Themen: LINQ, WPF, ADO.NET, Webservice, Debugging, Refactoring, etc. …

Videotraining Visual C# 2008 - Galileo Press Dem Videotraining liegt eine WPF DVD-Verwaltung als Beispielapplikation bei, anhand derer ich verschiedene Programmierungsaspekte aufzeige. Die Beispielapplikation kann nach Herzenslust erweitert werden. Ich würde mich diesbezüglich sogar sehr über Rückmeldungen freuen, um ggf. über etwaige Erweiterungen zu diskutieren.

Wer möchte kann sich aus dem Videotraining ein paar Beispielkapitel online ansehen.

Vielen Dank noch mal an das nette Team von Galileo Press, welche bei Fragen immer für mich da waren! Danke auch für das gesunde Essen bei euch vor Ort (kleiner Insider) und die Kicker-Lektionen! ;)

Außerdem möchte ich Karim und Timo für ihre Unterstützung danken! Danke Jungs!

Links:



This weblog is sponsored by netcreate OHG.

Neues vom Service Pack 2 für Office 2007

27.01.2009 09:27:37 | Lars Keller

Das Service Pack 2 für Office 2007 wird zwischen Februar und Aprill 2009 erscheinen und enthält diese Neuerungen:

For Office Desktop Programs:
· Improved Outlook Calendaring Reliability
· Improved Outlook Performance
· Enabling Object Model support for Charts in PowerPoint and Word
· Improved cryptographic functionality by supporting all cryptographic algorithms offered by the operating system
· Improved functionality in Excel’s charting mechanism
· Ability to ungroup SmartArt graphics (and as a result, the ability to add animations to them in PowerPoint)
· Ability for Visio to export UML models to an XML file compliant with the XMI standard
· Tool that enables the uninstall of Office client Service Packs

For Servers:
· Performance and manageability improvements to variations in Enterprise Content Management (ECM) including STSADM commands for repairing links between source and target pages
· Improvements around processing status approvals from Office Project Web Access into Office Project Professional 2007
· Improvements to read-only content databases and index rebuild timer jobs in Windows SharePoint Services 3.0

Links:

Download: Windows Internet Explorer 8 Release Candidate 1 (RC1)

27.01.2009 09:24:51 | Kay Giza

Microsoft hat heute Nacht den Internet Explorer 8 Release Candidate 1 (RC1) in 25 Sprachen für Windows Vista, Windows XP und Windows Server veröffentlicht. Wo kann man sich den IE8 (RC1) kostenlos herunterladen oder neudeutsch downloaden? Weiterhin finden Sie in diesem ausführlichen Blog-Artikel Informationen rund um die Neuerungen im Internet Explorer 8 (RC1), Informationen für Entwickler, Informationen zum Thema Hilfe & Support sowie Infos zur neuen Kompatibilitätsliste von Microsoft. Zum Schluss weise ich auf wichtige Links hin, die jeder Für Webmaster & Web-Entwickler kennen sollte... [... mehr Details in diesem ausführlich 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-2009 Kay Giza. All rights reserved. Legal

Mein Videotraining Visual C# 2008 ist erschienen

27.01.2009 09:14:04 | Lars Keller

Seit ein paar Tagen ist mein Videotraining Visual C# 2008 – Der umfassende Einstieg beim Galileo Press Verlag erschienen. Das Training richtet sich an Einsteiger und Umsteiger, die gern wissen möchten, was man alles mit C# schönes programmieren kann. Ich erkläre die Grundlagen, erweiterte Grundlagen sowie verschiedene Aspekte aus den Themen: LINQ, WPF, ADO.NET, Webservice, Debugging, Refactoring, etc. …

Videotraining Visual C# 2008 - Galileo Press Dem Videotraining liegt eine WPF DVD-Verwaltung als Beispielapplikation bei, anhand derer ich verschiedene Programmierungsaspekte aufzeige. Die Beispielapplikation kann nach Herzenslust erweitert werden. Ich würde mich diesbezüglich sogar sehr über Rückmeldungen freuen, um ggf. über etwaige Erweiterungen zu diskutieren.

Wer möchte kann sich aus dem Videotraining ein paar Beispielkapitel online ansehen.

Vielen Dank noch mal an das nette Team von Galileo Press, welche bei Fragen immer für mich da waren! Danke auch für das gesunde Essen bei euch vor Ort (kleiner Insider) und die Kicker-Lektionen! ;)

Außerdem möchte ich Karim und Timo für ihre Unterstützung danken! Danke Jungs!

Links:

Kaxaml ab sofort mit Silverlight-Unterstützung

27.01.2009 08:02:04 | Norbert Eder

Kaxaml ist ein kleiner und ressourcenschonender Editor für XAML. Dieser steht in einer aktualisierten Version zur Verfügung und bietet und auch Unterstützung für Silverlight 2. Vor allem für kleinere Aufgaben, wie dem Erstellen von Beispielen bzw. Demo-Anwendungen bietet dieses Werkzeug eine hervorragende Unterstützung. Quelle:...

VSTO Open Space auf der VSone

27.01.2009 07:11:00 | Lars Keller

Ich werde am 11.02.09 zusammen mit Mario Meir-Huber einen Open Space zum Thema VSTO auf der VSone Konferenz leiten. Was ist ein Open Space?

Open Space (englisch für „geöffneter, offener oder auch weiter Raum“) oder Open Space Technology ist eine Methode zur Strukturierung von Besprechungen und Konferenzen. Sie eignet sich für Gruppen von etwa 12 bis 2000 Teilnehmern. (s. Wikipedia)

Ziel eines Open Space ist es eine intensive Diskussion unter den Teilnehmern zu fördern, wobei diese sich die Diskussionsthemen aussuchen können, bzw. diese selber vorschlagen können. Mario und ich sind als VSTO Experten dabei und sprechen gern über jegliche Ideen, Fragen, Geschäftsprozesse oder anderweitige Dinge zum Thema MS Office.

Um am Open Space teilzunehmen, wird nur ein Ticket für die VSone benötigt, bzw. das Exhibition-Ticket, welches Interessierten eine kostengünstigere Möglichkeit bietet.

Wir sehen uns auf der VSone! :-)

Update: VSone – Open Space

Neues vom Service Pack 2 für Office 2007

27.01.2009 00:27:03 | Lars Keller

Das Service Pack 2 für Office 2007 wird zwischen Februar und Aprill 2009 erscheinen und enthält diese Neuerungen:

For Office Desktop Programs:
· Improved Outlook Calendaring Reliability
· Improved Outlook Performance
· Enabling Object Model support for Charts in PowerPoint and Word
· Improved cryptographic functionality by supporting all cryptographic algorithms offered by the operating system
· Improved functionality in Excel’s charting mechanism
· Ability to ungroup SmartArt graphics (and as a result, the ability to add animations to them in PowerPoint)
· Ability for Visio to export UML models to an XML file compliant with the XMI standard
· Tool that enables the uninstall of Office client Service Packs

For Servers:
· Performance and manageability improvements to variations in Enterprise Content Management (ECM) including STSADM commands for repairing links between source and target pages
· Improvements around processing status approvals from Office Project Web Access into Office Project Professional 2007
· Improvements to read-only content databases and index rebuild timer jobs in Windows SharePoint Services 3.0

Links:

Mein Videotraining Visual C# 2008 ist erschienen

27.01.2009 00:14:00 | Lars Keller

Seit ein paar Tagen ist mein Videotraining Visual C# 2008 – Der umfassende Einstieg beim Galileo Press Verlag erschienen. Das Training richtet sich an Einsteiger und Umsteiger, die gern wissen möchten, was man alles mit C# schönes programmieren kann. Ich erkläre die Grundlagen, erweiterte Grundlagen sowie verschiedene Aspekte aus den Themen: LINQ, WPF, ADO.NET, Webservice, Debugging, Refactoring, etc. …

Videotraining Visual C# 2008 - Galileo Press Dem Videotraining liegt eine WPF DVD-Verwaltung als Beispielapplikation bei, anhand derer ich verschiedene Programmierungsaspekte aufzeige. Die Beispielapplikation kann nach Herzenslust erweitert werden. Ich würde mich diesbezüglich sogar sehr über Rückmeldungen freuen, um ggf. über etwaige Erweiterungen zu diskutieren.

Wer möchte kann sich aus dem Videotraining ein paar Beispielkapitel online ansehen.

Vielen Dank noch mal an das nette Team von Galileo Press, welche bei Fragen immer für mich da waren! Danke auch für das gesunde Essen bei euch vor Ort (kleiner Insider) und die Kicker-Lektionen! ;)

Außerdem möchte ich Karim und Timo für ihre Unterstützung danken! Danke Jungs!

Links:

SQL Server Management Studio und Vista: Fehler 29506

26.01.2009 18:03:08 | Norbert Eder

Nachdem es mir heute mein SQL Server Management Studio Express zerrissen hat konnte nur mehr ein Uninstall und ein Reinstall helfen. Denkste! Die Neuinstallation endete nach kompletten Durchlauf im Fehler 29506. Mit ein wenig Recherche (man glaubt gar nicht, wie viele dieses Problem noch haben) kam ich auf die Lösung - eigentlich...

[[ This is a content summary only. Visit my website for full links, other content, and more! ]]

Updates in eigener Sache

26.01.2009 17:02:50 | Lars Keller

Es war etwas still in letzter Zeit auf meinem Blog, viel Privat- und Businesskram, wie das halt immer so ist. Aber ein neues Jahr bringt immer frischen Wind. ;-)

Letztes Jahr bin ich viel in User Groups mit dem Thema VSTO unterwegs gewesen, auch in diesem Jahr geht meine User Group Tour weiter, die ersten Termine stehen schon fest.

09.02.2009 DNUG Regensburg
26.03.2009 DNUG Nürnberg

Weitere Termine sind in Planung. Wer Interesse an einem Vortrag für seine User Group hat, soll sich einfach bei mir melden. Wenn ich Zeit habe, komme ich gern vorbei.

Des Weiteren bin ich auf der BASTA! Spring mit zwei Vorträgen und einem Workshop „VSTO in der Praxis“ dabei. Den Workshop werde ich zusammen mit Karim leiten.

23-27.02.2009 BASTA! Spring

Es wird dieses Jahr auch noch ein paar mehr Projekte zum Thema Office Entwicklung geben, lasst euch überraschen! ;-)



This weblog is sponsored by netcreate OHG.

Updates in eigener Sache

26.01.2009 16:02:50 | Lars Keller

Es war etwas still in letzter Zeit auf meinem Blog, viel Privat- und Businesskram, wie das halt immer so ist. Aber ein neues Jahr bringt immer frischen Wind. ;-)

Letztes Jahr bin ich viel in User Groups mit dem Thema VSTO unterwegs gewesen, auch in diesem Jahr geht meine User Group Tour weiter, die ersten Termine stehen schon fest.

09.02.2009 DNUG Regensburg
26.03.2009 DNUG Nürnberg

Weitere Termine sind in Planung. Wer Interesse an einem Vortrag für seine User Group hat, soll sich einfach bei mir melden. Wenn ich Zeit habe, komme ich gern vorbei.

Des Weiteren bin ich auf der BASTA! Spring mit zwei Vorträgen und einem Workshop „VSTO in der Praxis“ dabei. Den Workshop werde ich zusammen mit Karim leiten.

23-27.02.2009 BASTA! Spring

Es wird dieses Jahr auch noch ein paar mehr Projekte zum Thema Office Entwicklung geben, lasst euch überraschen! ;-)

Windows 7 – Der Selbstversuch

26.01.2009 15:25:43 | Gordon Breuer

Die Entscheidung

Windows7TaskbarExtLogo Der Vista-Nachfolger von Microsoft ist derzeit in aller Munde. Nicht nur bei Entwicklern sondern auch bei 08/15-Anwendern fand das derzeitige Beta-Release auf die Festplatten der heimischen PCs. Von schneller, stabiler und schlanker ist die Rede. Wie dem auch sei, ich bin mit Vista durchaus zufrieden und kann mich weder über Abstürze noch Inkompatibilitäten oder Geschwindigkeits-probleme beklagen. Aber gegen das subjektive Empfinden des Mobs ist ja sowieso kein Kraut gewachsen.

So zufrieden ich aber auch mit Vista bin, neugierig bin ich natürlich ebenso. Und als Entwickler hat man ja fast schon keine Wahl als sich mit den Technologien der Zukunft zu beschäftigen um möglichst frühzeitig reagieren zu können. Sind meine selbst entwickelten Anwendungen noch kompatibel mit dem zukünftigen Betriebssystem der Redmonder? Was gibt es an neuen Funktionen und Möglichkeiten von denen ich – und meine Anwender – eventuell profitieren kann? Berichte und Blogartikel findet man zahlreich wenn man sich informieren möchte, aber um einen Selbstversuch kommt man am Ende dann doch nicht drumherum.

Eine Fehlgeburt

Windows-EKG Von den vielen positiven Berichten ermutigt bin ich dann auch gleich aufs ganze gegangen: Mein Rechner zu Hause, bisher unter Vista am laufen, sollte auf Windows 7 umgestellt werden. Für den Fall eines Totalausfalls habe ich vorher ein Komplett-Backup meiner Hauptpartition angelegt, Benutzerdaten & co. liegen sowieso auf einer zweiten Datenpartition. Doch der erste Installationsversuch scheitert kläglich. Ich habe das Setup unter Vista gestartet um ein Upgrade durchzuführen. Im Zweifel spart mir das die Neuinstallation und –konfiguration sämtlicher Programme. Der Kompatibilitäts-Scan dauert beinahe eine halbe Stunde und findet schließlich ein mögliches Problem: Mein Canon Pixma 3000 soll angeblich nicht unterstützt werden. Nicht besonders erfreulich, aber vorläufig verschmerzbar. Das Kopieren der Dateien dauert weitere 20 Minuten bis das Setup schließlich einen Neustart durchführen möchte.

Beim Hochfahren bewunder ich zum ersten mal das neue, pulsierende Startlogo. Windows 7 lebt! Doch plötzlich: Kammerflimmern – Null-Linie. Das Pulsieren friert ein, die Festplattenaktivität hört auf und übrig bleibt nur der leblose, noch während der Geburt verstorbene, Patient Nummer 7. Einziges Trostpflaster: Bei einem Neustart hat das Setup offenbar die soeben verunglückte Geburt bemerkt und macht brav ein vollständiges Rollback. Nach einem weiteren POST-Piep des Bios startet wieder das gute alte Vista und von Windows 7 ist auf den Festplatten nichts mehr zu finden. Mehr…

Silverlight-Linktipps

26.01.2009 14:02:00 | Lori Grosland

Mein Kollege Steffen Ritter hat sich im Flieger gelangweilt und eine Liste frischer Linktipps zu Silverlight zusammengestellt, u.a. zum Einsatz von Micros/Webcams unter Silverlight, Silverlight-Programmierung mit Python, Businessanwendungen mit Silverlight entwickeln, SharePoint und Silverlight, Silverlight-SEO (Search Engine Optimization), Spieleprogrammierung in Silverlight und und und…
Zu finden in seinem Blog unter http://blogs.msdn.com/steffenr/archive/2009/01/25/silverlight-ticker-mikrofon-video-zugriff-popups-obama-photosynth-python-sharepoint-und-mehr.aspx

Handschuh auf Touchscreen Tastatur gelegt – Wie vermeide ich ein ständiges Neuladen?

26.01.2009 13:34:00 | Michael Schwarz

Vor einiger Zeit hatten wir ein Problem, dass immer wieder mal eine sehr Hohe Auslastung auf einem Web Server zu verzeichnen war. Beim Analysieren der Logdateien stellte sich heraus, dass es sich um ein Windows XP Embedded handelte. Nach langem Hin und Her konnte ich das Problem eingrenzen, und nach weiteren Wochen dann auch finden.

Problem war, dass ein Fahrer eines Gabelstapler mit integriertem Touchscreen und Windows XP Embedded seine Handschuhe genau auf die F5 Taste gelegt hat. Wer das mal ausprobiert hat, stellt schnell fest, dass dadurch Tausende http Aufrufe gestartet werden, der Web Browser sich aber nicht um die Antwort schert.

Nun, wie konnte man dieses Problem schnell in den Griff bekommen? Richtig, mit einem IHttpModule, welches alle Zugriffe überwacht, und im richtigen Moment dann anstatt dem Original Source Code ein kleines JavaScript mit einem alert(…) zurückliefert. Warum ein alert(…)? Weil man das mit der Maus/Touchscreen oder mir der Eingabetaste bestätigen muss.

Hier ein Auszug aus dem IHttpModule:

public class DosAttackModule : IHttpModule
{
    // ...

    void IHttpModule.Init (HttpApplication context)
    {
        context.BeginRequest += 
new EventHandler (context_BeginRequest); } private void context_BeginRequest (
object sender, EventArgs e) { HttpRequest request = HttpContext.Current.Request; string ip = request.UserHostAddress; string page = request.PhysicalPath.ToLower () .Replace (request.MapPath("~/")
.ToLower (), "").Replace ("\\", "/"); if (!page.EndsWith (".aspx")) // only log ASPX files return; string key = ip + "_" + page; if (_Banned.Contains (key)) { HttpContext.Current.Response.StatusCode = 403; HttpContext.Current.Response.Write (@"<html> <head><title>Error</title></head> <body onload=""alert('Your browser has made too many requests per second, probably by a malfunction.');document.location.reload();""> </body> </html>"); HttpContext.Current.Response.End (); } CheckIpAddress (key); } // ... }
.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; }

Wenn jetzt F5 zu oft gedrückt wird (CheckIpAddress), dann steckt in der Liste _Banned die IP Adresse, hier zusätzlich noch der Seitenname. Erscheint der Dialog muss man 5 Sekunden warten, erst dann ist die IP Adresse aus der Liste entfernt worden.

Frische Silverlight-Linktipps zu Mikrofon/Video-Zugriff, PopUps, Obama/Photosynth, Python, SharePoint und mehr

26.01.2009 08:54:15 | Oliver Scheer

Kollege Steffen Ritter hat sich im Flieger gelangweilt und eine Liste frischer Linktipps zu Silverlight zusammengestellt, u.a. zum Einsatz von Micros/Webcams unter Silverlight, Silverlight-Programmierung mit Python, Businessanwendungen mit Silverlight entwickeln, SharePoint und Silverlight, Silverlight-SEO (Search Engine Optimization), Spieleprogrammierung in Silverlight und und und…
Zu finden in seinem Blog unter http://blogs.msdn.com/steffenr/archive/2009/01/25/silverlight-ticker-mikrofon-video-zugriff-popups-obama-photosynth-python-sharepoint-und-mehr.aspx

Updates in eigener Sache

26.01.2009 07:02:05 | Lars Keller

Es war etwas still in letzter Zeit auf meinem Blog, viel Privat- und Businesskram, wie das halt immer so ist. Aber ein neues Jahr bringt immer frischen Wind. ;-)

Letztes Jahr bin ich viel in User Groups mit dem Thema VSTO unterwegs gewesen, auch in diesem Jahr geht meine User Group Tour weiter, die ersten Termine stehen schon fest.

09.02.2009 DNUG Regensburg
26.03.2009 DNUG Nürnberg

Weitere Termine sind in Planung. Wer Interesse an einem Vortrag für seine User Group hat, soll sich einfach bei mir melden. Wenn ich Zeit habe, komme ich gern vorbei.

Des Weiteren bin ich auf der BASTA! Spring mit zwei Vorträgen und einem Workshop „VSTO in der Praxis“ dabei. Den Workshop werde ich zusammen mit Karim leiten.

23-27.02.2009 BASTA! Spring

Es wird dieses Jahr auch noch ein paar mehr Projekte zum Thema Office Entwicklung geben, lasst euch überraschen! ;-)

Schneller finden mit keyboardr.com

25.01.2009 20:55:00 | Peter Bucher

Albert hat es schon geschrieben und ich versuche es nur auch mal damit :)

http://www.keyboardr.com/ reagiert sofort bei der Eingabe eines Wortes (oder des nächsten) mit der Suche.
Angezeigt werden Ergebnisse von Google, Google Bilder, Wikipedia und Youtube.

Über die Pfeiltasten kann innerhalb der Ergebnisse navigiert werden und per Druck auf die Enter Taste kann ein Ergebnis in einem neuen Fenster geöffnet werden und sie Suche ohne Pause weitergehen.

Bei mir im Moment die Startseite. Mal schauen wie sich das bewährt.

ps: Weiss jemand wie man die Suchergebnisse in einem Tab öffnen kann (IE)?

Danke für den Tip Albert, über die Tab-Einstellungen im IE gehts natürlich wunderbar.

Silverlight-Links: Mikrofon/Video-Zugriff, PopUps, Obama/Photosynth, Python, SharePoint und mehr

25.01.2009 13:27:00 | Steffen Ritter

…eine Sammlung aktueller Infos rund um Silverlight, die ich gestern auf dem Rückweg von der Microblogging Conference aus Twitter und anderen Quellen zusammengestellt habe:

Soviel für heute, schönen Restsonntag. Ich geh jetzt in die Sonne.

Fehler der Datenbindung schnell finden

25.01.2009 10:02:54 | Norbert Eder

Wer Datenbindung in seinen WPF-Anwendungen häufig benötigt, wird kennen, wie mühsam die Suche nach einem Fehler sein kann. Dabei bietet das .NET Framework hilfen, um derartigen Fehlern schnell auf die Spur zu kommen. Ganz ohne Tools. Im .NET Framework 3.5 gibt es die Klasse PresentationTraceSources aus dem Namespace System.Diagnostics. Dieses...

[[ This is a content summary only. Visit my website for full links, other content, and more! ]]

Bist du es leid für andere nach Lösungen zu suchen?

23.01.2009 17:39:28 | Norbert Eder

Bist du in der Community aktiv? Dann werden die Fragen, die sehr schnell durch eine Suche in der bevorzugten Suchmaschine beantwortet werden könnten, ein gewisses Frustpotential aufwerfen. Bekannt? Wenn ja, dann empfehle ich den nachfolgenden Link: http://letmegooglethatforyou.com/ Wie es funktioniert, zeigt dieser...

[[ This is a content summary only. Visit my website for full links, other content, and more! ]]

MSDN Flash: Auch 2009 immer auf dem neuesten Stand

23.01.2009 16:56:36 | Kay Giza

Eher ein Posting in eigener Sache, denn ich habe z.B. am CLIP Open Day erfahren, dass man u.a. den Newsletter für Entwickler von Microsoft noch bekannter machen sollte.
Also daher hier der Hinweis, wer auch im neuen Jahr regelmäßig kompakt über MSDN Deutschland und alle Aktivitäten rund um die Entwicklungsplattform von Microsoft informiert werden möchte, ist beim MSDN Flash an der richtigen Stelle. Einfach kostenfrei anmelden und Sie bekommen alle zwei Wochen gebündelt die wichtigsten Informationen, News, Downloads, Webcast, Fachartikel, Codeclips, Security-Hinweise, Veranstaltungs- und Community-Termine sowie Buchtipps kostenlos in ihr E-Mail-Postfach geliefert.

Einfacher geht's nicht ;-) - also die Informationsversorgung

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-2009 Kay Giza. All rights reserved. Legal

Neuigkeiten vom Silverlight Developer Center

23.01.2009 15:55:00 | Steffen Ritter

Nachdem die deutsche Expression Studio-Homepage endlich in aktualisiertem Glanz erstrahlt kommt gerade mein Kollege Kay Giza (seines Zeichens der Mastermind hinter dem deutschen MSDN) mit einer weiteren guten Nachricht… Originalton folgt: 

„Das deutschsprachige Developer Center für Silverlight darf sich über ein Update freuen. Nachdem die Produktgruppe uns die Hoheit (als allerletzte Seite auf MSDN die wir nicht anfassen durften) gegeben hat, habe wir sie aktualisiert. Sämtliche Inhalte wurden an aktuelle Versionen und den Entwicklungstand des Browser-Plug-Ins angepasst. Interessierte finden dort nun alle wichtigen Tools, Downloads, Informationen sowie Verweise zu weiteren Silverlight-Quellen. Natürlich dürfen Steffen und Olivers Weblog nicht fehlen sowie weitere Community-Inhalte. Mehr auf http://www.msdn-online.de/Silverlight

Und ganz frisch im Silverlight Developer Center erschienen: Silverlight: Erstellen von Branchenanwendungen für Unternehmen mit Silverlight, Teil 1: Unternehmen Sie eine Entdeckungsreise durch die Erstellung einer Callcenter-Clientanwendung, um zu erfahren, wie Sie mithilfe von Silverlight Unternehmenslösungen erstellen können.“

Gruß von der http://www.mbc09.de/; over und out (PS: Das Wetter in HH ist gruselig, aber das war die Reise wert…)

Konfiguration per configSource-Attribut auslagern

22.01.2009 19:18:00 | Peter Bucher

Eine web.config- oder app.config-Datei kann mit der Zeit ziemlich gross und unübersichtlich werden.
.NET bietet hierfür aber eine Lösung per configSource-Attribut.

Ein normaler Konfigurationsabschnitt für HttpHandlers sieht so aus:

[…]
<httpHandlers>
    <add verb="GET" path="Download.axd" type="Project.Downloads.DownloadHandlerFactory"/>
</httpHandlers>
[…]

Wenn dieser Teil ausgelagert werden will, reicht dann diese Notation in der web.config:

<httpHandlers configSource="Configuration\HttpHandler.config" />

Die HttpHandler.config in einem Verzeichnis oberhalb des Roots sieht dann bspw. so aus:

<httpHandlers>
    <add verb="GET" path="Download.axd" type="Project.Downloads.DownloadHandlerFactory"/>
</httpHandlers>

Für eigene Konfigurationsabschnitte kann genau gleich vorgegangen werden.
Zusätzlich gibt es da noch die Möglichkeit per restartOnExternalChanges-Attribut das auf false gesetzt ist und innerhalb der <configSections><section …. platziert werden muss, festgelegt werden ob die Applikation neu starten soll wenn die externe Konfigurationsdatei geändert wurde.

Das ist eine gute Möglichkeit per Laufzeit Einstellungen zu wechseln.
Jedoch sollte man abschätzen wie kritisch die Änderungen sind und ob der Zugriff darauf die Applikation in einen undefinierten Zustand bringen könnten.
Um das zu verhindern, müsste ggf. ein Locking-Mechanismus implementiert werden.

Die möglichen Vorteile bei der Nutzung dieser Möglichkeit:

  • Bessere Übersichtlichkeit
  • Ermöglicht einfaches Austauschen von Teilen der Konfiguration (Bspw. Developer- und Productivemaschinen haben verschiedene Connectionstrings)
  • Gibt die Möglichkeit Änderungen während der Laufzeit auszuführen

Unbekanntes Visual Studio Feature: Gleiche Datei doppelt in der Editoransicht darstellen

22.01.2009 18:49:18 | Peter Bucher

Visual Studio überrascht immer wieder aufs neue, so ist es mir heute ergangen.
Wenn innerhalb einer Datei zwei Stellen verglichen werden müssen, ist es mühsam immer von oben nach unten und vice versa zu scrollen.

Um das zu vermeiden gibt es einen einfachen Trick, oberhalb der vertikalen Scrolleiste hat es ein kleines Viereck das mit der Maus nach unte gezogen werden kann.

Die Benutzung:

notopen

Das Resultat:

open

ASP.NET MVC: Keine Präsentations-Belange im Controller

22.01.2009 18:38:00 | Sebastian Jancke

Als ich heute diesen Blogpost laß, kam mir unweigerlich folgender Gedanke:

Was hat man uns mit den ASP.NET MVC Beispielen angetan?

Das Problem: Der Titel einer HTML-Seite ist ein Präsentations-Belang der nur durch die View gesteuert und gesetzt werden sollte. Ein Controller sollte nichts darüber wissen. Oren Eini hatte bereits vor einiger Zeit darauf hingewiesen. Aber was nützt es, wenn erst einmal ein schlechtes Beispiel von vielen gelesen worden ist. Da heißt es wohl: dagegen anschreiben.

Ich gebe zu, dies in ersten Tests auch aus den Beispielen übernommen zu haben. Mittlerweile bin ich aber dazu übergegangen, sämtliche vorgeschlagenen Modifikationen umzusetzten. Dies bedeutet, das ViewData.Model passé ist, ViewData der Controller nicht mehr nutzbar ist und Titel durch die View gesetzt werden (durch asp:Content). Somit sind Präsentations- und Kontroll-Belange sauber getrennt und das Modell nur noch streng typisiert verfügbar.

ViewData.Model.SiteMasterViewData.Title

ist jenseits von Clean Code und Lesbarkeit. Letzteres ist es schließlich für mich, was sauberen Code vor allem ausmacht.

ShineDraw.com & Project Rosetta Stone: Codesnippets und Beispiele für den leichten Umstieg von Flash zu Silverlight

22.01.2009 16:03:23 | Steffen Ritter

Flashprofi Terence Tsang führt unter www.shinedraw.com eine Website auf der er typische Einsatzbeispiele für Flash-Animationen als Silverlight-Anwendungen entwickelt; alle Beispiele sind jeweils sowohl für Flash als auch für Silverlight im Quellcode zum Download verfügbar. Keine Sorge, ich will jetzt gar nicht näher darauf eingehen dass Flash und Silverlight grundsätzlich zwei sehr unterschiedliche Technologien sind, mit denen sich allerdings in manchen Bereichen ähnliche Ergebnisse erzielen lassen (wenn auch auf unterschiedlichen Wegen und mit unterschiedlichen Möglichkeiten was beispielsweise die angebundene Plattform betrifft… aber ich schweife ab..). Sondern nur auf die gelungene Seite hinweisen, auf der speziell Entwickler mit Erfahrung im Bereich Flash sehr viele Hilfen für den Einstieg in die Silverlight-Entwicklung finden: http://www.shinedraw.com/flash-vs-silverlight-gallery

Einen sehr ähnlichen Ansatz verfolgt die Seite „Project Rosetta Stone – from Flash to Silverlight“: http://channel9.msdn.com/continuum/tutorials/. Rosetta Stone ermöglicht Designern und Entwicklern einen einfachen Einstieg in Silverlight auf Basis ihrer vorhandenen Kenntnisse (beispielsweise aus der Flash-Entwicklung).

Und mein US-Kollege Scott Barnes hat vor einiger Zeit eine Seite namens Project Harmony online gestellt, in der er Kombinationen aus Flash und Silverlight zusammenfügt, um die Vorteile beider Runtimes zu nutzen, so beispielsweise die überlegenen Videofunktionen von Silverlight mit den Bitmapfiltern, die teilweise derzeit noch nicht in Silverlight implementiert sind: http://www.demo.members.winisp.net/poc1

Ach ja, ich bin übrigens morgen (Freitag 22. Januar 2009) auf der Microblogging Conference in HH, sonst noch jemand?

Einfache Messungen der Performance

22.01.2009 09:23:28 | Norbert Eder

Es ist schon lange her, da hatte ich im Beitrag Zeitmessung einfach gemacht auf die Klasse Stopwatch hingewiesen. Da nach wie vor sehr viele Entwickler diese Möglichkeit der sehr einfachen Messung nicht kennen, möchte ich nochmals darauf hinweisen. Gerade beim Vergleich von Codestücken oder bei der Erhebung von Zeiten an bestimmten Stellen...

[[ This is a content summary only. Visit my website for full links, other content, and more! ]]

MSDN Premium Abo gewonnen – 7 glückliche Gewinner

22.01.2009 09:18:00 | Michael Schwarz

Heute morgen war es dann so weit, diejenigen, die einen Kommentar hinterlegt hatten, wurden per C# und Random.Next() zu glücklichen Gewinnern eines MSDN Premium Abos, mehreren Visual Studio 2008 Standard Versionen als auch einer Visual Studio 2005 Standard:

string[] list = new string[] {
    "Rainer Schuster",
    "Bernd Hengelein",
    "romanp",
    "Christoph Schmid",
    "plantagoo",
    "Jürgen",
    "Hendrik"
};

List<string> products = new List<string>(new string[] {
    "MSDN Premium",
    "Microsoft Expression",
    "Visual Studio 2008 Standard",
    "Visual Studio 2008 Standard",
    "Visual Studio 2008 Standard",
    "Visual Studio 2008 Standard",
    "Visual Studio 2005 Standard"
});

foreach (string name in list)
{
    int i = new Random(DateTime.Now.Millisecond)
.Next(0, products.Count); Console.WriteLine(name + " => " + products[i]); products.RemoveAt(i); }
.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; }

 

Und hier die glücklichen Gewinner:

image

Beim nächsten .NET Usergroup Franken Treffen werde ich die Software mitbringen; wer schon vorab sein Gewinn haben möchte, schickt mir einfach eine E-Mail, das regeln wir dann…

Da ich die Bücher mangels Beteiligung nicht verlost habe, bringe ich diese auch bei den nächsten Treffen mit.

Und für alle, die das Gewinnspiel verpasst haben: es gibt bald wieder ein MSDN Premium Abo zu gewinnen!!

HowTo: Dynamischen Content auf ASP.NET MVC Masterpages bringen

22.01.2009 02:31:42 | Robert Mühsig

In fast jedem ASP.NET Projekt wird es eine Masterpage geben und diese wird was "dynamisches" Anzeigen - sei es eine Tagcloud oder allein der Seitentitel. Allerdings ist sowas im MVC Sinne nicht ganz trivial. Ich arbeite gerade in einem kleinen Projekt mit dem ASP.NET MVC Framework über das ich schon ab und an mal gebloggt habe.

(more…)

ShareThis

Update vom deutschen INETA Speakers Bureau

21.01.2009 18:32:43 | Lars Keller

Ich wollte mal wieder ein Update zum INETA Speakers Bureau geben. Im letzten Jahr wurde insgesamt 26 Mal ein Speaker zu den User Groups geschickt und in diesem Jahr sind es schon 8 Anträge.

Auch in diesem Jahr steht wieder allen User Groups die Möglichkeit offen, Sprecher, die im INETA Sharepoint gelistet sind, zu buchen - natürlich nur solange wie das Budget reicht.

Es haben nicht alle INETA User Groups die Möglichkeit wahrgenommen, einen Sprecher beim Speakers Bureau zu buchen, so dass wir nun wieder auch den User Groups die Möglichkeit bieten wollen, einen Speaker zu buchen, welche die drei Speaker schon voll hatten. Ab jetzt können wieder alle User Groups max. 3 Speaker buchen.

Somit können wir auf eine sehr positive Bilanz zurück blicken und ich freue mich in diesem Jahr den Austausch unter den User Groups weiter zu fördern!



This weblog is sponsored by netcreate OHG.

Update vom deutschen INETA Speakers Bureau

21.01.2009 17:32:43 | Lars Keller

Ich wollte mal wieder ein Update zum INETA Speakers Bureau geben. Im letzten Jahr wurde insgesamt 26 Mal ein Speaker zu den User Groups geschickt und in diesem Jahr sind es schon 8 Anträge.

Auch in diesem Jahr steht wieder allen User Groups die Möglichkeit offen, Sprecher, die im INETA Sharepoint gelistet sind, zu buchen - natürlich nur solange wie das Budget reicht.

Es haben nicht alle INETA User Groups die Möglichkeit wahrgenommen, einen Sprecher beim Speakers Bureau zu buchen, so dass wir nun wieder auch den User Groups die Möglichkeit bieten wollen, einen Speaker zu buchen, welche die drei Speaker schon voll hatten. Ab jetzt können wieder alle User Groups max. 3 Speaker buchen.

Somit können wir auf eine sehr positive Bilanz zurück blicken und ich freue mich in diesem Jahr den Austausch unter den User Groups weiter zu fördern!

Das nervt – CSS Probleme mit border-collapse:collapse

21.01.2009 16:10:00 | Michael Schwarz

Da haben wir Jahrelang die CSS Formatierungen für Tabellen versucht ordentlich zu machen, und jetzt kommt der RC1 vom Internet Explorer 8, und es gibt neue Probleme.

Beispiel:

<style type="text/css">
td
{
background-color:#D2D2D2;
border-left:15px solid black;
height:60px;width:60px;
} td.test
{
border-left:15px solid blue;
} </style> <table cellpadding="0" cellspacing="0"
border="0" style="border:15px solid green;"> <tr> <td class="test">Test</td> <td>Test</td> <td class="test">Test</td> <td class="test">Test</td> <td class="test">Test</td> <td>Test</td> <td>Test</td> </tr> </table>

Na, das ist ja echt super einfach, ich liebe es. Nebenbei sei erwähnt, dass man das über die Web Oberfläche auch sehr einfach machen kann, wenn auch nicht automatisiert. Dort klickt man im Posteingang auf Alle markieren, dann auf Wählen sie alle 3585 Konversationen in Posteingang, und dann weiter auf Löschen, geht natürlich noch schneller.

image

Alle E-Mails bei Google Mail löschen – SSL mit .NET

21.01.2009 16:10:00 | Michael Schwarz

In einem E-Mail Konto bei Google Mail wollte ich alle E-Mails löschen, aber wie macht man das in .NET? Google verlangt eine SSL Verbindung, also muss ich mir doch mal den SslStream im Namensraum System.Net.Security anschauen. Eigentlich ist es super einfach, denn man benutzt einfach den SslStream, der den Stream vom TcpClient kapselt, außen sieht das dann genauso aus wie ein normaler Stream.

TcpClient c = new TcpClient("pop.gmail.com", 995);
SslStream ssl = new SslStream(c.GetStream(), false, 
    new RemoteCertificateValidationCallback
(ValidateServerCertificate), null); ssl.AuthenticateAsClient("pop.gmail.com"); // ab hier ist es dann wieder gleich Console.WriteLine(ReadMessage(ssl));
byte[] message =
Encoding.ASCII.GetBytes("USER benutzer@gmail.com\r"); ssl.Write(message); Console.WriteLine(ReadMessage(ssl));
message = Encoding.ASCII.GetBytes("PASS **********\r");
ssl.Write(message);
Console.WriteLine(ReadMessage(ssl));
// ...
.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; }

Na, das ist ja echt super einfach, ich liebe es. Nebenbei sei erwähnt, dass man das über die Web Oberfläche auch sehr einfach machen kann, wenn auch nicht automatisiert. Dort klickt man im Posteingang auf Alle markieren, dann auf Wählen sie alle 3585 Konversationen in Posteingang, und dann weiter auf Löschen, geht natürlich noch schneller.

image

SocketException ErrorCode 10035 – Ein Switch war dran schuld!

21.01.2009 15:10:00 | Michael Schwarz

tahoe-ii Ein Kunde hat ein Problem mit dem .NET Micro Framework und einem Tahoe-II Board. In einem Beispielprojekt wird auf einen Web Server zugegriffen, um den HTML Quelltext herunterzuladen, eigentlich eine ganz einfache Aufgabe. Im Microsoft Emulator als auch in den Tahoe/Tahoe-II Emulatoren klappt das alles einwandfrei, nur eben nicht mit der echten Hardware. Folgenden Fehler zeigt das Visual Studio bei socket.Connect():

#### Exception System.Net.Sockets.SocketException - E_FAIL (1) ####
#### Microsoft.SPOT.Net.SocketNative::poll [IP: 0000] ####
#### System.Net.Sockets.Socket::Poll [IP: 0011] ####
#### System.Net.Sockets.Socket::Connect [IP: 0029] ####
#### NetworkTester.Program::Main [IP: 00f7] ####
#### SocketException ErrorCode = 10035
Eine Ausnahme (erste Chance) des Typs "System.Net.Sockets.SocketException" ist in Microsoft.SPOT.Net.dll aufgetreten.
#### SocketException ErrorCode = 10035
#### SocketException ErrorCode = 10035
#### SocketException ErrorCode = 10035
SocketException: Exception was thrown: System.Net.Sockets.SocketException Error-code: 10035
Der Thread 0x1 hat mit Code 0 (0x0) geendet.
Das Programm "[13] Micro Framework application: Verwaltet" wurde mit Code 0 (0x0) beendet.

Das gleiche Beispielprojekt läuft bei mir aber einwandfrei. Nach ein paar anderen Tests haben wir’s dann doch noch gefunden, es lag am Switch, an dem das Tahoe-II Board angeschlossen war. Da die Boards nur einen 10 MBit Anschluss haben, könnte es auch an der Erkennung als 10 MBit liegen. Switch durch einen anderen ausgetaucht, und schon klappt alles.

jQuery Upgrade von 1.1 auf 1.3 – Zwei wichtige Änderungen

21.01.2009 11:59:00 | Michael Schwarz

Wer noch mit einer etwas älteren jQuery Version arbeitet (in meinem Fall ist es die Version 1.1 aus dem Jahr 2007), der muss beim Upgrade auf die aktuelle Version 1.3 etwas aufpassen. Folgende zwei Änderungen sind mir aufgefallen:

  • Attribute im Selektor werden jetzt nicht mehr mit @ geschrieben, also aus $(“div[@attr=hans]”) wird $(“div[attr=hans]”).
  • Ein untergeordnetes Element konnte man früher mit einem Slash angeben: $(“div/b”), also alle B-Tags, die direkt unter einem DIV-Tag liegen. In der aktuellen Version schreibt man dafür dann $(“div > b”), das übrigens auch schon früher so ging.

Es gibt bestimmt noch mehr Inkompatibilitäten, aber das sind die, die mir bei allen Projekten aufgefallen sind. Wer schon mit der Version 1.2 arbeitet, ist bereits aus dem Schneider.

Microsoft Entwicklungsprodukte kostenlos – jetzt auch für Schüler!

21.01.2009 11:50:00 | Michael Schwarz

imageMicrosoft bietet nun das kostenlose DreamSpark Programm nicht nur für Studierende an, sondern nun auch für Schüler.

Was ist DreamSpark? DreamSpark stellt Schülern und Studierenden professionelle Microsoft Entwickler- und Design Tools kostenlos zur Verfügung, so dass sie Ihr volles Potential entfalten können und die Möglichkeit haben den nächsten großen Durchbruch in der Technologie mitgestalten zu können. Microsoft möchte Schüler und Studierende fit für die Zukunft machen und mit diesem Programm ihre schulische und berufliche Karriere unterstützen.

Wer kann daran teilnehmen? DreamSpark ist für Millionen von Schülern und Studierenden auf der ganzen Welt verfügbar. Die Liste der teilnehmenden Länder wächst jeden Monat weiter und kann während des Verifizierungsprozesses eingesehen werden. Solltest Du nicht in einem der gelisteten Länder wohnen, sieh bitte einfach immer wieder mal nach, da wir das ganze Jahr über immer mehr Länder hinzufügen.

Unter den Produkten ist Visual Studio 2008 Professional Edition, Windows Server 2008 Standard, SQL Server 2008 Developer, Microsoft Expression Studio 2, xna Game Studio 2.0, und auch die z.B. für .NET Micro Framework 2.5 noch benötigte Visual Studio 2005 Professional Edition.

So, dann muss ich mal bei unserer Grundschule nachfragen… ob Erstklässler auch an die Entwickler- und Design Tools rankommen?

Und für alle Nicht-Schüler/-Studierende, bei mir gibt’s ja auch noch bis heute Abend ein MSDN Abo zu gewinnen.

Erster .NET Stammtisch Konstanz-Kreuzlingen

21.01.2009 11:00:00 | Peter Bucher

 

Da es in der Region um Konstanz und Kreuzlingen keine .NET Usergroups gibt haben wir (Jürgen und ich) uns überlegt selber einen ersten .NET Stammtisch zu organisieren.

Wir wollen den Stammtisch für alle interessierten aus dem Norden der Schweiz (Schaffhausen und Thurgau), sowie im deutschen Bodenseeraum (Konstanz, Waldshut, Friedrichshafen) ins Leben rufen

Das Ziel ist vorerst, sich in einer lockeren Umgebung kennenzulernen, auszutauschen und .NET Themen zu diskutieren. Interessant ist dabei sicherlich zu sehen, wer in der Region noch mit Microsofts .NET-Techniken arbeitet. Eventuell entwickeln sich daraus auch interessante, möglicherweise auch grenzübergreifende Kooperationen.

Dieser erste Stammtisch hat nur eine grobe Agenda, die einfach nur „kennenlernen“ lautet. Das heißt: Jürgen und ich würden uns kurz vorstellen den Sinn und das Ziel des Stammtisches erläutern und anschließend stellt sich jeder kurz selber vor. Weitere Themen werden sich im Laufe des ersten Stammtisches wahrscheinlich von selber ergeben.

Auch wenn Jürgen und ich hauptsächlich ASP.NET Entwickler sind, sollen die Themen natürlich auch in andere .NET Richtungen gehen können. Winforms- und WPF-Entwickler sind also ebenfalls herzlich eingeladen, genauso wie diejenigen die einfach nur so interessiert sind :-)

Für den ersten Stammtisch haben wir mal den 12.03.2009 um ca. 19:00 Uhr angedacht. Die genaue Location werden wir von der Anzahl der Anmeldungen abhängig machen müssen. Voraussichtlich wird die Veranstaltung aber in einem Restaurant in Konstanz oder Kreuzlingen selber stattfinden. Wenn ausreichend Interesse besteht, würden wir den Stammtisch dann jeden zweiten Donnerstag im Monat weiterführen.

Wer dabei sein möchte, sollte sich also bis spätestens zum 09.03.2009 bei uns über das Anmeldeforumlar auf der neuen Website der .NET Konstanz-Kreuzlingen unverbindlich anmelden. Jeder der sich anmeldet erhält von uns eine kurze Bestätigung, sowie kurz vor dem Termin eine Erinnerung per E-Mail.

Hier findet ihr noch eine Kalenderinformation zum Download um den Termin im Outlook einzutragen.

Update vom deutschen INETA Speakers Bureau

21.01.2009 08:32:04 | Lars Keller

Ich wollte mal wieder ein Update zum INETA Speakers Bureau geben. Im letzten Jahr wurde insgesamt 26 Mal ein Speaker zu den User Groups geschickt und in diesem Jahr sind es schon 8 Anträge.

Auch in diesem Jahr steht wieder allen User Groups die Möglichkeit offen, Sprecher, die im INETA Sharepoint gelistet sind, zu buchen - natürlich nur solange wie das Budget reicht.

Es haben nicht alle INETA User Groups die Möglichkeit wahrgenommen, einen Sprecher beim Speakers Bureau zu buchen, so dass wir nun wieder auch den User Groups die Möglichkeit bieten wollen, einen Speaker zu buchen, welche die drei Speaker schon voll hatten. Ab jetzt können wieder alle User Groups max. 3 Speaker buchen.

Somit können wir auf eine sehr positive Bilanz zurück blicken und ich freue mich in diesem Jahr den Austausch unter den User Groups weiter zu fördern!

Erster .NET Stammtisch Konstanz-Kreuzlingen

21.01.2009 03:00:00 | Jürgen Gutsch

Da es in der Region um Konstanz und Kreuzlingen keine .NET Usergroups gibt haben wir (Peter und ich) uns überlegt selber einen ersten .NET Stammtisch zu organisieren.

Wir wollen den Stammtisch für alle interessierten aus dem Norden der Schweiz (Schaffhausen und Thurgau), sowie im deutschen Bodenseeraum (Konstanz, Waldshut, Friedrichshafen) ins Leben rufen

Das Ziel ist vorerst, sich in einer lockeren Umgebung kennenzulernen, auszutauschen und .NET Themen zu diskutieren. Interessant ist dabei sicherlich zu sehen, wer in der Region noch mit Microsofts .NET-Techniken arbeitet. Eventuell entwickeln sich daraus auch interessante, möglicherweise auch grenzübergreifende Kooperationen.

Dieser erste Stammtisch hat nur eine grobe Agenda, die einfach nur "kennenlernen" lautet. Das heißt: Peter und ich würden uns kurz vorstellen den Sinn und das Ziel des Stammtisches erläutern und anschließend stellt sich jeder kurz selber vor. Weitere Themen werden sich im Laufe des ersten Stammtisches wahrscheinlich von selber ergeben.

Auch wenn Peter und ich hauptsächlich ASP.NET Entwickler sind, sollen die Themen natürlich auch in andere .NET Richtungen gehen können. Winforms- und WPF-Entwickler sind also ebenfalls herzlich eingeladen, genauso wie diejenigen die einfach nur so interessiert sind :-)

Für den ersten Stammtisch haben wir mal den 12.03.2009 um ca. 19:00 Uhr angedacht. Die genaue Location werden wir von der Anzahl der Anmeldungen abhängig machen müssen. Voraussichtlich wird die Veranstaltung aber in einem Restaurant in Konstanz oder Kreuzlingen selber stattfinden. Wenn ausreichend Interesse besteht, würden wir den Stammtisch dann jeden zweiten Donnerstag im Monat weiterführen.

Wer dabei sein möchte, sollte sich also bis spätestens zum 09.03.2009 bei uns über das Anmeldeforumlar auf der neuen Website der .NET Konstanz-Kreuzlingen unverbindlich anmelden. Jeder der sich anmeldet erhält von uns eine kurze Bestätigung, sowie kurz vor dem Termin eine Erinnerung per E-Mail.

Download: Der Termin als ICS Datei

FindControl mal anders: iterativ, rekursiv, generisch mit Bedingungen!

20.01.2009 22:57:00 | Peter Bucher

In ASP.NET müssen ab und zu Controls gefunden werden, meistens ist das der Fall wenn sie dynamisch hinzugefügt worden sind oder sich in einem wiederholendem Template befinden.
In ein paar diesen Fällen braucht es auch eine rekursive Suche nach einem bestimmten Control, ggf. mit anderen Bedingungen als der ID selber.

Okay, ein einfaches Beispiel für die <Control>.FindControl(<ID>)-Methode von ASP.NET:

Label label = (Label)<Container>.FindControl(<ID>)

Der Container stellt das Control dar, in dem oder dessen Kindern sich das gesuchte Control befindet.
FindControl gibt ein Objekt vom Typ “Control” zurück, um auf konkretere Eigenschaften / Methoden Zugriff zu bekommen, muss in den konkreten Typ gecastet werden, hier bspw. “Label”.

Geht das nicht irgendwie einfacher?
…doch das geht einfacher!

Praktisches Beispiel mit der originalen Variante:

Button b = Form.FindControl("btnSubmit") as Button;

 

Beispiel mit der der Extension Methode die ich gleich vorstellen werde:

Button button = Form.FindControl<Button>("btnTest");

 

Was ist der Unterschied?
Wir geben den gesuchten Typen an und ersparen und so einen Cast.
Wenn nichts gefunden wurde, kommt wie gehabt “null” zurück.

Die Extension Methode muss in einer statischen Klasse stehen und sieht wie folgt aus:

/// <summary>
/// Findet ein Control anhand einer ID und gibt es typisiert zurück.
/// (Casting entfällt im Unterschied zum Standard-FindControl.
/// </summary>
/// <typeparam name="T">Typ des zu findenen Controls.</typeparam>
/// <param name="source">Die Quelle für die Suche.</param>
/// <param name="id">Die gesuchte Control ID.</param>
/// <returns>Das gefundene Control oder null.</returns>
public static T FindControl<T>(this Control source, string id) where T : Control {
    return source.FindControl(id) as T;
}

 

Okay, was ist jetzt wenn ich innerhalb eines Baumes suchen muss / will?
Dabei gibt es zwei Möglichkeiten, die iterative oder die rekursive:

Rekursiv:

public static Control FindControlRecursive(this Control root, string id)
{
    if (root.ID == id)
    {
        return root;
    }
    foreach (Control c in root.Controls)
    {
        Control t = FindControlRecursive(c, id);
        if (t != null)
        {
            return t;
        }
    }
    return null;
}

Iterativ:

public static Control FindControlIterative(this Control root, string id)
{
    if (root.ID == id)
    {
        return root;
    }
    Stack<Control> stack = new Stack<Control>();
    stack.Push(root);
    while (stack.Count > 0)
    {
        Control control = stack.Pop();
        if (control.ID == id)
        {
            return control;
        }
        foreach (Control c in control.Controls)
        {
            stack.Push(c);
        }
    }
    return null;
}

Beide Varianten funktionieren ein bisschen anders, verhalten sich aber gleich: Es wird das gesuchte Control zurückgegeben oder null.

Mithilfe von Generics, Funktionszeigern (delegates, hier einen vom Typ Predicate) können wir ganz interessante Dinge erreichen.
Bei dem Parameter “predicate” kann ein Lambda-Ausdruck oder eine anonyme Methode benutzt werden um eine Bedingung zu stellen. Ist diese erfüllt ist es das korrekte Control und es wird zurückgeliefert.
In der Methode mit dem String-Parameter (id) sieht man ein Beispiel, wie so etwas umgesetzt werden kann.

/// <summary>
/// Findet ein Control rekursiv anhand einer ID.
/// </summary>
/// <typeparam name="T">Typ des zu findenden Controls.</typeparam>
/// <param name="source">Die Quelle für die Suche.</param>
/// <param name="id">Die gesuchte Control ID.</param>
/// <returns>Das gefundene Control oder null.</returns>
public static T FindControlRecursive<T>(this Control source, string id) where T : Control {
    return source.FindControlRecursive<T>(c => c.ID == id);
}
/// <summary>
/// Findet ein Control rekursiv anhand eines Predicates.
/// </summary>
/// <typeparam name="T">Typ des zu findenden Controls.</typeparam>
/// <param name="source">Die Quelle für die Suche.</param>
/// <param name="predicate">Die Bedingung für einen Treffer.</param>
/// <returns>Das gefundene Control oder null.</returns>
public static T FindControlRecursive<T>(this Control source, Predicate<T> predicate) where T : Control {
    if (source == null) {
        throw new ArgumentNullException("source");
    }


    if (predicate == null) {
        throw new ArgumentNullException("predicate");
    }

    T foundControl = source as T;
    if (foundControl != null && predicate(foundControl)) {
        return foundControl;
    }

    foreach (Control control in source.Controls) {
        foundControl = control.FindControlRecursive(predicate);
        if (foundControl != null) {
            return foundControl;
        }
    }

    return null;
}

Anwendung bspw.

Label label = Form.FindControlRecursive<Label>(l => l.CssClass == "test");
label.Text = "found it..!";

Das findet das erste Label mit der CSS-Klasse “test”.
Es können ohne Probleme mehrere Bedingungen gestellt und verknüpft werden.

Das dotnet-forum.de ist ein Jahr alt

20.01.2009 22:56:43 | Jan Welker

Heute vor einem Jahr ist das dotnet-forum.de offiziell online gegangen, doch wie ist es eigentlich dazu gekommen?

1JahrDotnetForum

Es gibt bekanntlich im deutschsprachigen Raum einige gute Foren, die sich mit .NET Entwicklung beschäftigen.

Warum noch ein Forum?

Angefangen hat alles mit der Domain, die ich zufällig beim Surfen entdeckt habe. Ich habe verwundert festgestellt, dass diese nicht genutzt wurde. Die Domain "dotnet-forum.de" war registriert auf eine Firma aus Berlin die sich auf Java Entwicklung spezialisiert hat: GEBIT Solutions. Nach einem kurzen Telefonat, war der Geschäftsführer bereit, mir diese Domain kostenlos zu überlassen. An dieser Stelle noch einmal Herzlichen Dank dafür an GEBIT Solutions!
Auf dotnet-snippets.de ist es zu dieser Zeit immer wieder vorgekommen, dass unter den Snippets Fragen per Kommentar veröffentlicht wurden, da kam ein eigenes Forum also wie gerufen.
Die Domain war gefunden, jetzt fehlte noch die passende Forensoftware. Einige Monate vorher, hörte ich mir auf der NRW 07 einen Vortrag von Thomas Freudenberg über den Community Server an. Thomas ist MVP für den Community Server und hatte das System sehr ausführlich erklärt. Da für mich nur eine ASP.NET Lösung in Frage kam, war die passende Software also schnell gefunden.
Thomas hat bei diversen Erweiterungen des Forums immer wieder geholfen und ist heute Teil des Teams.
In den folgenden Monaten habe ich einige Erweiterungen für den Community Server entwickelt. Das war nicht immer ganz leicht, weil es keine offizielle Doku gibt, hinzu kamen einige Bugs vom CS die man umschiffen musste.

Was kann das Forum jetzt mehr?

Es gibt täglich frische News rund um das Thema .NET Entwicklung die vom Team zusammengetragen werden.
 
Damit man kein wichtiges Usergrouptreffen oder keine Entwicklerkonferenz verpasst, gibt es einen Terminkalender, der jedem registrierten User per Routenplaner den Weg zum Ziel weist.
Die DeveloperBlogs sind eine Zusammenfassung der bekanntesten deutschen Blogs die sich mit der .NET Entwicklung beschäftigen. Die KnowledgeBase wurde uns freundlicherweise vom VB-Magazin.de zur Verfügung gestellt, diese Webanwendung wurde von Alex und Jan in VB.NET entwickelt und setzt konsequent die neuen Sprachfeatures von Visual Basic 9.0 ein.
Auf die Mitgliederkarte haben aus Datenschutzgründen nur registrierte Mitglieder Zugriff. Es macht immer wieder Spaß in der Karte UserMapnach Usern in der näheren Umgebung zu suchen, dabei hilft die Ajax-Umkreissuche.

Die ganzen Zusatzfeatures machen natürlich noch mehr Spaß, wenn sich möglichst viele User daran beteiligen.

Du kannst mitmachen, in dem du News vorschlägst, Termine deiner Usergroup einträgst, Artikel für die KnowledgeBase schreibst, deinen Blog bei den DeveloperBlogs anmeldest und in dem du Fragen im Forum stellst und beantwortest.
Es erwartet dich im Forum ein sehr freundlicher und respektvoller Umgangston, versprochen!

Ich möchte mich bei allen bedanken, die das Forum unterstützt haben, dabei möchte ich das Team besonders hervorheben, das vor, aber auch hinter den Kulissen, richtig gute Arbeit leistet!

Windows 7 Secrets ;-)

20.01.2009 18:32:14 | Jens Häupel

Nachdem viele Newsletter und Magazine rund um Windows das Wort “Geheimnis” [oder was Microsoft ihnen nicht erzählt] lieben und dabei i.d.R. wohldokumentierte [wenn auch kaum gelesene] Funktionalität meinen, die sie für die liebe Leserschar unter Einsatz ihres Lebens ausgegraben haben, habe ich mich an diese angelehnt und hier eine etwas provokante Überschrift gewählt.

Der erste Ansturm auf die Beta [mit dem unsere Server ein wenig Probleme hatten] ist vorbei und viele haben Windows 7 Beta 1 schon installiert. Stellt sich die Frage, was ist denn so neu an Win7?

Tim Sneath hat eine persönliche Liste zusammengestellt: The bumper list of Windows 7 secrets

Daniel Melanchthon u.a. schreiben im Microsoft Windows 7 Blog

Marc Russinovich erzählt in seinem Webcast von den vielen Verbesserungen.

Engineering Windows 7 Blog

“Kaputte” Mercedes Nebelscheinwerfer – kein Grund zur Beanstandung

20.01.2009 17:08:00 | Michael Schwarz

In meinem Post Mercedes-Fahrer und der kaputte Nebelscheinwerfer hatte ich mich gefragt, warum immer mehr Mercedes Fahrer nur mit einem Nebelscheinwerfer durch die Gegen fahren, und auch dann, wenn weit und breit kein Nebel zu sehen ist. Eigentlich wollte ich schon mal jemand ansprechen, doch habe heute im Internet die Antwort gefunden.

Der Grund für die einseitigen Nebelscheinwerfer ist das Abbiegelicht. Wie es aussieht, verwendet Mercedes (oder besser gesagt die Autos, bei denen ich das gesehen habe, gilt ja nicht für alle Mercedes) für das Ausleuchten in Kurven bis 40 km/h die Nebelscheinwerfer der inneren Kurvenseite. Wow, das ist für mich eher ein Abbiegelicht für Arme.

Wikipedia schreibt zum Thema Kurvenlicht:

Seit diesem Zeitpunkt bieten verschiedene Fahrzeughersteller das Kurvenlicht meist nur in Verbindung mit Xenonlicht an, Ausnahmen sind Fiat (z.B. beim Bravo schaltet sich unterhalb einer gewissen Geschwindigkeit und Betätigung des Fahrtrichtungsanzeigers oder bei einer gewissen Mindestlenkradumdrehung automatisch der linke bzw. rechte Nebelscheinwerfer, welcher Kurven wesentlich besser ausleuchtet, ein), Peugeot, Ford, Opel und Renault, die Kurvenlicht mit Halogenscheinwerfern z. B. im Peugeot 207, Ford Focus, im Opel Corsa und Meriva sowie im Renault Clio anbieten, so z. B.: Audi, BMW, Citroën, Mercedes-Benz, Opel und VW.

So, dann werde ich mir das mal genauer anschauen, die müssten ja jetzt alle irgendwie um eine Kurve gefahren sein, oder?

Globale JavaScript Objekte in AJAX/JavaScript Frameworks

20.01.2009 16:45:00 | Michael Schwarz

Jeder, der schon ein wenig mit JavaScript programmiert hat, wird schnell feststellen, dass globale Variablen oder Objekte schnell zu Problemen führen, wenn man JavaScript von anderen Herstellern oder Entwicklern gemeinsam auf einer Seite einsetzen möchte.

Um es mal schnell zu verdeutlichen, hier ein kleines Beispiel. Der Entwickler schreibt folgende Methode in einem seiner JavaScript Dateien:

<script type=”text/javascript”>
function formatString(s, param) {
    // … hier kommt die Logik rein
}
</script>

Nun benötigt der Entwickler AJAX Funktionalitäten, und lädt sich deswegen ein JavaScript AJAX Framework aus dem Internet herunter. Mit einem einfach <script type=”text/javascript” src=”framwork.js”></script> bindet er die JavaScript Datei ein, und hier schleicht sich das Problem ein.

Das JavaScript Framework besitzt eine gleichlautende Methode formatString, die, wer hätte es gedacht, natürlich eine andere Logik implementiert hat. Sobald die Datei framework.js geladen ist, wird diese die eigene Methode überschreiben.

Mats Bryntse hat eine kleine Webseite geschrieben, die bekannte JavaScript Frameworks lädt, und die durch das Laden erstellten globalen Variablen / Objekte anzeigt. Die Frameworks mit einer hohen Anzahl globaler Objekte sind dort die Problemkinder. Im Screenshot habe ich das Microsoft ASP.NET AJAX Framework ausgewählt. Dies hat von allen hier getesteten Frameworks die meisten Objekte angelegt, aber: die meisten Variablen oder Methodennamen fangen mit $ oder Sys$ an, d.h. solange ich nicht ähnliche Prefixe verwende, bin ich schon mal auf der besseren Seite.image

Neben den globalen Objekten werden oft auch die JavaScript Datentypen wie Number, String, Date, Boolean oder Function um weitere Funktionalitäten erweitert, dies geschieht mit dem prototype Keyword. Hier gibt es immer mal wieder Probleme, die man leider mit dem Vermeiden von globalen Variablen nicht weg bekommt.

In den meisten jQuery JavaScript Dateien habe ich mir folgendes angewohnt:

var AboutDialog = (function($) {

    var _internal = 1234;
    var _ele = null;

    function display() {
        _ele.show();
    }
    function close() {
        _ele.hide();
    }
    function btnclose(ev) {
        close();
    }
    function init() {
        $(“#aboutdlg button.close”)
.bind(“click”, btnclose); } $(document).ready(init); return new function() { this.show = function(id) { _ele = $(id); show(); }; this.close = function() { close(); }; }; })(jQuery);
.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; }

Damit habe ich jetzt nur ein globales Objekt AboutDialog erstellt, welches weiter die Methoden show() und close() besitzt. Die internen Variablen sind von außen nicht zugreifbar, können also keinerlei Probleme machen.

Webseminar zum Thema Online-Comics mit Expression Studio 2 & Silverlight am 19. und 24. Februar 09

20.01.2009 13:36:24 | Oliver Scheer

Meiner einer und PC-Ware veranstalten gemeinsam im Februar ein Webseminar bzw. Webinar zum Thema „Wir lassen Comics leben“ mit Expression Design und Expression Blend. Die Teilnahme am einstündigen Webinar ist natürlich kostenlos. Das Webinar ist eine erstklassige Chance für alle Designer und Entwickler von Rich Internet Applications einen Einblick in die Möglichkeiten von Expression Studio und Silverlight zu erhalten. Die Schwerpunkte:

  • Erstellen der Figuren in Expression Design 2
  • Animation der Figuren in Expression Blend 2
  • Integration von Interaktionen und Daten mittels Visual Studio 2008

Die Teilnahme ist kostenlos, eine Anmeldung ist notwendig:

Anmeldung zum Webinar am 19. Februar 15.30 Uhr: http://www.pc-ware.com/pcw/de/de/events/registration.htm?selection=481

Anmeldung zum Webinar am 24. Februar 15.30 Uhr: http://www.pc-ware.com/pcw/de/de/events/registration.htm?selection=482

Kapitel aus Sascha Wolters Silverlight Trainings-DVD jetzt als MSDN Webcast verfügbar

20.01.2009 13:31:55 | Oliver Scheer

Ende 2008 ist im Verlag "Video2Brain" das "Silverlight 2 Video Training" erschienen. Auf der DVD erklärt Sascha Wolter, wodurch sich die zweite Version von Silverlight auszeichnet, welche Werkzeuge notwendig sind und wie diese funktionieren. Angefangen von Microsoft Expression Blend bis hin zu Microsoft Visual Studio beleuchtet er alle Bausteine Schritt für Schritt anhand eines realen Projekts und garniert mit reichlich Praxiserfahrung. Zahlreiche Tipps rund um Rich Internet Applications komplettieren dieses Training für Designer und Developer. Bei MSDN Deutschland wird nun ab Freitag den 23.01.2009 der Beitrag „Steuerelemente“ aus dem Kapitel „Silverlight gestalten“ kostenlos als Webcast angeboten. Hier geht’s zum Webcast!

WSRP Toolkit for SharePoint 2007

20.01.2009 11:50:00 | Ozgur Aytekin

The WSRP Toolkit for Sharepoint contains two sample implementations of a WSRP producer for SharePoint. The first approach is based on a WSRP Producer that uses the HTML generated by SharePoint WebParts to render its content on a remote Portal using the WSRP standard.
The second approach is based on an ASP.NET page that, through a GridView control, can render the content of SharePoint Lists. A customized WSRP Producer is then used to expose the content to a remote Portal.

The Toolkit includes the source code for both solutions and a whitepaper on SharePoint interoperability using the WSRP Standard.

http://code.msdn.microsoft.com/WSRPToolkit

CutePDF - Create PDF documents on the fly — for Free!

20.01.2009 11:18:00 | Ozgur Aytekin

Portable Document Format (PDF) is the de facto standard for the secure and reliable distribution and exchange of electronic documents and forms around the world. CutePDF Writer (formerly CutePDF Printer) is the free version of commercial PDF creation software. CutePDF Writer installs itself as a "printer subsystem". This enables virtually any Windows applications (must be able to print) to create professional quality PDF documents - with just a push of a button!

FREE for commercial and non-commercial use! No watermarks! No Popup Web Ads!

http://www.cutepdf.com/Products/CutePDF/writer.asp

Der Benutzer spricht: Qualität, Usability und Versprechen

20.01.2009 10:33:10 | Norbert Eder

Der Benutzer hat es in vielen Fällen wirklich nicht einfach. Qualität, die es oft nicht gibt, Usability, die einem das Leben nur schwerer macht und Versprechen, die nicht eingehalten werden. Aber wie sieht das ein Benutzer wirklich? Seht und hört selbst: Raum zur Verbesserung dürfte also noch genügend vorhanden sein ... traurig aber in...

[[ This is a content summary only. Visit my website for full links, other content, and more! ]]

TFS: automatische Shelve Sets

20.01.2009 03:14:00 | Jürgen Gutsch

Wer von verschiedenen Standorten auf seinen Code zugreifen möchte kennt das sicher, dass man mal vergessen hat, seinen aktuellen Stand als Shelves Set im TFS zu hinterlegen (“ein zu shelven”) und so von dem anderen Standort nicht ohne weiteres an seinen Code kommt.

Ich vergesse zum Beispiel regelmäßig Abends meinen Code “ein zu shelven”.

Hilfreich ist hier das Tool “TFS AutoShelve” von John W. Powell, das auf Codeplex zu finden ist:
http://www.codeplex.com/TFSAutoShelve

Der Code dazu wird hier von John beschrieben:
TFS AutoShelve: a utility to automatically shelve check outs to the TFS server

Bei dem Tool handelt es sich um eine kleine Konsolenanwendung die per .config-Datei eingestellt wird.

Für die Fehlerbenachrichtigung:
SmtpHostName: mail.contoso.org
ErrorReportCCAddressList: my.name@contoso.org
ErrorReportFromAddress: my.name@contoso.org

TFS Einstellungen:
ShelveSetName: MyDailyShelve
TFSServer: TFS.contoso.org

Den Benutzer holt sich das Tool aus dem aktuellen Kontext und der Workspace wird anhand des aktuellen Benutzers ermittelt. Mit diesen Infos kann das Tool alle nicht eingecheckten Änderungen als Shelve Set speichern. Wichtig: ältere Shelve Sets mit dem gleichen Namen werden dabei überschrieben.

Sind die Einstellungen einmal gemacht, lässt sich das Tool mit dem Windows Task Scheduler immer zur den gewünschten Zeiten ausführen.

Das .NET Forum.de feiert seinen ersten Geburtstag

19.01.2009 13:23:56 | Klaus Bock

.NET Forum Am 21. Januar feiert das .NET Forum.de seinen ersten Geburtstag.
Vor einem Jahr hat Jan Welker das Forum aus der Taufe gehoben und es bis heute zu einer festen Institution in der deutschen .NET Community werden lassen. Die bis heute etwa 2100 registrierten Benutzer sprechen für sich. Angefangen hat Jan Welker mehr oder weniger allein. Heute stehen ihm 7 Moderatoren zur Seite. Bei mittlerweile rund 3600 Beiträgen in 2800 Themen benötigt wohl jeder etwas Hilfe.
.NET Forum Im .NET Forum-de werden alle Bereiche abgedeckt, von der Entwicklung von Clientanwendungen, Webapplikationen, bis zur Add-In Entwicklung für das Visual Studio. Natürlich bleiben auch die Serverprodukte wie etwa SQL-Server und der IIS nicht außen vor.
Besonders angenehm fällt der nette und freundliche Umgangston im Forum auf. Die allgemeine Hilfsbereitschaft fällt ebenso positiv auf wie die Kompetenz mit der etwaige Probleme gelöst werden. Gerade Anfängern wird im Forum jede mögliche Hilfestellung gewährt. Auf jede noch so abwegig erscheinende Frage wird eingegangen. Frei nach dem Motto: “Es gibt keine dummen Fragen, sondern nur dumme Antworten”. Die Moderatoren legen sehr viel Wert darauf, dass genau solche dummen Antworten unterbleiben. Die Toleranzgrenze liegt hier sehr niedrig.

Außer den Zahlreichen Unterforen für die verschiedenen Themenbereiche werden auch verschiedenen andere Dienste angeboten. So ist z.B. eine sehr umfangreiche Blogliste deutscher Entwickler vorhanden, die kontinuierlich erweitert wird. Die Blogliste kann sowohl als Rss-Feed als auch via Twitter abonniert werden.
Es wird auch ein Bereich mit aktuellen News aus der .NET Community angeboten. Auch dieser Bereich kann sowohl als Rss-Feed als auch via Twitter abonniert werden.
Der zur Verfügung stehende Terminkalender mit anstehenden Ereignissen der .NET Community hat sich schon öfter als sehr nützlich erwiesen. In der Detaildarstellung eines Termins kann dieser nicht nur nach Outlook exportiert werden, sondern registrierten Benutzern wird gleich ein Route zur Örtlichkeit des jeweiligen Termin vorgeschlagen.
Natürlich darf auch die im .NET Forum angebotene Knowledge Base nicht unerwähnt bleiben. Diese stetig wachsenden Sammlung an Tutorials, Code Beispielen und Erfahrungsberichten über Software und Bücher hat das Potential sich zu einer echten Perle zu entwickeln.

Neugierig geworden? Dann schau doch einfach mal im .NET Forum.de vorbei.

Webseminar von PC-Ware zum Thema Online-Comics mit Expression Studio 2 & Silverlight am 19. und 24. Februar 09

19.01.2009 12:35:26 | Steffen Ritter

Mein Kollege Oliver Scheer und PC-Ware veranstalten gemeinsam ein Webseminar bzw. Webinar zum Thema „Wir lassen Comics leben“ mit Expression Design und Expression Blend. Die Teilnahme am einstündigen Webinar ist natürlich kostenlos. Das Webinar ist eine erstklassige Chance für alle Designer und Entwickler von Rich Internet Applications – sowie für alle Umsteiger von Director und Flash – einen Einblick in die Möglichkeiten von Expression Studio und Silverlight zu erhalten. Die Schwerpunkte:

  • Erstellen der Figuren in Expression Design 2
  • Animation der Figuren in Expression Blend 2
  • Integration von Interaktionen und Daten mittels Visual Studio 2008

Die Teilnahme ist wie gesagt kostenlos, eine Anmeldung ist notwendig:

Anmeldung zum Webinar am 19. Februar 15.30 Uhr: http://www.pc-ware.com/pcw/de/de/events/registration.htm?selection=481

Anmeldung zum Webinar am 24. Februar 15.30 Uhr: http://www.pc-ware.com/pcw/de/de/events/registration.htm?selection=482

Die neue deutsche Expression/Silverlight-Homepage ist online

19.01.2009 11:27:00 | Lori Grosland

Wooha! Es hat sehr viel länger gedauert als ursprünglich geplant, aber jetzt ist die aktualisierte deutsche Expression-Homepage endlich online. Das Design wurde nur minimal überarbeitet aber inhaltlich hat sich einiges geändert und es sind einige wichtige Punkte hinzugekommen, unter anderem:

Die Website ist ab sofort unter der URL http://www.microsoft.de/expression online.

Grüne IT mal anders: Per Fahrgemeinschaft zur CeBIT nach Hannover

19.01.2009 11:23:00 | Lori Grosland

In Zusammenarbeit mit Deutschlands größtem Anbieter von Fahrgemeinschaften Mitfahrzentrale.de bietet Microsoft den Mitgliedern der Microsoft Developer Network (MSDN) Community einen umweltfreundlichen und kostengünstigen Mobilitätsservice an. Auf den Seiten der exklusiv für Microsoft eingerichteten „MSDN CeBIT '09 Mitfahrzentrale“ finden Software Entwickler eine Vielzahl von Fahrtmöglichkeiten nach Hannover. Diejenigen, die mit ihrem eigenen Fahrzeug zur Messe fahren, sind aufgefordert, ihre freien Plätze im Auto auf der Plattform anzubieten.
Nach der kostenlosen Registrierung erhalten Sie freien Zugriff auf alle Inserate von und nach Hannover. Machen Sie jetzt mit!

20.01.09 Treffen der .NET Developer Group Braunschweig - MPI.NET – Bestimmen Sie das n!

19.01.2009 11:03:43 | Lars Keller

dotnet-bs_banner_blog

Unser 28 User Group Treffen der .NET Developer Group Braunschweig findet am 20.01.09, ab 19:00 Uhr in Kilian's Raffinerie statt.

Dieses Mal hält unser Mitglied Florian Mätschke einen Vortrag zur Parallelisierung:

In der heutigen Zeit treffen wir ständig  auf neue Probleme und Herausforderungen in der Programmierung. Oftmals erfordert die Lösung eines Problems einen enormen Rechenaufwand der in Zeiten der Mehrkernprozessoren sehr leicht durch Parallelisierung verkürzt werden kann.  Ein eleganter weg dies in einer Managed Umgebung zu lösen ist mittels MPI.NET, das die parallele Programmierung leicht skalierbar macht. MPI.NET ist eine einfach zu nutzende high-performance Implementation des Message Passing Interfaces (MPI) für die Microsoft .NET Umgebung. MPI gilt als de facto Standard für die parallele Programmierung auf verteilten Systemen und Compute-Clustern.

Achtung! Wir haben einen neuen Raum in der Kilian’s Raffinerie! Dieser befindet sich im ersten Stock.

Weitere Informationen unter www.dotnet-braunschweig.de.

Wie immer ist jeder herzlich willkommen!

 



This weblog is sponsored by netcreate OHG.

Unklare Verkehrsschilder

19.01.2009 10:11:00 | Michael Schwarz

Heute Morgen habe ich gleich zwei Verkehrsschilder entdeckt, die in der gezeigten Kombination in meinen Augen verwirrend, wenn nicht sogar falsch sind.

IMG_0512

Das erste Foto zeigt die Verkehrsschilder 105-20 (Doppelkurve zunächst rechts), 274 (Zulässige Höchstgeschwindigkeit) und darunter 1004-30 (nach 100m). Bedeutet das Schild nun, dass ich nach 100m wegen einer gefährlichen zunächst rechts abbiegenden Kurve maximal 70 km/h fahren darf? Müsste dann in 100m noch einmal das Schild 274 mit der 70 stehen? Oder wie genau muss man mit einem Kilometerzähler (nicht alle Autos haben einen Kilometerzähler mit Zehntelanzeige) das während der Fahrt abschätzen können? Das Schild steht weiter ungefähr 200m vor einem Ortschild.

IMG_0522Weiter habe ich folgende Verkehrsschilder gefunden, befinden sich an einer T-Kreuzung, wenn man auf die Hauptstraße stößt. Interessant finde ich hier das Fahrtrichtungsschild in Zusammenhang mit 205 (Vorfahrt gewähren!) und dem darunter angebrachten Schild 1022-10 (Radfahrer frei). Stellen wir uns for, die Ampel fällt aus (ja, das gibt’s auch mal), dann könnte ich das Schild als Fahrradfahrer so interpretieren, dass ich das Vorfahrt gewähren Schild ignorieren kann. Gemeint ist hier aber, dass Fahrradfahrer auch geradeaus fahren dürfen, dort gibt es nämlich doch eine Straße, ist aber eine entgegen gerichtete Einbahnstraße, als keine echte T-Kreuzung.

IMG_0516 Bei uns in Stein sollten man auch die vielen Parkplatzschilder mal zusammen fassen. Auf dem Bild hier (sorry, unscharf, ist beim Vorbeifahren aufgenommen worden) sind sage und schreibe 6 davon zu sehen, je immer 2 für 2-3 Parkplätze, verrückt. Dazu kommen noch diverse Schilder, die auf ein Parkhaus in der Nähe aufmerksam machen. Interessant dazu finde ich auch den Beitrag Parken streng verboten.

20.01.09 Treffen der .NET Developer Group Braunschweig - MPI.NET – Bestimmen Sie das n!

19.01.2009 10:03:43 | Lars Keller

dotnet-bs_banner_blog

Unser 28 User Group Treffen der .NET Developer Group Braunschweig findet am 20.01.09, ab 19:00 Uhr in Kilian's Raffinerie statt.

Dieses Mal hält unser Mitglied Florian Mätschke einen Vortrag zur Parallelisierung:

In der heutigen Zeit treffen wir ständig  auf neue Probleme und Herausforderungen in der Programmierung. Oftmals erfordert die Lösung eines Problems einen enormen Rechenaufwand der in Zeiten der Mehrkernprozessoren sehr leicht durch Parallelisierung verkürzt werden kann.  Ein eleganter weg dies in einer Managed Umgebung zu lösen ist mittels MPI.NET, das die parallele Programmierung leicht skalierbar macht. MPI.NET ist eine einfach zu nutzende high-performance Implementation des Message Passing Interfaces (MPI) für die Microsoft .NET Umgebung. MPI gilt als de facto Standard für die parallele Programmierung auf verteilten Systemen und Compute-Clustern.

Achtung! Wir haben einen neuen Raum in der Kilian’s Raffinerie! Dieser befindet sich im ersten Stock.

Weitere Informationen unter www.dotnet-braunschweig.de.

Wie immer ist jeder herzlich willkommen!

 

20.01.09 Treffen der .NET Developer Group Braunschweig - MPI.NET – Bestimmen Sie das n!

19.01.2009 01:03:04 | Lars Keller

dotnet-bs_banner_blog

Unser 28 User Group Treffen der .NET Developer Group Braunschweig findet am 20.01.09, ab 19:00 Uhr in Kilian's Raffinerie statt.

Dieses Mal hält unser Mitglied Florian Mätschke einen Vortrag zur Parallelisierung:

In der heutigen Zeit treffen wir ständig  auf neue Probleme und Herausforderungen in der Programmierung. Oftmals erfordert die Lösung eines Problems einen enormen Rechenaufwand der in Zeiten der Mehrkernprozessoren sehr leicht durch Parallelisierung verkürzt werden kann.  Ein eleganter weg dies in einer Managed Umgebung zu lösen ist mittels MPI.NET, das die parallele Programmierung leicht skalierbar macht. MPI.NET ist eine einfach zu nutzende high-performance Implementation des Message Passing Interfaces (MPI) für die Microsoft .NET Umgebung. MPI gilt als de facto Standard für die parallele Programmierung auf verteilten Systemen und Compute-Clustern.

Achtung! Wir haben einen neuen Raum in der Kilian’s Raffinerie! Dieser befindet sich im ersten Stock.

Weitere Informationen unter www.dotnet-braunschweig.de.

Wie immer ist jeder herzlich willkommen!

 

Empfehlung: PDC Videos

18.01.2009 23:32:00 | Peter Bucher

Nachdem mich Alex unbewusst daran erinnert hat, das ich doch die PDC Aufnahmen endlich mal schauen will, bin ich Heute im Zug dazu gekommen zumindest einen Teil anzuschauen.

Ich kann diese Videos auf jeden Fall empfehlen, sie sind sehr interessant und gut gemacht.
Meine Liste sieht wie folgt aus:

  • Agile Development with Microsoft Visual Studio
  • ASP.NET 4.0 Roadmap
  • ASP.NET MVC - A New Framework for Building Web Applications
  • ASP.NET - Cache Extensibility
  • ASP.NET and JQuery
  • Developing with Microsoft .NET and ASP.NET for Server Core
  • Microsoft Visual Studio - Easing ASP.NET Web Deployment
  • Microsoft Visual Studio- Web Development Futures
  • The Future of C#
  • Web Application Packaging and Deployment

Die ASP.NET 4.0 Roadmap zeigt interessante Entwicklungen auf und auch inwiefern ASP.NET MVC und ASP.NET im Rahmen von Microsoft weiterentwickelt werden.

In ASP.NET 4.0 werden bekannte Punkte - auch von Stimmen der Communities - angegangen, darunter befinden sich:

  • Client IDs: Diese können gezielt angegeben werden und sind nicht mehr nötig, können also generell deaktiviert werden (Hier noch ein Link dazu: http://weblogs.asp.net/asptest/archive/2009/01/06/asp-net-4-0-clientid-overview.aspx)
  • CSS: CSS Adapters sollte nicht mehr nötig sein, d.h. besseres Rendering (Ohne Layout Tabellen) + Minimierung von Inline-Styles und bessere Unterstützung für CSS-Klassen
  • URL Routing: Vielen vielleicht schon aus ASP.NET MVC bekannt, dieses soll nun eine komplette Unterstützung in ASP.NET WebForms bekommen (Kann auch schon jetzt unter ASP.NET Webforms benutzt werden).
  • ViewState: Bessere Unterstützung der Funktionalität _ohne_ ViewState (GridView / ListView / ...), granularere Deaktivierung des ViewStates (Bei einem Control deaktivieren und beim Kind-Control aktivieren)
  • ASP.NET dynamic data: Integrierung in ASP.NET
  • ASP.NET AJAX: Integrierung von jQuery, und vieles mehr...

Zusätzliche Empfehlungen meinerseits:

  • Die Session ASP.NET MVC - A New Framework for Building Web Applications von Phil Haack ist sehr gut gemacht und hat auch ein paar witzige Stellen drin (Sein Blog ist übrigens auch sehr empfehlenswert) :)
  • The Future of C# vom Chef Architekten von C# persönlich - Anders Hejlsberg - ist sehr, sehr empfehlenswert und das Demo am Schluss ist einfach absolut Hammer.
    Dieses Video muss man definitiv gesehen haben!
  • Microsoft Visual Studio- Web Development Futures zeigt die Inovationen die Microsoft mit Visual Studio 2010 für ASP.NET lanciert und auch ettliche Verbesserungen. Vorallem der Teil mit den Code Snippets ist sehr empfehlenswert und auch witzig gemacht.

Die Videos können auf https://sessions.microsoftpdc.com/public/timeline.aspx per Tagging gefiltert werden und in sehr guter Qualität heruntergeladen werden.
Viel Spass beim Video gucken!

Bearbeitungen / Korrekturen:
20.01.09 - Link zu ASP.NET 4.0 ClientID hinzugefügt

Mercedes-Fahrer und der kaputte Nebelscheinwerfer

18.01.2009 19:09:00 | Michael Schwarz

Eigentlich wollte ich das ja nicht schreiben, aber irgendwie finde ich es doch sehr merkwürdig, dass ich so viele Autos sehe, die bei klarer Sicht mit Nebelscheinwerfer fahren. Ok, ich verstehe ja, dass man den Wert des eigenen Autos damit in die Höhe jagen kann, das ist richtig cool. Aber wie peinlich ist das eigentlich, wenn dann eins der beiden Lichter auch noch kaputt ist?

Mir ist gerade in diesem Winter aufgefallen, dass hauptsächlich Autos von Mercedes mit kaputten Licht fahren. Hier in Nürnberg würde ich behaupten, dass das mindestens 80-90% sind. Woran liegt das? Baut Mercedes zu billige Lichter ein? Oder sind andere Autofahrer schneller beim Auswechseln?

Entwickeln fuer Windows 7 | Develop for Windows 7

18.01.2009 18:10:02 | Kay Giza

Ich habe hier mal versucht die wichtigsten Links zusammenzustellen, die man benötigt, um mit der Entwicklung von Software für Windows 7 beginnen zu können. Über Feedback jeder Art, ob z.B. Links fehlen oder ob ich sogar genau die richtigen "erwischt" habe, würde ich mich sehr freuen.

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-2009 Kay Giza. All rights reserved. Legal

WPF Data Binding und Relationen

18.01.2009 17:34:59 | Norbert Eder

Data Binding ist ein vielseitiges Thema. In vielen Beispielen werden nur einfache Bindungen gezeigt. So kommt es bei komplexeren Aufgaben zwangsläufig zu Fragen. Dieser Beitrag zeigt, wie eine Eingabemaske mittels Bindung an Objekte mit Beziehungen zu Objekten gleichen Typs bzw. eines anderen Typs mittels WPF erstellt werden können. Häufig...

[[ This is a content summary only. Visit my website for full links, other content, and more! ]]

Codebeispiele fuer die eigene Webseite: Integration des MSDN Social Bookmarking-Dienst

18.01.2009 14:43:52 | Kay Giza

Am '2. CLIP Open Day' in München, letzten Freitag, habe ich u.a. das Thema MSDN Social Bookmarking [1,2] vorgestellt.
U.a. habe ich gezeigt, wie einfach man mit den vergefertigten Scripts das MSDN Social Bookmarking auf seiner Webseite, Forum oder Weblog integrieren kann.
Auch habe ich einige spezielle Anpassungen gezeigt, die man vornehmen kann, hier sind die vorgestellten Scripts:


Einfaches JavaScript, mit Symbol ohne Text:

<script type="text/javascript" src="http://services.social.microsoft.com/widgets/bookmark.jss?type=0&brand=Msdn&locale=1031"></script>

Einfaches JavaScript, mit Symbol und Text:

<script type="text/javascript" src="http://services.social.microsoft.com/widgets/bookmark.jss?type=1&brand=Msdn&locale=1031"></script>

Umfangreicheres JavaScript für eigenständige Anpassungen: Bookmark auf MSDN Online

<a href="javascript:void(0);"
onclick="javascript:window.open('http://social.msdn.microsoft.com/bookmarks/de-de/action/Create/s/E/?url=' + encodeURIComponent(location.href) + '&amp;ttl=' + encodeURIComponent(document.title||''), '_blank')">Bookmark auf MSDN Online</a>

Der gelb markierte Bereich kann z.B. durch einen Permalink-Variable (permanenten Link) ersetzt werden. Viele Content Management System (CMS) und Weblogs bietet dies z.B. an, sieht z.B. so aus <%PermalinkUrl%>. Möchtet man in dem gelb markierten Bereich eher eine fest definierte URL hinterlegen, muss man die URL in Hochkommentar setzen ('').

Wer sich dennoch nicht an solche Scripts heranwagen möchte, dem kann ich z.B. die sogenannten Social Bookmark Script Generator-Websites [3] empfehlen. Diese haben häufig auch neben zahlreichen anderen Diensten auch bereits die MSDN Social Bookmark-Platform integriert.

Weiterführende Links:

 



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-2009 Kay Giza. All rights reserved. Legal

Access 2007 Download: Access Developer Extensions

18.01.2009 12:22:00 | Ozgur Aytekin

The Access 2007 Developer Extensions provide packaging and deployment tools and licensing and distribution agreements to make it easier for developers to bring solutions to market. Whether you are working in a small business or a large enterprise, as a third-party or an internal developer, the Access 2007 Developer Extensions can facilitate the deployment and management of Access 2007 solutions.

http://www.microsoft.com/downloads/details.aspx?FamilyID=D96A8358-ECE4-4BEE-A844-F81856DCEB67&displaylang=en

Eines führt bekanntlich unweigerlich zum nächsten

17.01.2009 05:58:00 | Jürgen Gutsch

Vor einigen Tagen fragte mich Peter ob ich MbUnit kennen würde, ein – wie er sagte – einfaches und vor allem gut erweiterbares Unit Testing Framework.

Ich kannte es nicht, also folgte das nächste: Ich Google nach MbUnit und folge auf der Projektseite dem Link zur neuesten Version (v3) und lande bei Gallio. Der Download bei Gallio ist ein Bundle, bestehend aus MbUnit und vielen weiteren Test-Tools.

Es folgt wieder unweigerlich das nächste: Ich lade mir das gesamte Paket herunter und schaue mir die enthaltenen Beispielprojekte an, bzw. starte einfach mal eines der Unit-Test-Projekte. Das interessante war jetzt, dass selbständig der Internet Explorer auf geht, Google aufruft, “MbUnit” in das Suchfeld eingetragen wird und anschließen mit einem Click auf den Button “Auf gut Glück” zur Projektseite von MbUnit gesprungen wird.

Das führte wiederum dazu, dass ich in diesem Testprojekt die WatiN Library gefunden habe (WatiN = “Web Application Testing In .Net”). WatiN ermöglicht es in einem Unit Test-Projekt, den Internet Explorer anzusteuern und Aktionen direkt auf der zu testenden Seite durchzuführen. Man kann dem Internet Explorer also sagen: “öffne mir folgende Seite, klicke auf folgenden Link und prüfe ob auf der Seite folgender Text zu finden ist”.

Und es folgte darauf hin unweigerlich dazu, dass ich mir sagte: “Hei Jürgen, das ist ja so cool, das kannst du doch für das sharpcms gebrauchen. Damit kannst du ja das Backend komplett mit Tests abdecken”. Also nutze ich jetzt jede freie Sekunde (was für mich ja bekanntlich recht schwierig geworden ist. Siehe hier) um Tests mit MbUnit und WatiN für das sharpcms zu schreiben.

Und wer ist schuld, dass das sharpcms jetzt automatisierte Tests bekommt?
Natürlich der Peter ;-)

@Peter: Danke nochmal für diesen Hinweis :-)

Da wollte ich noch über die Pex Demo aus dem VSTS Infos Day bloggen uns siehe da….

16.01.2009 15:17:56 | Christian Binder

Dariusz hat schon alles veraten :-) Daher möchte ich nur noch einen wichtigen Aspekt ergänzen. Pex liefert nicht nur einen hohe Code Coverage, sondern kann auch schnell mal den ein oder anderen Bug identifzieren. In dem Beispiel wird folgende Methode untetrsucht;

public bool Validate( CardType cardType, string creditCardNumber )

Wer über dieses Project mal die Statische Code Analyse hat laufen lassen, hätte schon ein Hinweis bekommen:

Warning    3    CA1008 : Microsoft.Design : Add a member to 'CardType' that has a value of zero with a suggested name of 'None'.   

, aber wer intressiert sich schon für die Statische Codeanlyse… doch erst wenn es mal richtig weh tut. Also einfachmal auf bestehende Projekte anwenden und schauen was so passiert :-)

Viel Spass

Chris

Test und Übersicht der CSS Selektoren mit verschiedenen Browsern

16.01.2009 06:24:02 | Jürgen Gutsch

Sodele… die 100 Blog-Einträge sind voll *g*

Auf folgender Seite ist eine schöne Übersicht über mehrere CSS Selektoren zu finden:
http://kimblim.dk/csstest/

Das interessante, neben der Übersicht der unterstützenden Browser, sind die Beispiel mit denen die Selektoren direkt nachvollzogen werden können.

Und da wir gerade bei CSS sind:

Ich habe zusätzlich auch www.backtoessentials.com eine Ultimative Liste mit CSS Tools gefunden. Unter den Tools sind nicht nur Font-Tester und CSS-Builder sondern auch eine Übersicht über CSS Frameworks wie YAML zu finden.

Gewinner der Verlosung: Silverlight 2 Video-Training + Umfangreiche Silverlight-Linkliste

16.01.2009 01:01:34 | Kay Giza

Am 14.01.2009 habe ich eine Verlosung gestartet, zu gewinnen gab es ein 'Silverlight 2 Video-Training: Webanwendungen mit Expression Blend und DeepZoom'. Der Gewinner wurde nun ermittelt. Auf Grund der vielen Kommentare rund um Silverlight habe ich zusätzlich eine umfangreiche Liste "Erste Schritte mit Silverlight" erstellt. Weiterhin bin ich auf jeden Kommentar eingegangen. Aufgrund des umfangreichen Blogpostings findet man den vollständigen Artikel hier auf Giza-Blog.de... [...mehr]

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-2009 Kay Giza. All rights reserved. Legal

Barcamps - eine Bar mit Camping? Oder wie?

16.01.2009 00:38:55 | Kay Giza

:-) Genau. Doch nicht? Ich habe nämlich per E-Mail dazu eine Anfrage bekommen und nehme das Thema gerne also hier im Weblog auf. Ich möchte von Wikipedia zitieren:

"Ein BarCamp, ist eine offene, partizipative Unkonferenz, deren Ablauf und Inhalte von den Teilnehmern bestimmt wird. Seit dem ersten BarCamp in Palo Alto (Kalifornien) im August 2005 in den Räumlichkeiten der Firma Socialtext werden in Nordamerika, Asien und Europa BarCamps abgehalten. So fanden bereits Ende September 2006 in Berlin und Wien die ersten BarCamps im deutschsprachigen Raum statt"

Wenn Sie selber einmal Lust haben an einem BarCamp teilzunehmen, empfehle ich einen Blick in den Microsoft Community Guide, wo u.a. zahlreiche User Group-Termine und BarCamps gelistet sind; tagesaktuell.
Sollte ein Barcamp oder Termin fehlen, sollte gar eine Community rund um Microsoft Produkte & Services vermisst werden, bitten wir höflich um eine formlose E-Mail an die Community Guide Redaktion.

Kollegin Lori Grosland erklärt, wem das obige Zitat nicht genügt, was ein BarCamp ist, Video ab:



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-2009 Kay Giza. All rights reserved. Legal

Die neue deutsche Expression/Silverlight-Homepage ist online

16.01.2009 00:08:49 | Kay Giza

Die aktualisierte deutsche Expression-Homepage hat das MSDN Online-Team heute online gestellt. Das Design wurde nur minimal überarbeitet aber inhaltlich hat sich einiges geändert und es sind einige wichtige Punkte hinzugekommen, unter anderem:

Feedback und Kommentare nimmt gerne Steffen Ritter (Designer Marketing Manager bei Microsoft Deutschland) auf, u.a. wenn Sie z.B: Feedback zu Trainingsanbietern oder Agentur-Listen haben.
Das Portal ist weiterhin unter der URL
http://www.microsoft.de/expression zu erreichen.


Weiterführende Links:



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-2009 Kay Giza. All rights reserved. Legal

Die neue deutsche Expression/Silverlight-Homepage ist online

16.01.2009 00:03:14 | Oliver Scheer

Wooha! Es hat sehr viel länger gedauert als ursprünglich geplant, aber jetzt ist die aktualisierte deutsche Expression-Homepage endlich online. Das Design wurde nur minimal überarbeitet aber inhaltlich hat sich einiges geändert und es sind einige wichtige Punkte hinzugekommen, unter anderem:

Die Website ist ab sofort unter der URL http://www.microsoft.de/expression online.

Lang, lang ist's her...

15.01.2009 22:05:00 | Jürgen Gutsch

Fast zwei Monate, dass ich hier im Blog nichts mehr veröffentlicht habe, dabei wollte ich eigentlich im Dezember die 100 Blog-Einträge voll machen. Mein letzter Blog-Eintrag scheint so lange her zu sein, dass ich sogar schon folgende E-Mail bekommen habe:

***************************
Sehr geehrter Herr Gutsch

da ich Sie über Ihr Xing-Profil nicht kontaktieren darf (Nachrichten-Sperre) versuche ich es per EMail. Ich bin beim surfen auf Ihren Blog aufmerksam geworden und da SIe schon länger nichts mehr gepostet haben, scheint mir die Frage angemessen, ob Sie Ihren Blog weiterführen oder ihn aufgeben wollen?
Wenn SIe nicht genügend Zeit haben, würde ich gern den Blog weiterführen.

Mit freundlichen Grüßen,
***************************

Ich wusste ja nicht, das mein Blog so begehrt ist ;-)

Wie auch immer.

Der Grund für die fast zwei Monate Funkstille war, bzw. ist mein Sohn Hendrik der am 26. November geboren wurde. Abgesehen davon, das wir (meine Frau und Ich) sehr glücklich darüber sind, haben natürlich alle diejenigen recht, die mir prophezeit haben, das sich das leben drastisch ändern wird. So habe ich beispielsweise, trotz längerem Urlaub, keine Zeit für einen längeren Text gefunden. Lediglich im Forum konnte ich hin und wieder einen kleinen Beitrag leisten.

Jetzt, da ich mich allerdings (fast) an den Schlafmangel gewöhnt habe, finde ich sicher hin und wieder ein paar Augenblicke um mich hinzusetzen und einige längere, zusammenhängende Texte zu schreiben. Ich kann leider nicht vorhersehen, wie regelmäßig ich dazu kommen werde.

Praxisbericht: Samsung DVD HR 777

15.01.2009 20:08:57 | Norbert Eder

Keine Ahnung ob ihr das kennt. Hin und wieder muss sich Mann einfach etwas gönnen. So habe ich mir vor einigen Wochen den DVD-Recorder Samsung DVD HR 777 gekauft. Um es vorweg zu sagen: Nein, ich werde (leider) nicht von Samsung bezahlt. Samsung kommt mir deshalb ins Haus, da mir das Design gefällt und das Preis-/Leistungsverhältnis passt....

[[ This is a content summary only. Visit my website for full links, other content, and more! ]]

Endlich: Die neue deutsche Expression/Silverlight-Homepage ist online

15.01.2009 18:27:15 | Steffen Ritter

Wooha! Es hat sehr viel länger gedauert als ursprünglich geplant, aber jetzt ist die aktualisierte deutsche Expression-Homepage endlich online. Das Design wurde nur minimal überarbeitet aber inhaltlich hat sich einiges geändert und es sind einige wichtige Punkte hinzugekommen, unter anderem:

Die Website ist ab sofort unter der URL http://www.microsoft.de/expression online.

Ajax.NET Professional, ASP.NET MVC und jQuery – ein minimalistisches Beispiel

15.01.2009 16:33:00 | Michael Schwarz

Weil ich gerade einen Test brauchte, habe ich das Projekt einfach mal hochgeladen. In dem Beispiel wird jQuery, ASP.NET MVC und Ajax.NET Professional verwendet. Einfach das VS2008 Projekt runterladen, entpacken und die Seite localhost:6341/Portal aufrufen. Dort befindet sich dann ein Link, der dann den AJAX Aufruf startet.

Und so sieht die AJAX Methode im PortalController.cs aus

        public ActionResult Test()
        {
            return new RenderJsonResult { Result = new {
                  status = "ok",
                  age = 31, 
                  date = DateTime.Now
            } };
        }

RenderJsonResult wandelt das übergebene Objekt automatisch in ein JSON Format um. Auf dem Client muss man nun den String, der zurückgeliefert wird mit der JavaScript Methode eval in ein Objekt umwandeln.

$.ajax({
    url: "/Portal/Test",
    success: function(s) {
        eval("s=" + s);
        alert("result: " + s.date);
    },
    error: function(xhr, status, e) { alert(status + "\r\n" + xhr.responseText); }
});

Liefert man nichts zurück, also in der Test Methode z.B. return new EmptyResult(), dann zeigt Firefox in der Fehlerkonsole einen Fehler an, komisch. Ganz abgesehen davon sollte man wohl immer mindestens ein OK oder so zurückliefern.

Windows 7 Maskottchen – Kampffisch als Hintergrundbild (Betta)

15.01.2009 14:22:00 | Michael Schwarz

imageJeder, der die Windows 7 Beta schon mal installiert hat, kenn dieses neue (in meinen Augen hässliche) Hintergrundbild, das neue Windows 7 Maskottchen:

Martin Schindler ist aufgefallen, dass Microsoft da nicht nur eine neue Betaversion veröffentlich hat, sondern auch gleich noch Humor unter Beweis stellt.

Martin schreibt, dass es sich bei dem abgebildeten Fisch um einen sogenannten Kampffisch (Betta) handelt. Wir befinden uns also im Kampf, nur wer ist der Feind? Ist es Linux oder MacOS, oder gar das eigene Windows 7? Oder bedeutet Kämpfen hier, dass gekämpft wird ein richtig gutes Betriebssystem zu entwickeln?

Wer ein wenig weiter den Wikipedia Artikel liest, stolpert über folgenden Absatz:

In der Natur erreichen insbesondere die kleineren Kampffisch-Arten kein hohes Alter, da sie natürlichen Bedrohungen wie Fressfeinden, Parasitenbefall und Krankheiten unterliegen.

Hm, sind damit die anderen Hersteller von Betriebssystemen gemeint? Und ist unser Fisch jetzt klein oder groß?

Und beim Siamesischen Kampffisch (das hier scheint so einer zu sein), steht:

Sie wurden aber bereits viele Jahre zuvor von Einheimischen, vor allem wegen der Aggressivität der Männchen untereinander, für Schau- und Wettkämpfe gezüchtet.

[…]

Kampffische werden ca. 5 bis 7 cm groß und erreichen ein maximales Alter von ca. 2 Jahren.

Ok, 2 Jahre könnte ja noch stimmen, auch wenn Vista im Januar 2010 bereits 3 Jahre alt wird, aber: mit 10 Jahren Support! Hoffen wir, dass Windows 7 nicht nur für Schaukämpfe gezüchtet wird/wurde.

Green-IT mal anders: Per Fahrgemeinschaft zur CeBIT nach Hannover

15.01.2009 13:04:08 | Oliver Scheer

In Zusammenarbeit mit Deutschlands größtem Anbieter von Fahrgemeinschaften Mitfahrzentrale.de bietet Microsoft den Mitgliedern der Microsoft Developer Network (MSDN) Community einen umweltfreundlichen und kostengünstigen Mobilitätsservice an. Auf den Seiten der exklusiv für Microsoft eingerichteten „MSDN CeBIT '09 Mitfahrzentrale“ finden Software Entwickler eine Vielzahl von Fahrtmöglichkeiten nach Hannover. Diejenigen, die mit ihrem eigenen Fahrzeug zur Messe fahren, sind aufgefordert, ihre freien Plätze im Auto auf der Plattform anzubieten.

Nach der kostenlosen Registrierung erhalten Sie freien Zugriff auf alle Inserate von und nach Hannover. Machen Sie jetzt mit!

Ich buch dann mal :-)

No-Go-Liste der 25 gefährlichsten Programmierfehler

15.01.2009 12:28:25 | Oliver Scheer

Die von einem Gremium weltweit bedeutsamer Software-Sicherheitsexperten unter Mitarbeit von Microsoft erarbeitete Liste der 25 für die Sicherheit einer Anwendung grundsätzlich schlimmsten Programmierfehler soll Entwickler informieren und wachrütteln. Unabhängig von Betriebssystemen und Entwicklungsumgebungen sind die typischsten Sicherheitsfehler in drei Kategorien aufgeteilt: Komponenteninteraktion, Ressourcenverwaltung und Sicherheitsvorkehrungen. Natürlich sind nicht nur die üblichen Fehler selber beschrieben, sondern sehr detailreich auch die Wege, mit denen sie vermieden werden können. Microsoft wurde in dem Gremium von Principal Security Program Manager Michael Howard vertreten, der auch Autor mehrerer maßgeblicher Security-Bücher und des Artikels „8 einfache Regeln zum Entwickeln von sichererem Code“ in der Novemberausgabe des MSDN Magazine ist. Richten Sie sich an diesen Maßstäben aus – schon Ihr nächster Kunde könnte Sie danach fragen. Oder noch besser, arbeiten Sie sich gleich von unserem Security Developer Center aus in Microsofts umfassende Security-Entwicklungsstrategie Microsoft Security Development Lifecycle (SDL) und deren auch für Sie verfügbare Tools ein.

Windows 7 Secrets

15.01.2009 12:20:38 | Lars Keller

Tim Sneath hat einen sehr ausführlichen Post über Windows 7 geschrieben. Er schreibt über die Neuerungen in Windows 7. Eine gute Übersicht über das eine oder andere nette Feature. Lesenswert!

Link:



This weblog is sponsored by netcreate OHG.

Windows 7 Secrets

15.01.2009 11:20:38 | Lars Keller

Tim Sneath hat einen sehr ausführlichen Post über Windows 7 geschrieben. Er schreibt über die Neuerungen in Windows 7. Eine gute Übersicht über das eine oder andere nette Feature. Lesenswert!

Link:

„Neujahrsgeschenk“: Blend 2 + VS 2008 + Encoder 2 + 10h Videotraining zum „das hol ich mir trotz Wirtschaftsflaute jetzt und sofort-Preis“...

15.01.2009 10:34:00 | Steffen Ritter

Gerade erhielt ich eine E-Mail in welcher mich ein Kunde auf ein „tolles“ (?) Angebot aus den USA hinwies: Expression Blend 2 und Visual Studio 2008 zum Paketpreis von 550,- Dollar (zzgl. Steuer). Klingt ja eigentlich gar nicht schlecht, aber dieses „Neujahrsgeschenk“ können wir hier in Deutschland locker toppen:

Bei CANCOM gibt es derzeit ein Paket das alles enthält um sofort mit Silverlight-Entwicklung loszulegen, inkl. ausführlichem Videotraining und und und …für nicht mal 350,- Euro. Das ist nicht einmal halb so viel Geld wie sonst alleine Expression Studio 2 kosten würde.

  • Expression Blend 2 für RIA-Development
  • Visual Studio 2008 Standard (in Blend 2 enthalten, bei CANCOM nicht extra angegeben aber dabei)
  • Expression Encoder 2 für Video-Encoding
  • Trainings-DVD zu Silverlight 2

Ich habe keine Ahnung wie lange CANCOM das Paket noch im Angebot hat, also schnell hin – denn in diesem Paket ist wirklich alles enthalten, was ein RIA- oder Web-Designer/Entwickler oder Flash- bzw. Flex-Designer/ Entwickler (oder natürlich ein .NET-Entwickler) braucht um den schnellen und einfachen Einstieg in die Silverlight-Entwicklung zu finden. Und das zu einem schmerzhaft (für mich) niedrigen Preis, der fast schon als drittes Konjunkturpaket durchginge.

Zum CANCOM-Shop: http://shop.cancom.de/online/31/wa/TendiDL/getArticleDetail?id=2850430&shop=cancom&wosid=8ziMWMXxX8tUZHZtRyxAkM

Zusammen mit MSDN und Mitfahrzentrale.de zur Cebit 2009

15.01.2009 09:31:00 | Michael Schwarz

Alle, die noch nicht wissen wie sie zur Cebit 2009 (vom 3. bis 8. März 2009 in Hannover) kommen hat die Mitfahrzentrale und MSDN eine Seite speziell für Fahrten nach und von Hannover eingerichtet.

MSDN Cebit Mitfahrzentrale

Hm, vielleicht fahre ich auch zur Cebit, bin mir noch nicht ganz sicher. Zur gleichen Zeit ist nämlich hier in Nürnberg die embeddedworld2009 (vom 3. bis 5. März 2009). Ich habe noch 4 kostenfreie Tickets (anstatt 18 EUR), wer Interesse hat.

Ich liebe jQuery! Und wie sieht es mit dir aus?

15.01.2009 08:48:00 | Michael Schwarz

Hatte ich eigentlich schon einmal erwähnt, das jQuery absolut abgefahren ist? Ich verwende es schon seit den frühen Stunden, und habe es noch nie bereut. Erst diese Woche ist die neue jQuery Version 1.3 erschienen, die enorme Performanceverbesserungen enthält. Es gab mal zwischen den Versionen Probleme beim Upgraden, konnte man aber oft sehr schnell anpassen.

jQuery 1.3 erschienen Was die Performance angeht, war ich oft schon mal enttäuscht, aber wenn man es richtig macht, kommt so schnell niemand an jQuery ran. Es gibt für die verschiedenen Aufgaben immer wieder eine etwas andere Herangehensweise, und schon ist das Skript um ein Vielfaches schneller.

Wer setzt jQuery ein? Es sind inzwischen auch die großen Webseiten, die auf jQuery aufbauen, darunter Google, Amazon oder auch Microsoft, um nur mal ein paar zu nennen.

Wer hat Lust mal seine jQuery Kenntnisse unter Beweis zu stellen? Folgende Aufgabe wäre zu bewerkstelligen:

Man nehme eine Liste von 1.000 Personennamen (oder einfach 1.000 unterschiedliche Strings in einem Array). Diese sollen zu je 10 Zeilen angezeigt werden. Zum Blättern ein Vorwärts/Rückwärts Button. Jede Zeile enthält zusätzlich einen Button zum Bearbeiten des Textes, entweder in der Zeile oder aber auch außerhalb der Tabelle. Speichern/Abbrechen Buttons für den Editiervorgang, und dann die Tabelle so wieder anzeigen.

Ist eigentlich eine einfache Aufgabe, kann aber sehr unterschiedlich implementiert werden. Ich bin gespannt auf eure Umsetzung, und wer den schnellsten Code schreibt. Zu gewinnen gibt es leider nichts, aber vielleicht macht doch der eine oder andere mit.

Immer gut informiert mit WPF Blogger

15.01.2009 08:47:57 | Norbert Eder

Gestern wurde auf WPF Blogger ein Update eingespielt. Durch diese Aktualisierung hat sich viel getan: Vieles im Hintergrund, aber auch einige sichtbare Veränderungen. Was ist neu? Ab sofort steht das Archiv zur Verfügung und kann zur Suche älterer Beiträge verwendet werden. Sämtliche Einträge werden nicht mehr vollständig dargestellt....

[[ This is a content summary only. Visit my website for full links, other content, and more! ]]

Windows 7 Secrets

15.01.2009 02:20:03 | Lars Keller

Tim Sneath hat einen sehr ausführlichen Post über Windows 7 geschrieben. Er schreibt über die Neuerungen in Windows 7. Eine gute Übersicht über das eine oder andere nette Feature. Lesenswert!

Link:

HowTo: Einstieg in "Cloud-Computing"

15.01.2009 01:35:15 | Robert Mühsig

Cloud-Computing hört man heute immer mehr - doch was verbirgt sich dahinter? Welche großen Anbieter gibt es im Bereich des "Anwendungshostings" und was ist für Entwickler interessant?

image image image

(more…)

ShareThis

Windows 7 Beta - erster Eindruck

15.01.2009 00:03:40 | Robert Mühsig

Die Windows 7 Beta gibt es seit letzter Woche zum Download und ich habe mir diese parallel auch auf meinem Notebook installiert. Was ist besser als bei Vista? Was gibt es alles in der Beta zu sehen und was enttäuscht etwas.

image 

(more…)

ShareThis

Verlosung: Silverlight 2 Video-Training: Webanwendungen mit Expression Blend und DeepZoom

14.01.2009 20:09:58 | Kay Giza

Ich würde gerne, da ich es persönlich nicht selbst wirklich gebrauchen / nutzen kann, folgendes verlosen, original verpackt versteht sich:

Microsoft Silverlight 2 Video-TrainingMicrosoft Silverlight 2 Video-Training: Webanwendungen mit Expression Blend und DeepZoom
ISBN 978-3-8273-6165-3 - Programmierung, Web-Programmierung, RIA
Neu: Tutorial to go: Mit 13 Videos für iPod, iPhone & Co.
9:45 Stunden Laufzeit mit 76 Lektionen

In diesem Video-Training erklärt Sascha Wolter, wodurch sich die zweite Version von Silverlight auszeichnet, welche Werkzeuge notwendig sind und wie diese funktionieren. Angefangen von Microsoft Expression Blend bis hin zu Microsoft Visual Studio beleuchtet er alle Bausteine Schritt für Schritt anhand eines realen Projekts und garniert mit reichlich Praxiserfahrung. Zahlreiche Tipps rund um Rich Internet Applications komplettieren dieses Training für Designer und Developer. Vielleicht kennt ja der eine oder die andere Sascha von der Xtopia 08, hier gibt es eine Video-Aufzeichnung dazu: 'Silverlight: Der Design-Workflow in der Praxis'

Regeln:

  • Mitmachen kann jeder außer meine Kollegen ;-)
  • Art: Verlosung des oben genannten Video-Trainings
  • Wie: jeder der teilnehmen möchte, muss bitte einen formlosen Kommentar hier zu diesem Blogeintrag hinterlassen. Was nett wäre, wäre was mich persönlich immer sehr interessiert, ob ich etwas anders oder besser hier im Weblog machen sollte, treffe ich die richtigen Themen etc. pp. :)
    • Bitte die E-Mail-Adresse nicht vergessen (wird aber nicht öffentlich angezeigt), mehr nicht - den Rest klären wir dann per E-Mail im Fall dessen.
  • Der Rechtsweg ist ausgeschlossen; je Gewinnspiel-Teilnehmer ist eine Einsendung zulässig; Mehrfach-Einsendungen eines Teilnehmers werden nicht berücksichtigt. Die Gewinner werden unter allen Einsendern der richtigen Lösung durch Ziehung ermittelt. Eine Ausbezahlung der Preise in bar ist nicht möglich; ich übernehme keine Haftung für verloren gegangene, beschädigte, fehlgeleitete oder verspätete Teilnahmen sowie für irgendwelche technische Schwierigkeiten
  • Die Kommentare hier sind moderiert, ich werde Sie periodisch freischalten
  • Teilnahmeschluss ist Donnerstag, 15.01.2009 um 17.00 Uhr: Gewinner der Verlosung: Silverlight 2 Video-Training + Umfangreiche Silverlight-Linkliste

Update: 16.01.2009 - Gewinner wurde ermittelt



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-2009 Kay Giza. All rights reserved. Legal

AccessChk v4.23

14.01.2009 19:41:00 | Ozgur Aytekin

As a part of ensuring that they've created a secure environment Windows administrators often need to know what kind of accesses specific users or groups have to resources including files, directories, Registry keys, global objects and Windows services. AccessChk quickly answers these questions with an intuitive interface and output.

http://technet.microsoft.com/en-us/sysinternals/bb664922.aspx

Autoruns for Windows v9.38

14.01.2009 19:39:00 | Ozgur Aytekin

This utility, which has the most comprehensive knowledge of auto-starting locations of any startup monitor, shows you what programs are configured to run during system bootup or login, and shows you the entries in the order Windows processes them. These programs include ones in your startup folder, Run, RunOnce, and other Registry keys. You can configure Autoruns to show other locations, including Explorer shell extensions, toolbars, browser helper objects, Winlogon notifications, auto-start services, and much more. Autoruns goes way beyond the MSConfig utility bundled with Windows Me and XP.

http://technet.microsoft.com/en-us/sysinternals/bb963902.aspx

Green IT mal anders: Per Fahrgemeinschaft zur CeBIT 2009 nach Hannover

14.01.2009 17:54:26 | Kay Giza

In Zusammenarbeit mit Deutschlands größtem Anbieter von Fahrgemeinschaften Mitfahrzentrale.de bietet Microsoft den Mitgliedern der Microsoft Developer Network (MSDN)-Community einen umweltfreundlichen und kostengünstigen Mobilitätsservice an.

Auf den Seiten der exklusiv für Microsoft eingerichteten „MSDN CeBIT '09-Mitfahrzentrale“ finden Software Entwickler eine Vielzahl von Fahrtmöglichkeiten nach Hannover. Diejenigen, die mit ihrem eigenen Fahrzeug zur Messe fahren, sind aufgefordert, ihre freien Plätze im Auto auf der Plattform anzubieten.
Nach der kostenlosen Registrierung erhalten Sie freien Zugriff auf alle Inserate von und nach Hannover. Machen Sie jetzt mit!
MSDN CeBIT 2009-Mitfahrzentrale -Green IT mal anders - finde ich nett :)

Ab nächster Woche dürfen Sie sich auch bereits jetzt schon auf http://www.msdn-online.de/CeBIT/ auf eine aktualisiertes MSDN CeBIT Portal freuen, was MSDN auf der diesjährigen CeBIT plant.



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-2009 Kay Giza. All rights reserved. Legal

ALT.NET DE Online Meeting #2

14.01.2009 17:09:00 | Peter Bucher

Nachdem ich leider das erste Online Meeting von ALT.NET DE verpasst habe, kann ich hoffentlich am zweiten teilnehmen.

Was ist überhaupt ALT.NET?
Folgend ein Zitat aus der offiziellen Seite:

  • ALT.NET Entwickler verwenden was funktioniert und suchen ständig nach neuen, besseren Lösungen.
  • ALT.NET Entwickler bewegen sich auch außerhalb des Mainstream und verwenden Lösungen, Konzepte, Ideen aus allen Bereichen (Open Source, Agile, Java, Ruby, etc.).
  • ALT.NET Entwickler geben sich mit dem status quo nicht zufrieden und suchen ständig nach Möglichkeiten sich in ihrem Code besser, einfacher und eleganter auszudrücken.
  • ALT.NET Entwickler halten Tools für wichtig, wirklich wichtig sind aber fundierte Kenntnisse und Prinzipien. Die besten Tools sind solche, die einen bei der Anwendung der Prinzipien unterstützen.
    • Die Online Meetings finden nun regelmässig am letzten Montag des Monats statt.
      Das Thema für das zweite Online Meeting lautet "Domain Driven Design" oder kurz "DDD".

      Der nächste Termin lautet also: 26.01.2009 um 20:00 Uhr.
      Weitere Infos und Anmeldung unter: http://altdotnet.de/OnlineMeeting_090126.ashx

      Auch ich möchte Albert danken, die Meetings zu ermöglichen und freue mich schon auf interessante Diskussionen.

      Und fröhlich zwitschern sie...

      14.01.2009 14:32:00 | Peter Bucher

      Nur so als Info, seit einer geraumen Weil bin ich auch bei http://www.twitter.com/ dabei.
      Am Anfang habe ich das nur sporadisch benutzt... aber inzwischen macht es irgendwie Spass und es ist interessant was da überall gezwitschert wird ;)

      Für die die meinen "Zwitschergesängen" folgen möchten:

      @Golo
      Probiers jetzt doch auch mal aus *drängel* ;-)

      Mounten einer VHD Datei unter Windows Server 2008

      14.01.2009 13:29:00 | Michael Schwarz

      Ich habe mir gestern eine VHD Datei gebastelt, die ich als Installationsdatei in einem Hyper-V als auch unter Virtual Server benötige. Damit ich relativ einfach neue Dateien darauf kopieren kann, habe ich mir ein kleines VBScript gebastelt, mit dem ich VHD Dateien unter Windows Server 2008 einfach mounten kann.

      Option Explicit

      Dim WMI
      Dim VHD
      Dim filename

      filename = "G:\HyperV\Windows Server 2003\Harddisk1.vhd"

      Set WMI = GetObject("winmgmts:\\.\root\virtualization")

      Set VHD= WMIService.ExecQuery("SELECT * FROM Msvm_ImageManagementService").ItemIndex(0)

      VHD.Mount(filenmame)
      REM VHD.Unmount(filename)

      Jetzt braucht man nur noch in die Datenträgerverwaltung gehen, und dort die Festplatte auf Online setzen.

      Mount VHD on Windows Server 2008

      Kommerzielle Lizenz für PEX endlich verfügbar

      14.01.2009 12:05:22 | Thomas Schissler

      Endlich gibt es von PEX nun auch eine kommerziell nutzbare Lizenz. Bisher stand nur eine Academic License zur Verfügung, mit der nur “gespielt” werden durfte. Aber welche Aussagekraft hat denn eine Bewertung des Tools mit Demo-Projekten? Jetzt kann man PEX nun endlich auch auf Real-World-Projekte loslassen.

      http://research.microsoft.com/en-us/projects/pex/downloads.aspx

      Erwischt!

      13.01.2009 21:48:01 | Norbert Eder

      Lange habe ich mich bestimmten Social Networks verweigert. Warum weiß niemand so genau. Aber nun - ja, ich weiß, sehr spät - hat es mich auch erwischt. So wurde ich doch noch bekehrt. Dies hatte zur Folge, dass es mich nun auf Facebook gibt. Ebenso finden sich Weisheiten des Tages auf Twitter. Also bleibt nur mehr zu hoffen, dass ich dadurch in...

      [[ This is a content summary only. Visit my website for full links, other content, and more! ]]

      Online Artikel: StyleSwitcher selbst gemacht

      13.01.2009 18:46:00 | Peter Bucher

      asp0208-cover-300px

      In einem früheren Blogpost habe ich den Artikel "Styleswitcher selbst gemacht" vorgestellt, den ich für ASP.NET professional geschrieben habe.
      Mit freundlicher Genehmigung von ASP.NET professional kann ich diesen Artikel auch hier im Blog veröffentlichen.

      Hier findet ihr den Download als PDF:

      Viel Spass beim Lesen!

      Windows – Datenverlust beim Schreiben auf A:\$Mft

      13.01.2009 18:04:00 | Michael Schwarz

      Wir haben hier eine 1 TB große USB Festplatte, eigentlich nur für Datensicherungen gedacht, ab und zu mal was auslagern. Doch seit ein paar Tagen bekomme ich Meldungen wie

      Das Gerät “Standardvolume” kann zurzeit nicht beendet werden. Wiederholen Sie den Vorgang später.

      …oder dann heute als Info Meldung:

      Windows – Datenverlust beim Schreiben: Nicht alle Daten für die Date A:\$Mft konnten gespeichert werden. Daten gingen verloren. Mögliche Ursachen könnten Computerhardware oder Netzwerkverbindungen sein. Versuchen Sie, die Datei woanders zu speichern.

      image

      Ok, abgesehen davon, dass ICH die Datei A:\$Mft gar nicht speichern wollte, ist jetzt meine USB Festplatte im Eimer. Im Internet steht, dass es am Chipsatz Treiber liegt. Woanders wird behauptet, dass alle USB Platten ab 500 GB diese Probleme haben. Irgendwie kann mir das fast wurscht sein, denn meine Daten sind auf jeden Fall weg, und die Platte wird auch auf anderen Rechner nicht mehr als USB Festplatte erkannt, es tut sich nichts.

      Microsoft .NET und die automatische Intranet Zone – SecurityException und AspNetHostingPermission

      13.01.2009 17:57:00 | Michael Schwarz

      Gerade ist es mir wieder passiert, ich versuche eine .NET Anwendung (ok, es ist eine ConsoleApplication349.exe, eine von 348 anderen kleinen Tools die ich mir mal schnell geschrieben habe) von einem Netzwerklaufwerk zu starten. In der .NET 2.0 Konfiguration habe ich angegeben, das alle Programme von diesem Netzwerkpfad (Intranet) unter FullTrust laufen sollen, ich vertraue mir selber.

      Jetzt bekomme ich aber eine Fehlermeldung:

      SecurityException: Fehler bei der Anforderung des Berechtigungstyps System.Web.AspNetHostingPermission, System, Version=2.0.0.0,…

      image

      Mist, was ist denn das jetzt schon wieder! Nach langem hin und her habe ich es dann gefunden. Die Statuszeile des Datei Explorers zeigt es auch, wenigstens ganz unscheinbar, aber es steht da. Das Netzwerklaufwerk wird anstatt in der Intranet Zone in der Internet Zone ausgeführt, und meine Konfiguration für .NET 2.0 Assemblys ignoriert, hatte ich ja nur für die Intranet Zone verändert.

      image

      Doch warum denkt Windows (oder das .NET Framework), dass sich das Laufwerk plötzlich im Internet befindet? In den meisten Fällen liegt es daran, dass man das Laufwerk über einen UNC Pfad mit IP Adresse verbunden hat, aber dem ist nicht so.

      Im Internet Explorer gibt es eine Einstellung, die das automatische Zuordnen von Intranet und Internet vornimmt. Stellt man die automatische Zuordnung ab, dann werden die Pfade in die Internet Zone geschoben, es sei denn, sie stehen explizit in der Intranet Liste.

      image

      Wieder etwas gelernt, das erste Kontrollkästchen behebt das Problem. Das ist zwar standardmäßig aktiviert, hier hatte ich aber mal etwas ausprobiert.

      Sauberes XAML

      13.01.2009 14:38:36 | Norbert Eder

      Jaime Rodriguez hat einen Draft seiner XAML Guidelines veröffentlicht. Der Draft-Status sollte dabei nicht verunsichern, stellt er doch sicher, dass Verbesserungen und Erweiterungen am Dokument vorgenommen werden. Warum kann ich dieses Dokument empfehlen? Guidelines sind ein wichtiges Instrument, um ein gewisses Maß an Vereinheitlichung zu...

      [[ This is a content summary only. Visit my website for full links, other content, and more! ]]

      Neue Versionen der VisualSVN-Produkte

      13.01.2009 14:10:16 | Gordon Breuer

      This article is also available in English! This article is also available in English!

      VisualSVN Heute Nacht gab es ein paar kleinere Updates des beliebten Subversion-Addins für Visual Studio 2003, 2005 und 2008. Laut der Änderungshistorie wurde das Addin auf die Version 1.5.5 von Subversion aktualisiert. Außerdem wurde ein Bug behoben, der Visual Studio bei deaktivierter Internet Verbindung sehr langsam starten ließ. Die aktualisierte Version trägt die Versionsnummer 1.6.1.

      Der VisualSVN-Server, über den ich schon einmal berichtet habe, wurde ebenfalls aktualisiert auf Version 1.6.3 – auch hier wurde Subversion auf Version 1.5.5 aktualisiert. Zusätzlich wurde aus Sicherheitsgründen das SSL-Protokoll 2.0 deaktiviert und die beiden Apache-Module mod_alias und mod_proxy sind nun im Installationspaket enthalten.

      Die Updates sind für alle Benutzer zu empfehlen und können über die Website des Herstellers heruntergeladen werden:

      VisualSVN – Addin für Visual Studio (Version 1.6.1, ~4MB)

      VisualSVN-Server (Version 1.6.3, ~4 MB)

      Buchtipp: User Interface-Design mit Expression Blend 2

      13.01.2009 13:56:15 | Steffen Ritter

      Heute erscheint das Buch "User Interface-Design mit Expression Blend 2" von Daniel Greitens, seines Zeichens Blend-Profi und Geschäftsführer der erfolgreichen Agentur maximago. Soweit ich weiß ist dies das bisher erste und einzige Buch zu Expression Blend 2 -- wobei es über ein einfaches Handbuch weit hinaus geht und speziell das Thema Interface Design/Design gut anpackt und nachvollziehbar präsentiert. 

      Zum Inhalt:

      Grundlagen:

      • Philosophie des UI-Designs und des neuen Workflows
      • Technologien: WPF, Silverlight, XAML
      • Einführung in Expression Blend
      • Wissenschaftliche Grundlagen des UI-Designs
      • Planung eines User Interface
      Praxisbeispiel:
      • Analyse und Planung
      • Grundaufbau des User Interface
      • Animation, Sound und .NET
      • Steuerelementdesign, Abschluss und Evaluierung
      Auf DVD:
      • Quellcode und Beispiel-Projekte
      • eBook-Version des Buches
      • 30-Tage-Testversion von Blend 2 (deutsch)
      • 30-Tage-Testversion von Design 2 (deutsch)
      • Visual Studio 2008 Express Editions

      Expression Blend ist der zentrale Bestandteil von Microsoft Expression Studio. Dieses Werkzeug verändert als Schnittstelle zwischen Design und Programmlogik traditionelle Herangehensweisen bei der Entwicklung des User Interface (UI) für Desktop- und Webanwendungen. Einerseits wird das Design in einer eigenen Beschreibungssprache (XAML) verwaltet und bleibt damit unabhängig vom Programmcode editierbar, andererseits sind Expression Blend-Projekte vollständig kompatibel mit Visual Studio 2008 und können dort vom Entwickler bearbeitet werden.

      Weitere Informationen zu diesem Buch direkt bei MS Press unter: http://www.microsoft-press.de/product.asp?cnt=product&id=ms-5433&lng=0

      Liste der 25 gefaehrlichsten Programmierfehler

      13.01.2009 13:29:28 | Kay Giza

      Wie Golem.de berichtet, hat eine Gruppe internationaler Programmierexperten eine Liste der 25 gefährlichsten Programmierfehler veröffentlicht. Sie sollen für Sicherheitslöcher verantwortlich sein und Datenspionage ermöglichen. Golem.de weiter: die meisten Programmierer achteten nicht darauf, diese Fehler zu vermeiden. Verschiedene Experten haben sich auf eine Liste der 25 gefährlichsten Programmierfehler geeinigt. Beteiligt waren Mitarbeiter der National Security Agency und des Department of Homeland Security ebenso wie Experten von Microsoft, Oracle, Symantec und Red Hat. Auch verschiedene Universitäten beteiligten sich. Aus diesem Anlass möchten ich hier gerne auf das MSDN Security Developer Center sowie den ‘Microsoft Security Development Lifecycle (SDL)‘ hinweisen.

      Insbesondere sollte man sich anschauen:



      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-2009 Kay Giza. All rights reserved. Legal

      30 Windows 7 Secrets – Wer hat’s schon gewusst?

      13.01.2009 12:33:00 | Michael Schwarz

      Tim Sneath von Microsoft hat ein paar Windows 7 Secrets auf seinem Blog veröffentlicht:

      1. Windows Management
      2. Display Projection
      3. Cut Out The Clutter
      4. Multi-Monitor Windows Management
      5. Command Junkies Only
      6. It’s a Global Village
      7. The Black Box Recorder
      8. The Font of All Knowledge
      9. Gabriola
      10. Who Stole My Browser?
      11. Rearranging the Furniture
      12. Installing from a USB Memory Stick
      13. I Want My Quick Launch Toolbar Back!
      14. It’s a Drag
      15. Standars Support
      16. Windows Vista-Style Taskbar
      17. Peeking at the Desktop
      18. Running with Elevated Rights
      19. One More of the Same, Please
      20. Specialized Windows Switching
      21. Walking Through the Taskbar
      22. The Widscreen Tip
      23. Pin Your Favorite Folders
      24. Starting Explorer from “My Computer”
      25. ClearType Text Tuning and Display Color Calibration
      26. ISO Burning
      27. Windows Mobie Maker
      28. Hiding the Windows Live Messenger Icon
      29. Enjoy The Fish
      30. When All Else Fails…

      Mit Windows 7 ortsabhängig drucken – Standarddrucker passt sich an Netzwerkumgebung an

      13.01.2009 11:59:00 | Michael Schwarz

      Georg schreibt auf seinem Vistablog über Windows 7 und der Location Based Printer Funktionalität in der aktuellen Beta. Damit kann man je nach Netzwerkumgebung den Standarddrucker automatisch anpassen lassen. Bis jetzt musste man dafür Zusatztools wie z.B. Mobile Net Switch installieren.

      Was mich noch mehr interessieren würde ist die Möglichkeit, dass ich mir meine Drucker einmal konfiguriere, und diese am NT Benutzer (Domänenbenutzer) hängen, und nicht lokal gespeichert werden. Großer Vorteil: ich könnte mich überall anmelden, und habe immer die richtigen Drucker.

      Manchmal wäre auch so etwas wie “Wo finde ich den nächsten Farbdrucker?” oder “Drucke auf den nächsten Laserdrucker” praktisch, auch wenn das noch mehr Aufwand wäre.

      Neues Feedback Programm bei Microsoft

      13.01.2009 08:45:00 | Michael Schwarz

      Bei so vielen Beta Versionen, CTPs oder anderen Vorabversionen von Microsoft Produkten weiß ich schon gar nicht mehr, wo ich überall Feedback geben kann. Normalerweise mache ich das über Microsoft Connect, teils über die Newsgroups (Connect) oder direkt über die Teams, wenn ich mit denen schon einmal Kontakt hatte.

      Nun hat Microsoft einen neuen Weg, über input.microsoft.com:

      Here's your chance to help improve Microsoft products by submitting feedback that will be sent directly to the folks working on the features.

      Sobald man sich mit seiner Live ID angemeldet hat, kann man zu den verschiedenen Programmen Feedback geben. Dabei muss man unterschiedliche Tests durchführen, und dann Fragen beantworten, ähnlich der Umfragen auf Connect, nur eben ausgerichtet auf ein spezielles Thema, z.B. “Finde ein Programm im Startmenü”. Aktuell habe ich Umfragen zu Windows 7, den Netzwerk Monitor 3.2 als auch neue .NET Technologien inkl. Oslo, Dublin.

      Nur noch wenige Tage, dann steht der Gewinner des MSDN Premium Abos inkl. Visual Studio Team System 2008 Team Suite fest

      13.01.2009 00:45:00 | Michael Schwarz

      working file Seit ein paar Tagen verlose ich hier auf meinem Blog ein MSDN Premium Abo. Dieses MSDN Abo enthält fast alle Microsoft Produkte, mehr Infos gibt’s beim Abonnementvergleich. Der Gegenwert des MSDN Premium Abos ist dort mit ganzen 11.711,29€ angegeben, wow!!

      Außerdem habe ich noch einige .NET Bücher und andere Visual Studio Lizenzen zu vergeben. Also, schreibt euren Kommentar noch bis zum 22. Januar 2009 und nehmt damit automatisch an der Verlosung teil.

      Links 234 – 13. Januar 2009

      13.01.2009 00:28:00 | Michael Schwarz

      Probleme mit C++ Build Times?

      12.01.2009 16:08:00 | Christian Binder

      Wer Probleme mit seinen C++ Build Times hat, findet bei Xoreax Software eine Lösung, die sich in Visual Studio 2005/2008 integriert und via Grid Computing den Build Process bis zu 20x beschleunigen soll.
      Eine Testversion gibt’s Hier

      Chris

      Jetzt gewinnen!

      12.01.2009 15:47:10 | Norbert Eder

      Noch ganz kurz geht das Gewinnspiel auf .NET GUI. Worum geht es? Beim How-To Gewinnspiel kannst du für das Schreiben eines kurzen How-Tos ein Ticket für die Hauptkonferenz der BASTA! Spring gewinnen. Beeilung ist angesagt, denn das Gewinnspiel läuft nur noch bis 16. Januar 2009. Also schnell die genauen Anforderungen lesen und hier abgeben.

      [[ This is a content summary only. Visit my website for full links, other content, and more! ]]

      Warum bitte ist Sri Lanka so an Windows 7 interessiert?

      12.01.2009 15:22:00 | Michael Schwarz

      Ich habe gerade mal bei Google Insights for Search nach dem Begriff Windows 7 gesucht, und dabei festgestellt, dass Sri Lanka irgendwie die meisten Suchanfragen gestellt hat, obwohl die doch so klein sind, woran das wohl liegen mag?

      Links 234 – 12. Januar 2009

      12.01.2009 14:58:00 | Michael Schwarz

      ALT.NET DE Online Meeting # 2 - DDD

      12.01.2009 13:11:00 | Sebastian Jancke

      Am 26.01.2009 finded das zweite Online Meeting der ALT.NET DE statt (danke Albert!). Albert hat mich gebeten, einen Vortrag zum Thema Domain Driven Design zu halten.

      Diesmal habe ich mir überlegt, weniger Focus auf die Patterns (und ihre wörtliche Repräsentation) zu legen und zunächst mehr Raum für offene Fragen und Probleme rund um die Basis (UL, Domänenexperte) zu haben. Anlass waren die letzten Diskussion auf der DDD-Mailingliste in denen klar wurde, das selbst der "Domänenexperte" an sich nicht immer leicht zu identifizieren ist, geschweige denn jeder Zugang dazu hat. Im Anschluss an dieses Fundament möchte ich diskutieren, welchen Rahmen Architektur schaffen muss/sollte/kann um die Arbeit mit und an einem Domänenmodell zu erleichtern.
      Als Basis soll ein fiktives (aber für mich aktuelles) Beispiel zum Thema "Order Processing" dienen.

      Ich erhoffe mir, dass der Vortrag Anregung zu Fragen und vor allem auch Diskussion des Themas gibt.

      2. Online Meeting ALT.NET DE: Domain Driven Design

      12.01.2009 10:44:06 | Albert Weinert

      Am Montag den 26. Januar ab 20 Uhr findet das 2. ALT.NET DE Online
      Meeting statt.

      http://www.altdotnet.de/OnlineMeeting_090126.ashx

      Sebastian Jancke hat sich bereit erklärt einen kurzen Vortrag zu Domain
      Driven Design (DDD) zu halten. Danach ist Zeit für Diskussion und Fragen
      (daran darf sich natürlich jeder beteiligen). Ein Headset ist dafür Hilfreich, aber nicht erforderlich.

      Damit wir einen ungefähre Ahnung haben mit was für einem Andrang gerechnet werden (ich muss bei LiveMeeting die ungefähre Zahl der Teilnehmer angeben) tragt euch bitte im Wiki ein, oder hinterlasst hier kurz einen Hinweis. Dann trage ich euch dort ein. Natürlich darf man auch unangemeldet auftauchen.

      Die nächsten geplanten Termine sind der 9. Februar 2009 (Clean Code
      Developer) und der 23. Februar 2009 (T/BDD).

       

      Technorati-Tags: ,,,,,

      Signaturen in Outlook kopieren

      12.01.2009 09:38:45 | Thomas Schissler

      Bisher war für mich das Pflegen meiner verschiedenen Signaturen im Outlook immer ein Horror. Wenn ein neuer Rechner eingerichtet wurde, musstden die Signaturen wieder mühsam angelegt werden und wenn es Änderungen gab, dann grauste es mich schon davor, diese auf allen Instanzen anzupassen.

      Dank Lars kenne ich nun aber einen einfacheren Weg. Die Signaturen werden nämlich einfach im Filesystem abgelegt und zwar unter %UserProfile%\AppData\Roaming\Microsoft\Signatures. Diese Files lassen sich einfach auf einen neuen Rechner kopieren (sogar bei laufendem Outlook sind die Signaturen dann sofort verfüpgbar!) oder sie können zwischen mehreren Rechnern einfach synchronisiert werden.

      Super cool. Vielen Dank Lars, du hast mir das Leben wirklich erleichtert!

      Windows SDK fuer Windows 7 und .NET Framework 3.5 SP1 [BETA]

      12.01.2009 06:04:06 | Kay Giza

      Microsoft hat jetzt das 'Windows SDK für Windows 7 und .NET Framework 3.5 SP1' in einer Beta-Version veröffentlicht. Das SDK enthält u.a. eine umfangreiche Dokumentation, Beispiel-Codes, Header Files, Bibliotheken und weitere Tools (u.a. C++ Compilers). Weitere Informationen liefern auch die 'Release Notes for Windows® Software Development Kit (SDK) for Windows 7 and .NET Framework 3.5 Service Pack 1: Beta ' sowie das 'Windows SDK Developer Center' auf MSDN... [...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-2009 Kay Giza. All rights reserved. Legal

      Wenn ich ein Entwickler wäre ... (Teil 1)

      11.01.2009 20:11:00 | Ozgur Aytekin

      Meine Arbeitskollegen und Klienten sorgen sich um meine Gesundheit. Sie stellen sich die Frage, ob ich den langen Zeitraum, den ihre Projekte oder ihre Software in Anspruch nimmt, überleben werde? Wenn sie erfahren, dass ich in den Urlaub gehen möchte, fürchten sie, dass Software nicht mehr funktioniert, bei der ich am meisten fachlichen und technischen Know-how unter den Entwicklern besitze. Oder die aktuellen Projekte, bei denen ich das Entwicklungsteam vertrete, zum Stehen kommt und die kostbare Zeit während meiner Abwesenheit nicht genutzt wird, um die noch fehlenden Features zu implementieren.

      Weder meine Arbeitskollegen noch Klienten lassen mich vergessen, dass ich zu beschäftigt bin. Aber damit erfüllen sie nur ihre Aufgabe und teilen mir ihr Bedenken mit. Ich habe sie gebeten, mit mir direkt und offen zu kommunizieren. Sogar potenzielle neue Klienten erinnern mich an meine Situation und stellen in ihren E-Mails oder bei unseren Gesprächen die Frage: >>Nehmen Sie immer noch neue Anfragen entgegen?<<

      Wir Entwickler haben ein Glaube an einer persönlichen Besonderheit, die Überzeugung, dass wir von der fachlichen Notwendigkeit der Informatik ausgenommen sind und die Entwicklung einer Software mit heutigen Tools so vereinfacht ist, dass wir mit Leichtigkeit die Software-Projekte durchführen können.

      Ich erinnere mich, wie ich vor vielen Jahren ein Interview hatte, weil ich eine neue Herausforderung suchte. Die gegenüberstehende Person stellte mir eine Frage über Datenbankmodellierung, die ich als meine persönliche Stärke angegeben hatte. Seine Frage konnte ich schnell beantworten, weil ich bereits ein ähnliches Problem gelöst und implementiert hatte. Nach dem er meine Antwort kommentierte, dass das Model zu kompliziert sei und das man es mit einem einfachen Model lösen konnte, wurde mir klar, dass ich noch vieles lernen müsste. Ich musste damals lernen, meine Lösungsvarianten auch von anderen Blickwinkeln aus zu betrachten, bevor ich mich für eine Lösung entscheide.

      Mein nächstes Buch „Wenn ich ein Entwickler wäre ...“

      11.01.2009 20:10:00 | Ozgur Aytekin

      Ich habe mein nächstes Buch „Wenn ich ein Entwickler wäre ...“ angefangen, in dem ich die IT-Welt vom Blickwinkel eines Softwareentwicklers beschreibe. In diesem Buch wird der Schwerpunkt beim Umgang zwischen den Entwicklern und den Benutzern bzw. den Klienten liegen.

      Ich glaube, dass der Entwickler fachlich genügend Know-how besitzt, um in einem Entwicklungsprojekt zu arbeiten aber seine Soft Skills sind meistens die Quelle der Probleme in den Projekten.

      Die Drafts von meinem neuen Buch möchte ich mit euch teilen, damit das Buch auch eure Probleme und Erfahrungen beinhaltet, die ihr als Softwareentwickler bis jetzt erlebt und gewonnen habt.

      Für eure wertvollen Feedbacks freue ich mich jetzt schon und wünsche viel Spaß beim Lesen und Verfolgen meiner Texte.

      Wie kann ich eine Windows Forms Anwendung in den Tray starten?

      11.01.2009 14:56:41 | Klaus Bock

      Wer schon einmal versucht hat eine Windows Forms Anwendung in den Tray zu starten hat bestimmt schnell festgestellt, dass dem Problem mit dem üblichen Vorgehen wie etwa:

      this.Hide();
      this.Visible = false;

      nicht beizukommen ist.
      Hier bietet die Eigenschaft WindowState der Form-Klasse Abhilfe. Um die Form auch wirklich nur im Tray anzuzeigen muss noch die Eigenschaft ShowInTaskbar auf false gesetzt werden.
      Da die Form wahrscheinlich nicht immer in den Tray gestartet werden soll, muss auch die Methode Main der zugehörigen Program-Klasse angepasst werden, da ja auf ein Argument geachtet werden soll. Der Konstruktor der Form-Klasse muss ebenfalls angepasst werden um von der Program-Klasse entsprechend gestartet werden zu können. Im folgenden Beispiel wird eine Form mit dem Namen MainForm verwendet in der ein NotifyIcon mit dem Namen trayIcon vorhanden ist. die Anwendung soll mit dem Argument min in den Tray gestartet werden. Also z.B. TestApp.exe min
      Also muss zunächst die Klasse Program das Argument verarbeiten und an den Konstruktor der Klasse MainForm weiterreichen.

      [STAThread]
      static void Main(string[] args)
      {
          bool startminimized = false;
      
          if (args.Length == 1)
          {
              if (args[0].ToUpperInvariant().Equals("MIN"))
              {
                  startminimized = true;
              }
          }
      
          Application.EnableVisualStyles();
          Application.SetCompatibleTextRenderingDefault(false);
      
          Application.Run(new MainForm(startminimized));
      }

      Bis jetzt weis die Klasse MainForm, dass sie in den Tray starten soll, da der Konstruktor der Klasse einen Parameter vom Typ bool verarbeitet.

      Es ist zu beachten, dass die Form erst minimiert wird, nachdem InitializeComponent() im Konstruktor aufgerufen wurde. Ich fasse gerne die UI-Relevanten Zuweisungen in einer eigenen Methode zusammen, um Änderungen und Anpassungen nur an einem Platz vornehmen zu müssen. Diese Methode wird im Konstruktor immer unmittelbar nach InitializeComponent() aufgerufen. In diesem Fall kann der Konstruktor-Parameter gleich weitergereicht werden.

      public MainForm(bool minimize)
      {
          // hier andere Konstruktor-Code
      
          // Komponenten und UI initialisieren
          this.InitializeComponent();
          this.InitializeUI(minimize);
      
      }
      
      private void InitializeUI(bool minimized)
      {
          // Form und trayIcon-Ressourcen zuweisen
          this.Text = Resources.MainForm_Text;
          this.trayIcon.Icon = Resources.trayIcon01;
          this.trayIcon.Text = this.trayMessageText;
      
          // prüfen ob in den Tray gestartet wird
          if (minimized)
          {
              this.WindowState = FormWindowState.Minimized;
              this.ShowInTaskbar = false;
              this.trayIcon.Visible = true;
              this.isInTray = true;
          }
      }

      Jetzt wird bei Übergabe des Arguments min an die Anwendung diese komplett Initialisiert, anschließend ausgeblendet und statt dessen das NotifyIcon im Tray angezeigt. Die Anwendung ist jetzt weder in der Liste der aktiven Anwendungen (ALT+TAB) noch in Flip-3D ( Windows-Logo-Taste+TAB) zu sehen.
      Wenn die Form wieder auf dem Desktop angezeigt wird und in der Taskleiste sichtbar sein soll, darf natürlich nicht vergessen werden, die Eigenschaft ShowInTaskbar wieder auf true zu setzen. Hier bietet sich der Ereignishändler an, welcher die Form wieder aus dem Tray holt.

      Zum Schluss noch ein Tipp zum debuggen der Anwendung. Um eine Übergabe des Arguments min beim debuggen zu simulieren, kann hier wunderbar die Eigenschaft IsAttached der Debugger-Klasse im Konstruktor der MainForm-Klasse verwendet werden.

      public MainForm(bool minimize)
      {
          // prüfen ob die Anwendung in der IDE läuft
          if (Debugger.IsAttached)
          {
              minimize = true;
          }
      
          // hier der Konstruktor-Code.
      }

      Playstation Home mit fadem Beigeschmack

      11.01.2009 12:56:25 | Norbert Eder

      Lange angekündigt, lange haben wir gewartet bis es dann endlich verfügbar war. In den letzten Tagen und Wochen habe ich mir Home des Öfteren angesehen. Es ist zwar ganz nett, mal eben zur Bowling-Bar zu gehen, um ein paar Runden zu spielen, den einen oder anderen kennen zu lernen. Aber mehr ist da noch nicht vorhanden. Es fehlt an allen Ecken...

      [[ This is a content summary only. Visit my website for full links, other content, and more! ]]

      Writing to an operating system file using the SQL Server SQLCLR

      11.01.2009 12:54:00 | Ozgur Aytekin

      The solution is to create a stored procedure that is implemented in the SQLCLR, which allows writing code in .Net languages and running them within SQL Server. Stored procedures can be written in C#, VB.Net or C++ and the compiler produces an assembly, which is the code compiled into .Net Intermediate Language (IL). The assembly is then loaded into SQL Server and a stored procedure is defined to call one of the static methods in the assembly. When the stored procedure is invoked by a T-SQL EXECUTE statement the .Net assembly is loaded, Just-in-Time (JIT) compiled into machine code and the machine code is loaded into SQL Server's memory. SQLCLR code is similar to extended stored procedures and it is intended to replace extended stored procedures when that feature is phased out of SQL Server in a future release.

      http://www.mssqltips.com/tip.asp?tip=1662

      Rechtschreibprüfung für WPF Anwendungen

      11.01.2009 11:44:24 | Norbert Eder

      Eine Rechtschreibprüfung in eigenen Anwendungen kann schon sehr hilfreich, jedoch auch aufwändig zu implementieren sein. Dank WPF beträgt der Aufwand nicht mehr als das Setzen einer Eigenschaft. Für Texteingabe-Steuerelemente (alle Elemente, die von TextBoxBase erben) wie TextBox und RichTextBox, steht SpellCheck zur Verfügung. Dessen...

      [[ This is a content summary only. Visit my website for full links, other content, and more! ]]

      Windows 7 Beta auf Virtual PC 2007 SP1 installieren

      11.01.2009 11:36:14 | Kay Giza

      Kollege Brian Keller (Technical Evangelist für Microsoft Visual Studio Team System) erklärt in seinem Weblog anschaulich, wie man Windows 7 Beta auch als Virtual PC in Virtual PC 2007 installieren und nutzen kann.

      Also:

      1. Download: Windows 7 Beta
        Inhaber einer MSDN Subscription: Windows 7 (Beta)
        Öffentlich frei zugänglicher Download: Kundenvorschauprogramm für Windows 7 Beta (inkl. Download)
         
      2. Virtual PC 2007 installieren
        - Virtual PC 2007 - Deutsch (kostenloser Download)
        - Microsoft Virtual PC 2007 SP1
         
      3. Lesen Sie Brian Kellers Blogeintrag: Installing the Windows 7 Beta with Virtual PC 2007 SP1 (englisch)


      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-2009 Kay Giza. All rights reserved. Legal

      Windows 7 Beta Customer Preview Program [Download]

      11.01.2009 11:07:55 | Kay Giza

      In meinem Blogposting 'Windows 7 Betaversion als Download verfügbar' habe ich ja schon auf die Download-Möglichkeit für Inhaber einer MSDN Subscription hingewiesen. Seit dem Wochenende kann ja jedermann auf die Windows 7 Beta-Version zugreifen.

      MSDN hat jetzt ein Kundenvorschauprogramm für Windows 7 Beta (englisch: Customer Preview Program) gestartet.
      Sie erhalten darüber auch als nicht MSDN Subscription-Inhaber die Windows 7 Beta-Version. Sie können sich mit diesem Programm über Windows 7 Beta stetig informieren, evaluieren Ihre Entwicklungsbemühungen in Windows 7 Beta und bleiben auf dem Laufenden über Updates und Informationen über neue Ressourcen per E-Mail. Hilfe zur Installation erhalten Sie hier: Windows 7 Beta installieren

      Link: Kundenvorschauprogramm für Windows 7 Beta (inkl. Download)
      PS: Kennen Sie schon die "Windows 7 Developer White Papers" von der PDC08?
       



      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-2009 Kay Giza. All rights reserved. Legal

      Microsoft Tag – Eine Weiterentwicklung des QRCode und Datamatrix Code

      09.01.2009 23:34:00 | Michael Schwarz

      Microsoft hat nun auch einen eigene Tag Technology für Barcode Leser, High Capacity Color Barcodes (HCCBs). So in etwa sieht das dann aus aus:

      Microsoft Tag Und um das gleich selber mal auszuprobieren, liefert Microsoft eine kostenlose Software an für Windows Mobile Geräte mit Kamera, oder ihr geht direkt auf http://gettag.mobi/. Unterstützt werden übrigens Windows Mobile 5 und 6, Symbian S60, J2ME Geräte als auch Blackberry 81xx,8300 und Bold… und das iPhone fehlt auch nicht, prima!

      istartedsomething.com hat auch schon darüber geschrieben, scheint wirklich nicht anfällig auf Störungen zu sein, muss ich gleich mal ausprobieren.

      Update: derzeit funktioniert Microsoft Tag nur mit der Spracheinstellung en-us im Web Browser, also erst einmal umstellen.

      Vorzeitiges Aus für öffentliche Windows 7 Beta – Microsoft war dem Ansturm doch nicht gewachsen

      09.01.2009 23:26:00 | Michael Schwarz

      Auf der Registrierungsseite für den öffentlichen Windows 7 Beta Download ist folgendes heute Nachmittag zu lesen:

      image

      Was heißt hier “coming soon”, das ging doch heute schon mal ein wenig. Aber irgendwie war alles ultra-langsam, hat mich an den Ansturm auf das iPhone erinnert, aber diesmal halt bei Microsoft.

      AUf dem Windows 7 Blog ist weiter zu lesen, dass Microsoft nicht in der Lage ist, diesen Ansturm zu befriedigen:

      Due to very heavy traffic we’re seeing as a result of interest in the Windows 7 Beta, we are adding some additional infrastructure support to the Microsoft.com properties before we post the public beta. We want to ensure customers have the best possible experience when downloading the beta, and I’ll be posting here again soon once the beta goes live. Stay tuned! We are excited that you are excited!

      Auch wenn Microsoft sich über die vielen Beta Tester freut, habe ich ein schlechtes Gefühl, wenn ich an Windows Azure denke. Was ist, wenn ich meine Software auf Microsoft Servern laufen lasse, und die dann plötzlich auch einbrechen, weil die Authentifizierung meiner Live ID sich brutal verlangsamt? Hoffen wir, dass Microsoft da noch ihre Infrastruktur etwas weiter ausbaut.

      WLAN aus Hyper-V VMs nutzen

      09.01.2009 22:12:23 | Thomas Schissler

      Standardmäßig kann aus einer Hyper-V VM die WLAN-Verbindung des Host-Systems nicht mit genutzt werden. Das ist allerdings gerade bei Notebooks eine Einschränkung. Es gibt allerdings 3 verschiedene Wege, dieses Problem zu umgehen.

      Ich selbst komme momentan mit dieser Lösung ganz gut zurecht. Einen ausführlichen Artikel mit den beiden anderen Lösungen gibt es hier.

      http://sqlblog.com/blogs/john_paul_cook/archive/2008/03/23/using-wireless-with-hyper-v.aspx

      Windows 2008 Server im Vista-Kleid

      09.01.2009 21:52:32 | Thomas Schissler

      Inzwischen gibt es eine verstärkte Diskussion, ob der Windows 2008 Server nicht die bessere Workstation ist. Sicher hängt das vom jeweiligen Einsatzgebiet ab. Bei mir war es so, dass ich für den Team Foundation Server einen Server als Betriebssystem auf meinem Demo-Rechner benötigt habe. Dabei wollte ich aber nicht auf den Komfort und das Design von Vista verzichten und auch Features wie z.B. den Sidebar nutzen. Die erste gute Nachricht ist, dass man Win2008 so anpassen kann, dass es sich optisch kaum von Vista unterscheiden lässt und die zweite gute Nachricht ist, dass es mit Hilfe eines kleinen Tools ganz einfach ist und schnell geht. Selbst Aero ist damit möglich.

      Win2008Aero 

      http://www.win2008workstation.com/wordpress/2008/07/17/windows-server-2008-workstation-converter/

      I love my job!

      09.01.2009 18:20:33 | Gordon Breuer

      (c) Rainer Sturm - weltweite Verbindung I love my job, I love the pay!
      I love it more and more each day.
      I love my boss, he is the best!
      I love his boss and all the rest.

      I love my office and its location, I hate to have to go on vacation.
      I love my furniture, drab and drey, and piles of paper that grow each day!
      I think my job is really swell, there’s nothing else I love so well.
      I love to work among my peers, I love their leers, and jeers, and sneers.
      I love my computer and its software;
      I hug it often though it won’t care.
      I love each program and every file.
      I’d love them even more if they worked a while.

      I’m happy to be here. I am. Iam.
      I’m the happiest slave of the Firm, I am.
      I love this work, I love these chores.
      I love the meetings with deadly bores.
      I love my job – I’ll say it again – I even love those friendly men.
      Those friendly men who’ve come today,
      In clean white coats to take me away…

      source: unknown

      CCD - Das S in SOLID

      09.01.2009 16:47:54 | Rainer Schuster

      Wie angekündigt aus einem vorherigen Post will ich etwas auf die Prinzipien eingehen. Es hat sich in der Zwischenzeit ja durch Ralf Westphal und Stefan Liser in dieser Richtung auch nochmal einiges getan, die CCD-Initialive.

      Und wie der Zufall so will, hat Scott Hanselman gerade diese Woche einen Webcast über S.O.L.I.D. gehalten. Nach seinem Webcast Nr. 145 mit Unclebob, wie Robert C. Martin ja in der Community genannt wird, habe ich mir deshalb gedacht ich schreibe ein bischen zusammen wofür das Single Responsibility Prinzip steht - um es einfach nochmal aufzufrischen und zu reflektieren.

      Und hier nun nicht nur die reflektierten Hanselminutes des S, sonder auch noch ein paar eigene Meinungen von mir:

      • Eine Klasse oder auch Funktion sollte nur einen einzigen Grund haben sich zu ändern
      • Daraus folgt, dass diese sehr klein gehalten werden (Funktion niemals größer als eine Bildschirmseite ca. 50 Zeilen, besser noch kleiner ca. 10-20)

      Vorteile:

      • Einfache Namesfindung von Bezeichner
      • Es gibt nur eine Zuständigkeit, die frei von Seiteneffekt geändert werden kann. Membervariablen sind nur noch für einen speziellen Zweck und es besteht nicht die Gefahr sie für die anderen zu missbrauchen oder schädigend zu ändern
      • Wiederverwendbarkeit von Code wird hierdurch wiederum erhöht
      • Das System kann sehr feingranularer und damit präziser beschrieben werden
      • Prakmatische Bezeichner Helfen das System deklarativer zu gestallten
      • Code-Kommentare werden zunehmend weniger (nicht überflüssig) da die längeren Namen für Funktionen, Klassen und ihren Entitäten länger und damit ausdrucksstärker werden

      Nachteile:

      • Lange Bezeichner
      • größerer Verwaltungsaufwand

      Hanselminutes 145 öffnen

      Developer Basics: Knackige User Interfaces mit WPF - eine Einführung

      09.01.2009 07:27:38 | Norbert Eder

      Microsoft Österreich veranstaltet heute für .NET Einsteiger einen Webcast zum Thema Developer Basics: Knackige User Interfaces mit WPF - eine Einführung. Dieser Webcast richtet sich an Beginner in .NET und wird von Max Knor abgehalten. Lernen Sie in diesem Webcast wie Sie die Geschäftslogik von der Präsentationsoberfläche Ihrer Anwendung...

      [[ This is a content summary only. Visit my website for full links, other content, and more! ]]

      Windows 7 Betaversion als Download verfuegbar

      08.01.2009 19:49:39 | Kay Giza

      Inhaber einer MSDN Subscription können ab sofort die aktuelle Betaversion von Windows 7 herunterladen. Zur Verfügung stehen auch deutschsprachige Versionen, natürlich sowohl für 32- wie auch für 64-Bit-Architekturen. Zur Information steht zudem ein englischsprachiges Dokument mit „Release Notes“ bereit, ein Windows 7 Developer Guide und dazugehörige Einführung sowie ein Einführungsvideo. Bereits zum Beginn des Wochenendes wird auch eine Downloadmöglichkeit für alle Entwickler sowie die interessierte Allgemeinheit über die öffentliche Windows 7-Website verfügbar sein. Dieser öffentliche Download wird jedoch nur über einen begrenzten Zeitraum hinweg verfügbar sein: Immerhin bis zu 2,5 Millionen Beta-Testern soll das mehrere GB schwere Downloadpaket jedoch angedient werden.

      Download:


      Via MSDN Subscriber-Download ist verfügbar:

      • Please Read: A notice from MPEG LA, LLC about the H.264/AVC Visual Standard – (English)
        Dateiname: en_mpeg_la_llc_licensing_notice_readme.doc
        Bereitstellungsdatum (UTC): 1/5/2009 7:49:33 PM
        SHA1: FB1D8DAC53EA1F0BD6018BCB863827919DE436E8
        ISO/CRC: 371815D2
         
      • Update for Windows 7 Beta (KB961367) (x64)
        Dateiname: update_for_windows_7_beta_x64_kb961367.msu
        Bereitstellungsdatum (UTC): 1/6/2009 7:15:54 PM
        SHA1: 5228F60EDAE124203AC08CCED57539CA0EEB1113
        ISO/CRC: 71CB9CBE
         
      • Update for Windows 7 Beta (KB961367) (x86)
        Dateiname: update_for_windows_7_beta_x86_kb961367.msu
        Bereitstellungsdatum (UTC): 1/6/2009 7:15:54 PM
        SHA1: 5D89B057874F5D10A4C90EB2021F23EA9850DEB9
        ISO/CRC: C370B735
         
      • Windows 7 Beta (x64) - DVD (German)
        Dateiname: de_windows_7_beta_dvd_x64_x15-29078.iso
        Bereitstellungsdatum (UTC): 12/30/2008 4:26:49 PM
        SHA1: 05691C979E23ABE31F64B3725A03A4C4CE7A5DDF
        ISO/CRC: 2412516C
         
      • Windows 7 Beta (x86) - DVD (German)
        Dateiname: de_windows_7_beta_dvd_x86_x15-29077.iso
        Bereitstellungsdatum (UTC): 12/22/2008 2:41:15 PM
        SHA1: C14B313FD974E692DA9B265466897F4F7695F596
        ISO/CRC: DE5C586D
         
      • Windows 7 Beta Language Pack (x64) - DVD (German)
        Dateiname: de_windows_7_beta_language_pack_dvd_x64_x15-29111.iso
        Bereitstellungsdatum (UTC): 12/22/2008 2:41:17 PM
        SHA1: 1AD85A5BF6649CCCDC16AA4A0C1C3E76ED343B2E
        ISO/CRC: 29744B81
         
      • Windows 7 Beta Language Pack (x86) - DVD (German)
        Dateiname: de_windows_7_beta_language_pack_dvd_x86_x15-29104.iso
        Bereitstellungsdatum (UTC): 12/22/2008 2:41:13 PM
        SHA1: BA15324169E65158077B348AB67662272F05052A
        ISO/CRC: B8B06076
         
      • Windows 7 Beta Release Notes - (English) (105 KB)
        Dateiname: en_windows_7_beta_release_notes.doc
        Bereitstellungsdatum (UTC): 1/7/2009 6:09:43 PM
        SHA1: 16ADD20A02D5A114BF916837B10B72D11D85B954
        ISO/CRC: 52043518


      Update: 11.09.2009 = öffentlich freizugänglichen Download-Link hinzugefügt; Windows 7 Beta Release Notes-Datei hinzugefügt als Direktdownload



      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-2009 Kay Giza. All rights reserved. Legal

      EMIC - Popfly & Sensors

      08.01.2009 15:28:00 | Lori Grosland

      Back in October, the European Microsoft Innovation Center celebrated its 5th anniversary with a reception at its offices in Aachen, Germany.  In addition to enjoying the party atmosphere, researchers were on hand to demo some of their current project.  I had my camera with me and made a video of two of the demos.

      The first demo is shown by Marcel Tilly, Program Manager at EMIC.  He demonstrates a feature that was added to Microsoft Popfly called the alternative block.  Popfly is an online tool to build mashups, games, web applications and websites.  In Popfly, services and data are represented as blocks and to create a mashup you just combine the blocks. The alternative block that the EMIC researchers created recommends alternatives for other blocks that could be used in a mashup.

      The second demo has to do with sensor networks and is being performed by Andreas Lachenmann, EMIC Software Design Engineer.  The EMIC team built a framework for sensor networks to program the sensor nodes.  Andreas shows us how they integrated it into Powerpoint and what the acceleration, light and pressure sensor nodes do to the program.

      For more information on EMIC research, projects and partners, visit:
      http://www.microsoft.com/EMIC

      Windows 7 Beta - Ab 9.1.2009 sind 2,5 Millionen Exemplare zu haben!

      08.01.2009 12:47:53 | Norbert Eder

      Steve Ballmer, Chief Executive Officer, und Robbie Bach, President Entertainment and Devices Division, haben auf der heute beginnenden International Consumer Electronics Show (CES) 2009 in Las Vegas die Windows 7 Beta zum ersten Mal offiziell vorgestellt. (Keynote) Eine nette Zwischeneinlage der Band Tripod auf der Keynote möchte ich auch nicht...

      [[ This is a content summary only. Visit my website for full links, other content, and more! ]]

      Clean-Code-Developer

      08.01.2009 10:40:56 | Rainer Schuster

      Kaum bin ich im Urlaub und lese ca. 3 Wochen keine IT- und Entwicklernachrichten gibts auch schon wieder was neues. Ralf Westphal und Stefan Lieser haben zusammen die Webseite http://www.clean-code-developer.de an den Start gebracht. Die Seite ist als Wiki angelegt und diskutiert wird darüber in einer Google-Group.

      Das alles kommt mir sehr gelegen und spiegelt den gesammelten Inhalt dessen wieder, was ich für erstrebenswert und wichtig für einen ambitionierten und professionellen Entwickler halte (abgesehen von Technologie, die ich erst einmal für zweitrangig halte).

      Noch im letzten Jahr, Anfang Dezember, habe ich mich über einen Teilbereich dessen in meinem Post "Der Moderne 'Softwareentwickler'" ausgelassen und meine Meinung zum Thema kund getan. Das Ganze ohne zu Wissen, das Ralf und Stefan etwas am Start haben.

      Seit gestern also - zurück und sehr gut erholt aus meinem Urlaub - arbeite ich an CcdRoterGrad. Ihr wisst nicht, wovon ich rede? Na dann bitte schnell auf die Seite gehen und durchlesen. Ich garantiere euch es lohnt sich.

      Microsoft Pro Photo Tools 2

      07.01.2009 10:33:37 | Oliver Scheer

      Über die Weihnachtstage hatte ich doch neben Plätzchen essen, Geschenke auspacken, Verwandte und Freunde besuchen und Wanderungen machen, doch tatsächlich noch zeit für mein Hobby --> Fotografieren. Und da bin ich auf ein nettes kostenfreies Tool von Microsoft gestoßen, das ich bisher auch noch nicht kannte.

      image

      Die Microsoft Pro Photo Tools ist ein Toolset an netten Photo-Features, wie z.B. das Hinzufügen von Geo-Tags zu Fotos. Dazu ist die UI sehr gut mit Virtual Earth kombiniert. Einfach die Bilder auf den Ort ziehen an dem sie geschossen wurden und schon ist man fertig.

      Einfach mal ausprobieren ...

      Download-Link: http://www.microsoft.com/prophoto/downloads/tools.aspx

      Monomentale Spiele

      07.01.2009 10:11:08 | Robert Mühsig

      Mono als Spieleplattform? Geht nicht? Geht doch: Sogar auf der Wii und dem iPhone über Unity3D. Erste monobasierte Spiele im AppStore bzw. überall im Handel.

      (more…)

      ShareThis

      Coding Standards als wichtiges Instrument

      07.01.2009 08:51:57 | Norbert Eder

      Wichtigstes Ziel in der Softwareentwicklung ist es, Projekte zeitgerecht und qualitativ hochwertig abzuschließen. Damit dies auch funktionieren kann, bedarf es Coding Standards, die von allen Team-Mitgliedern eingehalten werden müssen. Da es wieder Zeit wurde, die eigenen Coding Standards anzupassen, machte ich mich auf die Suche, um meinen...

      [[ This is a content summary only. Visit my website for full links, other content, and more! ]]

      Application Platforms - Was macht es eine gute Plattform aus? Gute und Schlechte Beispiele

      06.01.2009 01:09:57 | Robert Mühsig

      In letzter Zeit gibt es immer mehr Nachrichten, dass das Web Windows (oder besser gesagt den Desktop) als "Plattform" ersetzt und bei vielen Sachen kann ich dem auch nur Zustimmen.
      Mit dem iPhone und dem AppStore sowie Googles Andoid und dem Applikationsmarktplatz kommen neue Gerätschaften hinzu die auch interessante Plattformen sind. Die Liste an solchen Plattformen "auf die man was basteln kann" ist recht lang:

      • Spieleentwickung auf der Xbox 360 mit XNA
      • Facebook Applikationen
      • Google Gadgets
      • Vista Sidebar Gadets
      • Firefox Plugins
      • SharePoint Solutions (um mal eine Buisnessplattform zu nennen)
      • Betriebssystem jeglicher Art

      Doch was macht eine gute Plattform aus? Was sollte man unbedingt bedenken wenn man selber etwas ähnliches plant?

      (more…)

      ShareThis

      Twitter-Fehler 417 (Expectation Failed)

      05.01.2009 16:55:58 | Gordon Breuer

      Seit dem 23. Dezember 2008 verursachte der von mir verwendete Twitter-Wrapper “Yedda’s C# wrapper” beim Versuch den Tweet zu aktualisieren eine Ausnahme:

      Your tweet could not be sent: The remote server returned an error: (417) Expectation Failed.

      Ich setze diese Funktion eigentlich nur in meinen Blogs ein um ein Update zu twittern sobald ein neuer Beitrag geschrieben wurde. Allerdings war es doch ein wenig ärgerlich das es nicht mehr ging und zwischen den Jahren habe ich deshalb ein wenig recherchiert. Bei Shital Shah fand ich schließlich die Lösung: Twitter hat die Unterstützung für den HTTP-Header “100-Continue” – vermutlich aus Gründen der Performance – deaktiviert. Man muss also dieses Standartverhalten der HttpWebRequest-Klasse direkt in der Yedda-DLL abschalten damit diese wieder Aktualisierungen senden kann.

      Da nicht jeder der den Wrapper verwendet auch Programmierer ist, der das mal eben schnell selber ändern und neukompilieren kann (bsp. wenn man ein Blog-Plugin verwendet, dass auf die YeddaTwitter.dll angewiesen ist), möchte ich hier die geänderte Version für alle zum Download bereitstellen inklusive dem geänderten Projekt.

      Downloads

      Yedda.Twitter.Dll Yedda.Twitter.Dll
      DLL File
      11.5 KB

      YeddaTwitter.7z YeddaTwitter.7z
      7z File
      4.8 KB

      Vorsicht, Technik: Hintergrundinformationen

      Der HTTP-Header mit dem Wert “100-Continue” sagt dem Server, dass alle Daten in einer zweiten Anforderung übermittelt werden. Wenn der Server eine Weiterleitung oder Authentifizierung aktiviert hat wird diese also sofort bei dieser ersten Übermittlung an den Client gesendet ohne das überflüssige Daten bereits übermittelt wurden. Das hat bei der Übermittlung größerer Datenmengen und in langsamen Netzwerken Vorteile. Auch wenn ein Großteil der verwendeten Server eine Weiterleitung oder eine Authentifizierung aktiviert haben kann aus dem Verhalten ein Vorteil gezogen werden. Der Nachteil von dieser Methode ist allerdings, dass jetzt für jede Kommunikation doppelt so viele Anfragen an den Server gesendet werden und sich das bei hoher Last negativ auf die Server-Performance auswirkt.

      Die HttpWebRequest-Klasse aus dem .NET-Framework sendet diesen HTTP-Header standartmäßig mit. Um ihn zu deaktivieren muss man die entsprechende Eigenschaft im ServicePointManager deaktivieren:

      System.Net.ServicePointManager.Expect100Continue = false;

      Schwerwiegender Fehler 0x8000ffff bei Windows Live Installation

      05.01.2009 11:44:54 | Norbert Eder

      Auf einem meiner Laptops mit Windows Vista Ultimate hatte ich noch die Beta-Versionen der Windows Live Produkte laufen. Gestern wollte ich diese gegen die aktuellen Versionen austauschen. Also den Windows Live Installer herunter geladen, angestartet und prompt einen Fehler kassiert: Bei der Installation ist ein Problem aufgetreten. Windows...

      [[ This is a content summary only. Visit my website for full links, other content, and more! ]]

      How To Get Active Directory Users and Groups Using SQL Server Integration Services SSIS 2005

      02.01.2009 20:51:00 | Ozgur Aytekin

      We have a requirement to implement security in our data warehouse to limit what data a user can see on a report. As an initial step we have created tables for users and roles; we also have a user role table where we specify the role(s) that a user is assigned. We would like to update the user, role, and user role tables automatically from Active Directory. Ideally we'd like an SSIS package that we could schedule and/or run on demand to take care of the update. Can you provide an example of how to do this?

      http://www.mssqltips.com/tip.asp?tip=1657

      FIX: Error message when you view a SQL Server Reporting Services report in the ReportViewer control in Visual Studio 2008: "Object reference not set..

      02.01.2009 20:46:00 | Ozgur Aytekin

      FIX: Error message when you view a SQL Server Reporting Services report in the ReportViewer control in Visual Studio 2008: "Object reference not set to an instance of an object"

      You have a SQL Server 2005 Reporting Services report or a Microsoft SQL Server 2008 Reporting Services report that contains many datasets. When you try to view the report in the ReportViewer control in Microsoft Visual Studio 2008, you receive the following error message:
      An error occurred during rendering of the report.
      Object reference not set to an instance of an object.

      http://support.microsoft.com/kb/959595

      Enforcing business rules using CHECK constraints

      01.01.2009 20:57:00 | Ozgur Aytekin

      SQL Server allows you define column level CHECK constraints which check the integrity of a single column. Furthermore, SQL Server allows you to check the values of multiple columns together using a "table level" CHECK constraint. Though they're labeled as "table level" constraints, these type of CHECK constraints are actually checked at the row level. Lastly, CHECK constraints work by examining a defined condition to see if it evaluates to either TRUE or FALSE.

      http://www.mssqltips.com/tip.asp?tip=1650

      FIX: You cannot use the mouse to resize a control if you open many forms in Visual Studio 2005 or in Visual Studio 2008 on a computer that is ...

      01.01.2009 20:07:00 | Ozgur Aytekin

      FIX: You cannot use the mouse to resize a control if you open many forms in Visual Studio 2005 or in Visual Studio 2008 on a computer that is running the .NET Framework 2.0 SP1

      Consider the following scenario:
      - You create a project in Microsoft Visual Studio 2005 or in Microsoft Visual Studio 2008 on a computer that is running the Microsoft .NET Framework 2.0 Service Pack 1 (SP1).
      - You add a form in the project and then put a control on the form.
      - You add another 36 forms in the project and then open 36 forms on the IDE.

      When you drag the mouse to resize the control, it responds slowly. When you open the 37th form and then try to resize it, you notice that you cannot drag the mouse. Also, if you hover the mouse over the control, the control is not resized as expected.

      http://support.microsoft.com/kb/954832

      Web-Service und die Datenschicht – Alles nur Facade?

      01.01.2009 17:23:00 | Gregor Biswanger

      Ein Web-Service bietet für die Kommunikation zur Datenbank viele angenehme Vorteile. Gerade von Fremdanbietern kann infolgedessen eine Integration in das eigene Solution-Projekt beschwingt integriert werden. Visual Studio bietet dafür einen leichtgewichtiges O/R-Mapping, damit wird der Web-Service auch als Objekt zur Verfügung gestellt. Genau dasselbe Prinzip wie LINQ-to-SQL oder LINQ-to-Entity.

      Web-Service in eine bestehende Architektur

      Nun muss nur noch überlegt werden, WO der Web-Service in eine bestehende Architektur aufgenommen wird. Ein Web-Service bietet uns einen Zugriff auf externe Daten an, dementsprechend kommt er in die Datenschicht auch DataAccessLayer(DAL) genannt.

      Nur auf dem ersten Blick

      Doch werden uns nur die Vorteile vorgespielt? Wir haben hier mehrere Probleme! Zum ersten werden uns zwar Entitie-Objekte bereitgestellt, doch haben wir extern zum Beispiel von der Business-Logik gar keinen Zugriff darauf. Als zweites Problem ist die Vorgegebene Architektur der zur Verfügung gestellten Objekte. Meist beinhalten Sie zahlreiche Klassen und Methoden, die auch über keine Interfaces (Schnittstellen) verfügen. Das Kopfzerbrechen beginnt! Wie bekommt man einen Web-Service architekturneutral integriert?

      Der richtige Weg?

      Ein Web-Service in eine bestehende Architektur einzubinden, wird ein immer wiederkehrendes Problem sein. Genau dafür gibt es die Design-Patterns (Entwurfsmuster)! Der erste Gedanke dabei, wäre sofort das Adapter- oder Command-Pattern. Doch muss für das erste einmal ein Interface (Schnittstelle) bereitstehen und beim zweiten wird der Aufwand enorm groß. Es darf auch nicht vergessen werden, dass die Web-Services zudem geändert werden können. Womit die eigene Applikation nur mit hohem Aufwand wieder abgeändert werden muss.

      Alles in Facade!

      Dafür gibt es das Facade-Pattern, es ist dem Adapter sehr ähnlich. Die Facade ist nichts anderes wie eine Hauptklasse, die für die Kommunikation der Objekte des Web-Services bereit steht. Jede Methode greift auf eine Funktion zu. Bei der Fertigstellung der Facade, sollte Sie durch ein Interface für die Business-Logik zur Verfügung stehen. Rückgabe werte sollten mit eigenen Entities in der Facade gefüllt werden. Die Entities stehen in der Infrastructur-Schicht für alle anderen Schichten bereit.

      Abb. 1: Diagramm vom Facade-Pattern in der Datenschicht (DataAccessLayer) in einer .NET-Architektur

      Die offizielle Beschreibung der Facade (GoF) lautet:

      "Biete eine einheitliche Schnittstelle zu einer Menge von Schnittstellen eines Subsystems. Die Fassadenklasse definiert eine abstrakte Schnittstelle, welche die Verwendung des Subsystem vereinfacht."

      Fazit

      Die Facade hilft uns hier bei der Integration vom Web-Service sehr schnell weiter. Die Trennung findet nur sauber unter den Schichten statt, doch die Logik vom Web-Service wird nicht aufgeteilt. Das ist auch nicht besonders Relevant, da unsere Facade als Vermittler (Service) ein gutes Bild macht.

      Glückwunsch zum Microsoft MVP 2009! (ASP / ASP.NET)

      01.01.2009 15:41:00 | Peter Bucher

      Gerade habe ich eine Email von Microsoft erhalten:

      Sehr geehrte(r) Peter Bucher,

      herzlichen Glückwunsch! Wir freuen uns, Ihnen den Microsoft® MVP Award 2009 verleihen zu können! Diese Auszeichnung wird an herausragende, führende Mitglieder der technischen Communities verliehen, die ihre wertvollen praktischen Erfahrungen mit anderen Menschen teilen.

      Es ist mir eine Ehre, diese Auszeichnung für ein weiteres Jahr tragen zu dürfen.
      Meinen Dank gebührt den Teams von ASP.NET Zone und myCSharp.de, die mich bei meiner Arbeit tatkräftig unterstützt haben.
      Die neusten Technologien, vermischt mit alten schon lange bekannten macht ASP.NET gerade aus, es macht mir wirklich Freude ein Teil zur Begeisterung dieser Technologie in die Welt herauszutragen.

      Auf ein neues erfolgreiches Jahr mit vielen positiven Veränderungen!

      FIX: Error message in the Data Source Configuration Wizard in Visual Studio 2008: "Failed to add relation(s) Unexpected error"

      01.01.2009 13:52:00 | Ozgur Aytekin

      Consider the following scenario:
      - You create two tables. In the first table, you set the ID column as the primary key column.
      - You set up the primary-key-to-foreign-key (PK-FK) relationship between the tables. However, the primary key column is not the column that you reference in the PK-FK relationship.
      - In Microsoft Visual Studio 2008, you create a project, and then you try to add the tables as a new data source.
      - On the Choose Your Database Objects page of the Data Source Configuration Wizard, you select the tables, and then you click Finish.

      In this scenario, you receive the following error message in the Data Source Configuration Wizard:
      Failed to add relation(s) Unexpected error.

      Additionally, if you right-click the dataset and then click Edit Dataset with Designer, the relationships between the tables are not displayed.

      http://support.microsoft.com/kb/954740

      How to configure a Windows Vista client to obtain an IPv6 DHCP address

      01.01.2009 13:49:00 | Ozgur Aytekin

      This article describes how to properly configure your Windows Vista client computer to obtain an IPv6 address from a DHCP server using the netsh.exe tool.

      By default, a Windows Vista client will configure its local IPv6 address based on what a local IPv6 router instructs it to do. If you don't have a properly configured router in your environment, a Windows Vista client will not contact a DHCP server for an address even if the settings on the network interface are configured to "Obtain an IPv6 address automatically", but will instead automatically configure an address.

      http://support.microsoft.com/kb/961433

      SQL Server 2008 T-SQL Auditing Commands for SELECT statements

      01.01.2009 11:23:00 | Ozgur Aytekin

      This Server Audit object will be responsible for collecting server and/or database-level actions and groups of actions that you want to monitor and is created at the instance level. This also means that if you have multiple instances running on a server, you would have to create Server Audit objects per instance.

      Since both the server audit object and database audit specification are disabled by default after creation, we need to enable them. To verify their state, you can query the sys.server_file_audits and the sys.database_audit_specifications system objects. The is_state_enabled column would tell us of their state.

      http://www.mssqltips.com/tip.asp?tip=1655

      SOA vs WOA

      01.01.2009 09:37:00 | Peter Bucher

      Golo und ich haben uns vor ca. einem Monat vorgenommen jeweils am ersten eines Monats ein Streitgespräch zu führen.
      Unser erstes Thema war Dynamic Language Runtime - .NET, quo vadis? (Post von Golo / Post von mir), diesmal gehts um SOA vs WOA.

      SOA… was?

      Laut Wikipedia gibt es folgende Definition:

      SOA ist ein Paradigma für die Strukturierung und Nutzung verteilter Funktionalität, die von unterschiedlichen Besitzern verantwortet wird.

      SOA heisst ausgeschrieben: service-oriented architecture, serviceorientierte Architektur oder auch dienstorientierte Architektur.

      SOA beschreibt also ein Vorgehen für den Aufbau einer Infrastruktur. Diese Infrastruktur bietet verschiedene Dienste an (Bspw. in Form von WebServices).

      Der innere Aufbau eines Dienstes der gesamten Infrastruktur muss bzw. sollte bei den Dienstkonsumenten und anderen Dienstimplementierern nicht bekannt sein.
      Auch kann die Verantwortung von einem Dienst bei einem Besitzer bleiben, die eines anderen Dienstes wieder bei einem anderen Besitzer. So werden verschiedene Dienste voneinander entkoppelt.

      Eine technische Umsetzung könnte die Bereitstellung von mehreren Diensten in einem Netzwerk (bspw. Internet) sein. Diese Dienste werden dann konsumiert und schlussendlich in einer kompletten Lösung benutzt.

      Die Kommunikation zwischen den Diensten bzw. den Diensten und einem Client der das ganze Programm darstellt kann über SOAP, REST oder ähnliche Protokolle ablaufen.

      Mit SOA könnte (theoretisch) die Realisierung einer n-ten Implementierung einer Software gegen Null gehen, weil alle Services schon implementiert sind und nur noch per Komposition zu einem gesamten Teil zusammengeschweisst werden müssten.

      Ich schreibe theoretisch, damit sowas überhaupt gelingt muss Extraaufwand durch die gute Zusammenarbeit der Dienste minimiert werden. Wenn jeder Dienst wieder anders angesprochen werden muss, kann es schnell sein das der Aufwand schlussendlich wieder hochschiesst.

       

      WOA… was?

      Laut Wikipedia (de) gibt es keine und in Wikipedia (en) nicht wirklich eine Definition:

      Web Oriented Architecture (WOA) is a style of software architecture that extends Service-oriented architecture to web based applications. WOA is also aimed at maximizing the browser and server interactions by use of technologies such as REST and POX.

      Die Informationen über WOA sind rar gesäht, ich nehme sie für meine Ausführung von hier.

      • WOA setzt auf einzigartige Adressen die uns wohl bekannt sind – Url – für jede einzelne Ressource bzw. Aktion (abrufen, verändern, etc…).
      • Die Ressourcen können über die HTTP verbs (GET, PUT, POST und DELETE) über REST genutzt werden.
      • Die Ressourcen können selber wiederum Ressourcen enthalten.
      • (Und weitere Web-ähnliche Prinzipien…)

       

      SOA vs WOA… was?

      WOA ist eine Weiterentwicklung von SOA und setzt auf die Prinzipien des Webs selber.
      Aus diesem Grund ist es wohl simpler zu benutzen und setzt die Vorteile des Webs selber in den Vordergrund.

      • In SOA werden viele Informationen über die HTTP-Header übertragen die etwas über die Art der Informationen oder der Kommunikation aussagen. In WOA sollten solche Informationen – wann immer möglich – über die Url selber übertragen werden.
      • SOA fixiert sich auf Dienste, WOA auf Ressourcen, mehrere Ressourcen können dann als gesamter Dienst gesehen werden.

      Solche und weitere Prinzipien setzen stark auf eine selbsterklärendere Zusammenstellung von Diensten die über mehrere Urls ansprechbar sind.
      Also ein Dienst == mehrere Urls vs ein Dienst == eine Url mit anderen Headern oder Parametern, schön an REST angelehnt.

      Ich persönlich halte echt nicht viel von “Buzzwords”, vorallem nicht wenn sie für eine Weiterentwicklung stehen, wieso kann man nicht einfach SOA 2.0 nach RFCXYZ sagen?

      Zum Post von Golo: SOA vs WOA

      Links:

      WPF Forum | ASP.NET Forum | ASP.NET MVC Forum | Silverlight Forum | Windows Phone 7 Forum | SharePoint Forum | Dotnet Jobs | Dotnet Termine | Developer Blogs | Dotnet News

      Das Team | Regeln | Impressum