.
Anmeldung | Registrieren | Hilfe

.NET-Blogs Archiv November 2010

Packrat parsing – O meta, where art thou!

30.11.2010 22:25:47 | Rainer Schuster

Diving deeper into language construction, you’ll have to learn the basics of compiler theory. I have no real practice crafting a parser by hand. Currently reading the ANTLR book from Terence Parr (not the Language Implementation Patterns – it really sounds very promising). What really got me attracted are packrat parsers. Parsing Expression Grammars (PEG) bacuse they are more concise for human brains.

 

What’s that buzz? Head over to wikipedia and read on what’s written about PEGs or have a look at the comparison of parser generators. I’ve corrected the link for OMeta and added a link to kathadin, a mutable PEG based interpreter runtime for interconnecting languages. PEGs got my attention some time ago as I was reading the Boo Language mailing list. On Sunday @ricksaurus posted a tweet about a PEG based system called katahdin. The interpreted system isn’t maintained. Chris Seaton is in the army since 2007 and relesed his very first 0.2 version to the public domain after writing his master thesis. It’s a mess running the source on Windows with dotnet because of its dynamic nature and security issues with dynamic created assemblies and DynamicMethod. Will have to digg into this security related stuff later on. My machine runs not with full trust. As off now I’m using VS2010 to edit and build the assemblies but mono to run them.

 

The runtime has a ridiculously long bootstrapping time. But this is described in his paper. I’ve done some eval and I’m really impressed. The runtime has a boostrapping parser with a low level set of instructions and a hosting language (*.kat) defining the glue code and operators for creating new languages. Chris created an proof-of-concept for python, fortran and sqlite. All you have to do is specify the language context for which grammar you’d like to write your statements and expressions.It’ll take some more time to optimize the parser/runtime of katahdin. Boo in its next incarnation will be based on OMeta, a PEG based parser. Rodrigo has allready built Boo.Peg and Boo.OMeta some time ago in his Boo-Extensions project an will merge them into the boo master next year. This will bring us an ometa, syntax and data (unions) macro. The compiler will be self hosted in OMeta (like Perl6 does). This is really exciting as the implementation of Boo.OMeta is very marture. Boo offers some more metaprogramming capabilities like other languages also do, namely splicing, quasi quotation and macros.

Never the less. I’m very excited about katahdin atm. Its really a nobrainer to write your own extensions to katahdin. If there are some talented compileristas I would appreciate getting help to get the katahdin runtime polished.

Python/Fortran fusion sample:

import "fortran.kat";
import "python.kat";

fortran
{
      SUBROUTINE RANDOM(SEED, RANDX)

      INTEGER SEED
      REAL RANDX

      SEED = 2045*SEED + 1
      SEED = SEED - (SEED/1048576)*1048576
      RANDX = REAL(SEED + 1)/1048577.0
      RETURN

      END
}

python
{
    seed = 128
    randx = 0

    for n in range(5):
        RANDOM(seed, randx)
        print randx
}

 

sqlite:

 

import "sqlite.kat";

database = new Mono.Data.SqliteClient.SqliteConnection(
    "version=3,URI=file::memory:");

database.Open();

database? create table films(title text, year integer, director text);

database? insert into films values("Raiders of the Lost Ark",
    1981, "Steven Spielberg");

database? insert into films values("Indiana Jones and the Temple of Doom",
    1984, "Steven Spielberg");

database? insert into films values("Indiana Jones and the Last Crusade",
    1989, "Steven Spielberg");

films = database? select year, title, director
    from films
    where year >= {args[0]};

print "Films made since " + args[0];

for ([title, year, director] in films)
    print " " + title + ", " + year + " (" + director + ")";

 

How about writing your own extensions to NHibernate replicating HQL as source (and no strings). There is a integrated test syntax, too:

 

import "test.kat";

// Positive and negative

test
{
    test
    {
        assert + 0 == 0;
        assert - 0 == 0;
    }

    test
    {
        assert + 14 == 14;
        assert - + 14 == - 14;
        assert + - + 14 == - 14;
        assert - + - + 14 == 14;
    }

    test
    {
        assert - 2 + 3 == (- 2) + 3;
        assert - (2 + 3) == - 5;
    }
}
DotNetKicks-DE Image

Time to say goodbye – Hello english speaking Bloggerworld!

30.11.2010 22:17:37 | Rainer Schuster

Starting from today I’ll try writing my technical blog posts in english. This decision is based on two facts. The first one, according to the “best practice” for getting better: practicing. I’d rate my english 5 on a scale ranging from 1 to 10. Hopefully this will force me to think twice about my ramblings. I apologize for my horrible english.The second one being the fact that the german blogging spehere isn’t very excited about creating DSLs or metaprorgamming at all.I’ll probably reach a broader audience creating more hits on my page and having more discussions on such topics.

 

Now you know my very interesst lasting from 2008 onwards. Finding the holy grail of writing interconnected languages. Preferably in .NET! not exclusively.

DotNetKicks-DE Image

Windows Phone 7: Visual Basic ist fertig

30.11.2010 12:58:06 | Oliver Scheer

Window Phone-Programmierung jetzt auch in Visual Basic: Kostenlos zum Download bereit stehen ab sofort die finalen Visual Basic for Windows Phone Developer Tools in vier Sprachen, darunter auch eine deutschsprachige Ausgabe. Nach der Veröffentlichung der CTP-Vorabversion der Tools im September steht damit nun endlich auch Visual Basic-Entwicklern der Zugang zum Windows Phone Marketplace uneingeschränkt offen.
Noch sind bei aller angebrachten Freude auch kleinere Wermutstropfen zu ertragen, die interessierte Visual Basic-Entwickler im Voraus kennen sollten. So ist derzeit noch die fehlende Unterstützung der Visual Studio 2010 Express-Edition für Windows Phone zu bemerken, Visual Basic-Freunde benötigen daher mindestens die Professional Edition von Visual Studio 2010 oder kostenfrei die analoge Testversion von Visual Studio 2010. Auch ist Visual Basic momentan noch nicht in Expression Blend 4 für Windows Phone integriert. Letztlich sind für Visual Basic derzeit nur Silverlight-Projekte als Vorlagen vorgesehen, für XNA-Projekte dürfte daher gegenwärtig Visual C# die Nase vorne behalten.
Zur Unterstützung stehen neben zahlreichen Programmierbeispielen für Windows Phone in der MSDN Library das Silverlight for Windows Phone-Forum sowie das App Hub-Forum zur Windows Phone 7-Entwicklung bereit. Weitere Unterlagen, Webcasts und andere Trainingsmaterialien finden interessierte Entwickler unter: msdn-online.de/go/wp7. In unseren deutschsprachigen Windows Phone-Foren beantworten Experten außerdem gerne Ihre Fragen zu den Windows Phone Developer Tools.

Weiterführende Informationen: Visual Basic für Windows Phone ist fertig



Windows 7: Herunterladen und Installieren des Windows SDKs

30.11.2010 12:00:43 | Oliver Scheer

Das Windows API Code Pack ist eine Sammlung von Werkzeugen für den direkten Zugriff auf Funktionen aus Windows Vista und Windows 7.
Dazu gehören z.B. die Verwendung der neuen Startleiste, Erweiterungen in der Oberfläche, sowie die integrierte Windows Suche und vieles mehr. Darin enthalten sind viele Quellcodebeispiele, für die Verwendung dieser Funktionen, die man frei in eigenen Anwendungen verwenden kann.

Get Microsoft Silverlight



Advent, Advent.... - oder: eine App wurde geboren

29.11.2010 21:55:00 | Martin Hey

Das letzte Treffen der .NET Usergroup Dresden ist nun schon ein paar Tage her. Durch den Abend hat uns Peggy Reuter geführt und der gesamten Entwicklerschar wieder einmal ein paar Tipps und Tricks zu Expression Blend gezeigt. Der Fokus lag dieses Mal auf UI Prototyping mit der Hilfe von Sketchflow. Und auch wenn die Gemüter sich streiten, ob von den entstandenen und vom Kunden abgenommenen Prototypen nun 90, 50 oder noch weniger Prozent direkt als Grundlage für das endgültige Produkt genommen werden können, so ist in meinen Augen Sketchflow ein gutes Mittel, um dem Kunden die eigenen Visionen etwas näher zu bringen und schon einmal einen Geschmack auf das zu machen, was dann das finale Produkt können wird.

Der zweite Teil des Abends drehte sich um Designprinzipien in Windows Phone 7 - und damit um das Metro-Design. Doch das Metro-Design ist nicht so starr vorgegeben, wie es auf viele den Eindruck macht. Auch hier sind Anpassungen möglich, die es uns Entwicklern erlaubt, individuelle Software zu erstellen.

Alle Anwesenden werden sich sicher an die Anwendung erinnern, anhand der Peggy die Erweiterungsmöglichkeiten demonstriert hat. Und wie sollte es anders sein: Unser Baby hat heute offiziell das Licht der Welt erblickt. Seit 18:59 Uhr sind wir Eltern eines kleinen Adventskalenders. Die Anwendung kann man im Marketplace herunterladen. An dieser Stelle noch einmal vielen Dank an Peggy, Lars und Torsten, die es ermöglicht haben, dass wir vier gemeinsam diese App auf die Beine gestellt haben.

Windows 7: Windows API Code Pack

29.11.2010 14:42:19 | Oliver Scheer

Das Windows API Code Pack für das Microsoft .NET Framework ist eine Quellcode-Bibliothek die verwendet werden kann um Windows 7 und Windows Vista Features aus Managed Code ansprechen zu können.

Dieses Video zeigt, wie man das Code Pack in eigene Anwendungen integrieren kann.

Get Microsoft Silverlight



Gewinnen mit dotnet-kicks.de

29.11.2010 14:10:00 | Martin Hey

Schon lange bevor ich den "I Like it"-Button in Facebook für mich entdeckt hatte, kannte ich dotnet-kicks.de. Das Prinzip ist ähnlich. Blogbeiträge rund um .NET, die man als wertvoll, sinnvoll, nützlich oder spannend erachtet kann man mit einem Kick markieren. Und auch ich hab den Button in meinem Blog.
Nun hat dotnet-kicks.de ein Gewinnspiel gestartet... und ich war einer der Gewinner und habe eine Freikarte für die GUI & Design in Nürnberg gewonnen. Nun bin ich sehr gespannt, ob und was ich hier für neue Sachen erfahren werde. In jedem Fall freue ich mich darauf, Bekannte aus der Community wiederzusehen, denn wie ich der Sprecherliste entnehmen kann, sind hier einige davon mit dabei. In diesem Sinne: C U in Nuremberg.

Kinect-Verlosung auf MPR wird verlängert!

29.11.2010 13:54:15 | Peter Kirchner

kinect_smallEnde des Jahres ist bekanntlich immer am meisten los und keiner wird sich langweilen. :-) Aus diesem Grund verlängern wir unsere Verlosung auf Microsoft Platform Ready um 10 Tage auf den 15.12.2010!

 

Ansonsten bleibt alles beim alten. So nehmen Sie teil:

  1. Registrieren Sie sich auf Microsoft Platform Ready.
  2. Tragen Sie Ihre Lösung unter "Mein MPR" ein.
  3. Bestätigen Sie für Ihre Lösung die Kompatibilität mit Windows Azure, SQL Server 2008 R2 oder SharePoint 2010.
  4. Lesen Sie die Teilnahmebedingungen.
  5. Schreiben Sie uns eine E-Mail, dass Sie an unserer Verlosung teilnehmen möchten.
    • Vergessen Sie in der E-Mail nicht, Ihren Firmennamen anzugeben, den Sie auf Microsoft Platform Ready registriert haben.

Bleibt mir nur noch, viel Glück zu wünschen! :-)

Windows 7–Videos der Woche KW 47

29.11.2010 12:49:40 | Oliver Scheer

Diese Woche sind auf Channel9 diese deutschen Videos veröffentlicht worden:

Das WPF Ribbon Control in eigene Anwendungen integrieren

Windows 7: Tablet-, Slate- und Touch-Reader in WPF

Windows 7: Krankenhaus-Anwendung mit WPF

Windows 7: Internet Explorer 9 und die Taskleiste

Habt ihr Wünsche oder Ideen für zukünftige Videos? Dann einfach via Feedback an mich senden.



Krönen Sie den Märchenkönig

29.11.2010 10:14:17 | Oliver Scheer

Der Visio-Wettstreit ist in vollem Gange. Und nun sind Sie gefragt. Denn unsere Jury hat sich entschieden und aus allen Einsendungen die besten Visio-Märchen ausgewählt.

Jetzt entscheiden Sie, wer mit seiner Darstellung am meisten überzeugt, den Wettstreit gewinnt und Märchenkönig wird. Ein Klick genügt, und schon haben Sie für Ihr favorisiertes Märchen abgestimmt.

Wir sind gespannt, wer den Visio-Wettstreit gewinnt.

Hier geht es zur Abstimmung: http://www.microsoft.com/germany/office/visio/sehen-heisst-verstehen/maerchen/abstimmung.aspx



Mail Templates leicht gemacht mit der Razor Templating Engine

28.11.2010 17:07:00 | Alexander Zeitler

Ein Thema, mit dem überwiegend Web-Entwickler immer wieder konfrontiert werden, ist das Implementieren einer Mail-Template-Engine, d.h. das Parsen von Text-Vorlagen, aus denen individualisierte EMails für den Versand vorbereitet werden – der Klassiker sind Newsletter.

Ebenso häufig, wie das Thema auftaucht, ebenso leidig war die Implementierung bisher.

Mit der parallel zu ASP.NET MVC 3 vorgestellten ViewEngine “Razor”, ist es nun um einiges leichter geworden, solche Template-Engines – z.B. für Mail-Templating – zu entwickeln.

Eine solche, bereits auf Razor basierende Templating-Engine ist die Razor Templating Engine, die hier von CodePlex heruntergeladen werden kann.

Die Verwendung ist denkbar einfach:

Console.Write("Name: ");
string name =Console.ReadLine();

MailMessage simpleHelloWorldMail = 
	new MailMessage("alex@alexonasp.net", "alex@alexonasp.net");
string mailTemplate = "Hello @Model.Name! Welcome to Razor!";
			
string body = Razor.Parse(mailTemplate, new { Name = name });
simpleHelloWorldMail.Body = body;
			
sendMail(simpleHelloWorldMail);
Console.ReadLine();

Auch die Erstellung von HTML-Templates ist möglich:

MailMessage htmlHelloWorldMail =
	new MailMessage("alex@alexonasp.net", "alex@alexonasp.net");

htmlHelloWorldMail.IsBodyHtml = true;
Razor.SetTemplateBaseType(typeof(HtmlTemplateBase<>));

string htmlTemplate = 
	@"<html>
		<head>
			<style type=\""text/css\"">
				body { font-family: Arial; }
			</style>
		</head>
		<body>
			<h1>Hello @Model.Name</h1>
			<p>Welcome to Razor Templating...</p>
		</body>
	</html>";

var model = new { Name = name };

string htmlBody = Razor.Parse(htmlTemplate, model);
htmlHelloWorldMail.Body = htmlBody;

sendMail(htmlHelloWorldMail);

Das Resultat der HTML-Mail:

HTML-Mail

Die Razor Templating Engine ist auch per

Install-Package RazorEngine

via NuGet verfügbar.

Voraussetzung ist .NET Framework 4.0.

Die Beispiel-Solution kann hier heruntergeladen werden:

RazorMailTemplating.zip (91.07 kb)

DotNetKicks-DE Image

Folien und Beispiele für meinen Vortrag an der Jade Hochschule Wilhelmshaven

28.11.2010 10:28:00 | Lars Keller

Wie in meinem Vortrag angekündigt, gibt es nun meine Folien und die Bespiele zum Download:

Folien (1,04 mb)

Windows Media Connect on Windows Server 2008

26.11.2010 18:28:00 | Andreas Mehl

Here's how you do it:

1. Find a copy of Windows Media Connect 2.0, this is no longer provided my MS but can still be found around the web.  Another place you could potentially find it is in the file umupnp.exe on the Windows Home Server installation media.


2. Now out of the box this won't install on Windows Server 2008, so don't bother trying, you need to extract the files from the archive. 


3. Create a folder, for example C:\Program Files\Media Connect


4. Copy the following 3 files which were extracted from the archive mentioned in the last step into your new folder:  wmccds.exe, wmccfg.exe, wmcsci.dll


5. Run regsvr32 "C:\Program Files\Media Connect\wmcsci.dll"


6. Run "C:\Program Files\Media Connect\wmccds.exe" -installwithfiles


7. Run sc config "WMConnectCDS" depend= none


8. Run sc config "WMConnectCDS" depend= upnphost/HTTP (These 2 commands are essentially an easy way to remove the HTTPFilter service dependency which does not exist on Server 2008.  It's functionality now resides in HTTP, I could of done this from the registry as well but in my experience that requires a reboot)


9. Enable the SSDP Discovery Service by setting it to manual startup from the GUI or using sc config "SSDPSRV" start= demand


10. Enable the UPNP Host Device Service by setting it to manual startup from the GUI or using sc config "upnphost" start= demand


11. Run wmccfg.exe and do the initial setup.


From this point you've got media sharing running that is basically the same as the WMP sharing feature (maybe even a bit more appropriate for a Server environment), and it can be reconfigured using wmccfg as needed.

As a side note this works for both x86 and x64 versions (including Server 2008 R2).  It also works in Vista and Windows 7 as well for anyone who wants to avoid Media Player on their desktop and still use Media Connect sharing.

Enjoy.

Erfahrungsaustausch für SQL Server, Windows Server & Windows 7 gewünscht?

26.11.2010 11:28:15 | Peter Kirchner

Dann nehmen Sie die Gelegenheit war, an unseren Developer Camps in der ersten und zweiten Dezemberwoche teilzunehmen. Sprechen Sie mit Microsoft und anderen Softwareherstellern über den SQL Server 2008, Windows 7 oder Windows Server 2008 R2. Anmeldungen sind noch möglich und zudem kostenfrei.

Wir bieten Ihnen drei Termine an, um zu den unterschiedlichen Technologien Ihr Wissen zu erweitern.

Webcast: SQL Server 2008 R2 als Kerntechnologie für Ihre Umsatzsteigerung

Microsoft SQL Server 2008 R2 ist mehr als nur eine Datenbank – Microsoft SQL ist die Plattform für Ihre Business Intelligence Lösungen und ein effizientes Datenmanagement. Erhalten Sie anhand von Praxisbeispielen einen Überblick über die aktuellen Editionen, deren Funktionen und die Mehrwerte für Softwarehersteller. Erfahren Sie weiter, wie Sie Ihren Umsatz mit der Enterprise Edition steigern können und welche attraktiven Angebote Microsoft Ihnen als Partner bereitstellt.

Infos zur kostenfreien Anmeldung für den Webcast am 01.12.2010 finden Sie hier. (Anmeldung nur für Microsoft-Partner möglich.)

Entwickler Camp für SQL Server 2008 R2

Am Montag, den 06.12.2010, bieten wir ein Entwickler Camp zum SQL Server 2008 R2 in Berlin an, in dem Sie aus technischer Sicht lernen können, was Ihnen der SQL Server 2008 R2 bietet. Hier sind ebenfalls noch Anmeldungen möglich.

Agenda:

  • Die Microsoft SQL Server 2008 und 2008 R2 Plattform
  • Von SQL Compact bis SQL Azure
  • Spezielle Funktionen von SQL Server 2008 R2
  • Vorteile für Partner
  • Ablöseszenarien von anderen Herstellern – Was, warum und wie?
  • Warum migrieren?

Infos zur kostenfreien Anmeldung finden Sie hier. (Anmeldung für Microsoft-Partner und Nicht-Partner möglich.)

Entwickler Camp für Windows 7 & Windows Server 2008 R2

Am Donnerstag, den 09.12.2010, bieten wir hier ein Entwickler Camp zum Thema Windows 7 und Windows Server 2008 R2 in Köln an.

Agenda:

  • Neuigkeiten in Windows 7 & Windows Server 2008 R2
  • Anwendungskompatibilität sicherstellen
  • User Experience in Windows 7 als Unterscheidungsmerkmal
    • Taskbar
    • Bibliotheken
    • Multitouch
  • Entwickler-Story auf Windows Server 2008 R2
    • Web-Anwendungen & Federation
    • Verwaltbarere & zuverlässigere  Anwendungen

Infos zur kostenfreien Anmeldung finden Sie hier. (Anmeldung für Microsoft-Partner und Nicht-Partner möglich.)

Diese Trainings werden Ihnen im Rahmen von Microsoft Platform Ready angeboten.

Projekt Seadragon als JavaScript-Bibliothek verfügbar

26.11.2010 11:00:15 | Oliver Scheer

image

Seadragon Ajax ist eine Bibliothek zur Darstellung von Bildern die mit dem Deep Zoom Composer erzeugt wurde. Damit benötigt man nicht mehr zwingend Silverlight um diese coolen Bilder darstellen zu können.

Link: http://gallery.expression.microsoft.com/en-us/SeadragonAjax?SRC=Home



WP7 Entwicklerbuch: RTP Status erreicht.

26.11.2010 10:07:49 | Peter Nowak

Unser Buch, welches bereits hier angekündigt wurde, ist gestern Abend an die Druckerei (RTP – Release to Printer) übergeben worden. Sollte nun nichts mehr schief gehen, so wird es am 8.12. pünktlich zur Weihnachtszeit in den Regalen stehen.

Was es enthalten wird ist hier zu entnehmen, auch wenn die Struktur nicht mehr 100% stimmt. Die Inhalte bleiben jedoch gleich.



This posting is provided "AS IS" with no warranties, and confers no rights.

Windows 7: Das WPF Ribbon Control in eigene Anwendungen integrieren

25.11.2010 13:17:34 | Oliver Scheer

Noch nie war es so einfach ... In wenigen Schritten die Ribbon in seine eigenen Anwendungen integrieren.

Get Microsoft Silverlight

Eine ausführliche schriftliche Anwendung gibt es hier zum nachlesen.

Das WPF Ribbon Control inkl. Sourcecode gibt es hier.



How to: Verlinkungen, Empfehlungen und Links zu Windows Phone 7 Apps und Windows Phone Marketplace Apps erstellen

25.11.2010 11:09:25 | Kay Giza

http://redirect.zune.net/redirect und zune://navigate - wie verlinke ich auf eine Windows Phone 7 App? Wie erstelle ich einen Link in den Zune Marketplace? Es gibt zahlreiche Szenarien direkt auf eine Anwendung im Windows Phone 7 App Store bzw. Zune Marketplace zu verlinken. In diesem Blogpost erkläre ich die verschiedenen Varianten... [... mehr in diesem Blogpost auf Giza-Blog.de]

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

Rainer Schuster - Bin ich? wie, wer, was?

24.11.2010 21:46:51 | Rainer Schuster

Eigentlich rede ich in der Öffentlichkeit nicht über mich selbst. Und dann schon gar nicht in der zweiten oder dritten Person. Warum? Weil es unwichtig ist. Ich bin, hier und jetzt. Mehr ist nicht wichtig. Für mich auf jeden Fall! Aber mein Ego verspürt ab und an das Gefühl sich Platz zu machen und zu signalisieren: Wir beide müssen noch länger miteinander Leben. Nicht das ich keine Reflektion über solchen Inhalt besäße um es als bloße Spinnerei und Egoismus abzutun. Nein, ich tue es auch wirklich! Die wenigsten Entscheidungen, oder Aussagen, die ich treffe sind spontan und ungefiltert. Es gibt Zeiten, da nutze ich meinen Verstand als Werkzeug. Es gibt Zeiten, da nutze ich ihn nicht. Da lasse ich es passieren im Vollen Bewußtsein, ihn jederzeit wieder zu benutzen. In Zeiten des Denkens arbeite ich. In Zeiten des Nichtdenkens bin ich kreativ.

 

Und bei all meinem Sein und tun bin ich doch eines nicht: Unfehlbar. Ich bin keine Maschine, ich bin kein Gott, ich bin kein Allwissender. Wenn in Aussagen treffe, dann entsprechen sie meiner persönlichen subjektiven Meinung – denn nicht nur Einstein wusste: “Alles ist relativ”. Alles was meinem persönlichen Wertsystem entspringt ist neutral für aussehstehende (oder bezogen auf ihr eigenes gut oder schlecht).

Ich bin Rainer Schuster. Und zwar zu 100%. Ich erkenne offensichtliches und ich denke darüber nach. Ich stelle Fragen, obwohl ich die Antworten schon kenne. Macht das Sinn? Ich Rede mit Buchtstaben, Worten und Grammatiken zusammengefasst in Sätzen einer Sprache. Manchmal Deutsch, manchmal Englisch – in letzter Zeit des Öfteren mal Babysprache - ja ich bin in meinen 6 Monate alten Sohn vernarrt. Natürliche Sprache ist oft semantisch uneindeutig. Und trotzdem können wir damit kommunizieren. Daraus folgere ich, dass Sprache implizit fehlerbehaftet ist. Und daraus ergibt sich:

 

Sprache ist ein Model. Aber wie geht das? Kann ich in einem Model kommunizieren? Ja. Klar kann ich das. Wenn ich die Grenzen des Systems, in dem es gültig ist definiere und als Grenzwerte festlege. Bei Sprache reden wir von der Denotation, wenn wir von der eigentlichen Bedeutung des Wortes Reden, die allgemein von allen anerkannt wird. Der Duden schreibt diese nieder. Konotation hingegen ist es, wenn das Wort noch eine beiläufige, oder Nebenbedeutung hat. Daher auch das semantische Problem. Interessant wird es, wenn ich philosophiere. Da nutze ich Sprache um über Sprache zu reden. Das Model um Erkenntnisse über sich selbst zu erlangen. Dann bin ich auf der Meta-Ebene. Deshalb weiß ich schon viel über das Model, seine Grenzen, Werte und Normen und damit auch den Risiken und Fehlern, die es mit sich bringt.

 

Wenn ich, Rainer Schuster, also mit jemandem Rede, hoffe ich doch im Sinne der Denotation der deutschen oder englischen Sprache das gleiche zu meinen wie mein gegenüber. Mit meinem Sohn ist das Momentan durchaus eine Herausforderung, da ich “Babyisch” nicht sehr gut kann.

 

Was passiert bei dir, lieber Leser, wenn du einen Befehl erhällst? Wie fühlst du dich? Was denkst du von deinem Gegenüber? Verspürst du dabei evlt. Gefühle wie Wut, Hass, Angst, Furcht, Aggression? Ich tue es manchmal und bin mir darüber bewußt, dass ich gerade in diesem Zustand bin. Leider schaffe ich es noch nicht (aber ich übe daran) diese Gefühle sachlich zu betrachten und sie zu ignorieren.

 

Was passiert bei dir, wenn du Fragen stellst? Wie fühlst du dich? Was denkst du von deinem Gegenüber? Denkst du, deine Gegenüber interessiert sich für dich, weil er dir eine Frage stellt? Fühlst du dich attraktiver? Ist es ein Moment, auf den dein Ego wartet um eine brilliante Antwort geben zu können? Oder antwortest du einfach, weil du es kannst?  Wenn ich eine Frage stelle, dann tue ich das, weil mein Wertsystem und meine “Wissensbasis” den mein Verstand vereint keinen Treffer in der Suchanfrage findet. Oder … weil ich die Antwort ganz genau kenne, aber meinem Gegenüber nicht das Gefühl eines Befehles vermitteln will.

 

Ich, Rainer Schuster, bin jemand, dem es wichtig ist, sein Gegenüber zu verstehen und von seinem Gegenüber verstanden zu werden. Nicht um des Wissens willen, sondern des sozialen Mitgefühls halber. Wer in der Schule in Sozialkunde aufgepasst hat, und sich daran noch erinnert, weiß wohl um den Zustand des Menschen als soziales Wesen. Wir leben in einer Gemeinschaft, in der Familie, dem Dorf, der Stadt, dem Landkreis, dem Land, dem Bund, dem Staat, der Welt. Einige eher enger verbunden, die anderen eher lose. Ein anderer sozialer Kulturkreis ist die Geschäftswelt. Firma, Externer Projektpartner, Projektmanagement usw.

 

Deshalb stelle ich Fragen und gebe Antworten. Wer implizit denkt und handelt wird von mir viele Fragen gestellt bekommen. Nicht weil ich es nicht wissen kann, sondern weil ich in den meisten Fällen interpretieren muss. In meinem kleinen kulturellen Sozialkreis Familie gibt es einen Spruch: “Mein Kopf ist nicht dein Kopf!”

 

Ich sehe das Offensichtliche, ich sehe nicht das Verborgene!

  1. Kann ein Erkennender erkennen?
  2. Kann ein Nichterkennender erkennen?
  3. Was unterscheidet den Erkennenden vom Nichterkennenden?
  4. Kann der Nichterkennende denken er würde erkennen?
  5. Woher weiß der Erkennende, dass er einer ist?
  6. Woher weiß der Erkennende, dass er kein Nichterkennender ist?

Ich bin, also denke ich nur wenn es sein muss!

DotNetKicks-DE Image

Neu: Updates fuer Internet Explorer 9 Beta (KB2448827 + KB2452648) seit 23.11.2010 verfuegbar

24.11.2010 08:00:29 | Kay Giza

Download aktuell: Microsoft hat am 23.11.2010 zwei Updates für den Internet Explorer 9 Beta (IE9 Beta) veröffentlicht. Die Updates KB2448827 und KB2452648 beheben Stabilitäts- und Performance-Probleme und korrigieren einen Fehler im Zusammenspiel zwischen einem eingesetzten 64-BIT Windows Betriebssystem, Windows Live Essentials 2011 sowie dem Internet Explorer 9 Beta... [... mehr in diesem Blogartikel auf Giza-Blog.de]

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

Windows 7: Table-, Slate- und Touch-Reader in WPF

24.11.2010 07:34:17 | Oliver Scheer

In diesem Video demonstriere ich die Anwendung Books.Show. Books.Show ist eine Beispiel-Anwendung von Microsoft, die einen Reader für Bücher mitbringt. Der Reader ist sehr ansprechend in WPF gestaltet und kann mit Maus- und Touch-Steuerung navigiert werden.

Get Microsoft Silverlight


Windows 7: WPF-Beispielanwendung für den medizinischen Bereich

24.11.2010 07:29:40 | Oliver Scheer

In diesem Video zeige ich eine Anwendung die von IdentityMine designt wurde und medizinische Informationen mit Hilfe von WPF visualisiert. Diese Anwendung zeigt, wie komfortabel und ansprechend eine Oberfläche aussehen kann.

Get Microsoft Silverlight



Sind Fragen sinnvoll?

23.11.2010 22:50:55 | Rainer Schuster

  1. Kann ein Blogpost nur aus Fragen bestehen?
  2. Was passiert wenn ich nur Fragen anstatt Antworten schreibe?
  3. Kann ein Leser nicht auch selbst Antworten finden?
  4. Oder muss ich immer alles vorkauen?
  5. Reicht es nur die richtigen Fragen zu stellen?
  6. Oder muss ich immer die richtigen Antworten für andere finden?
  7. Warum benutze ich .NET?
  8. Oder warum benutzte ich kein Java?
  9. Gibt es einen Grund C++ zu benutzen?
  10. Oder ist das nur antike Kunst?
  11. Warum schreibe ich meine Programme in einer Hochpsrache?
  12. Kann ich mein Programm nicht auch binär schreiben?
  13. Ist Linux besser als Windows?
  14. Oder ist sogar MacOS besser?
  15. Kann ich mit Word auf Apple bessere Kochrezepte schreiben?
  16. Macht Testdriven Sinn?
  17. Oder ist das nur esotherische Kunst?
  18. Wann kann es sinnvoll sein so etwas zu benutzten? Und wann nicht?
  19. Warum kann ich meine Software nur mit OOP schreiben?
  20. Oder kann ich das ganze auch mit Funktionaler Programmierung machen?
  21. Muss ich mit new angelegte Objekte mit delete löschen?
  22. Wo ist der Unterschied zwischen C++ und C# oder Java oder Ruby oder Python?
  23. Ist die Lesbarkeit und die Verständlichkeit von Code wichtig?
  24. Oder kann ich tun und lassen was ich will?
  25. Macht ein Styleguide Sinn?
  26. Kann Code implizit unverständlich sein?
  27. Kann Code explizit verständlich sein?
  28. Kann Code implizit verständlich sein?
  29. Kann Code explizit unverständlich sein?
  30. Kann ich ohne Architektur eine Talbrück über mehrere 100 Meter bauen?
  31. Brauche ich für eine Blockhütte eine ausgeklügelte Architektur?
  32. Muss ich für den Bau einer Hundehütte Architekt sein?
  33. Was muss ich beim Bau einer Hundehütte beachten wenn ich ausgebildeter Koch bin?
  34. Was muss ich beim Bau einer Hundehütte beachten wenn ich Architekt bin?
  35. Was muss ich beim Bau eines Wolkenkratzers beachten wenn ich ausgebildeter Koch bin?
  36. Was muss ich beim Bau eines Wolkenkratzers beachten wenn ich Architekt bin?
  37. Kommen beide zum selben Weg und zum selben Ziel? Oder gibt es hier Unterschiede?
  38. Wozu brauche ich ein Fundament? Wann brauche ich ein Fundament?
  39. Ist das Ergebnis nicht das gleiche wenn ich das Fundament weglasse?
  40. Warum sollte ich Leerrohre in einem Neubau verlegen?
  41. Oder kann ich nicht einfach später Litzen Klopfen?
  42. Macht es Sinn Lehrrohre zu verlegen, wenn ich weiß das ich später einmal 5mm² Kabelquerschnitt verlege?
  43. Macht es Sinn Litzen zu klopfen, wenn ich 4 Stück a 5mm² verlegen will?
  44. Brauche ich ein Fenster im Keller wo die Heizung steht?
  45. Wozu brauche ich einen Feuerlöscher?
  46. Wozu ist die Hausratversicherung gut?
  47. Was habe ich von einer Lebensversicherung?
  48. Warum hängt im Flur ein Thermometer?
  49. Wozu ist ein Zugang zum Ablussrohr in der Wand gut?
  50. Ist es einfacher das verstopfte Rohr zu reinigen, wenn ich einen Zugang habe?
  51. Braucht ein Haus Stufen auf dem Dach?
  52. Warum soll ich eine Wand mehr als einmal streichen? Muss ich das wirklich?
  53. Sollte ich die Wand erst trocken lassen, bevor ich Bilder aufhänge und Möbel davor stelle?
  54. Muss ich beim Renovieren die Möbel abdecken? Warum tue ich das?
  55. Schmeckt das Essen besser, weil ich Zähne putze?
  56. Hilft viel Übung oder Talent etwas “besser” zu tun?
  57. Ist es egal wie man zu seinem Ziel kommt?
  58. Oder stört es jemanden dabei über Leichen zu gehen?
  59. Stirbt jemand, wenn ich ihn zu lange foltere?
  60. Oder ist es legitim ihm ein kleines bisschen weh zu tun?
  61. Warum ist es sexuelle Belästigung, wenn ich einer Frau ungefragt an den Hintern fasse?
  62. Oder findet sie das sogar schön?
  63. Ist es schon eine Belästigung, wenn ich es mir nur vorstelle?
  64. Belästige ich jemanden schon damit wenn ich nur darüber rede?
  65. Kann ich mein Ziel erreichen ohne dort anzukommen?
  66. Warum soll ich Prinzipien und Praktiken befolgen?
DotNetKicks-DE Image

Specify a Vary: Accept-Encoding header in ASP.NET using web.config configuration.

23.11.2010 20:56:00 | Andreas Mehl

Specify a Vary: Accept-Encoding header

The following publicly cacheable, compressible resources should have a "Vary: Accept-Encoding" header:

<system.webServer>
  <httpProtocol>
    <customHeaders>
    <remove name="Vary"></remove>
    <add name="Vary" value="Accept-Encoding"></add>
    </customHeaders>
  </httpProtocol>
</system.webServer>

Enable Gzip compression in ASP.NET using web.config configuration.

23.11.2010 20:52:00 | Andreas Mehl

Add the configuration shown below in the in web.config file. This configuration setup enable gzip compression on static and on dynamic content.

 

<system.webServer>
  <httpCompression directory="%SystemDrive%\inetpub\
temp\IIS Temporary Compressed Files">
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
    <dynamicTypes>
      <add mimeType="text/*" enabled="true"/>
      <add mimeType="message/*" enabled="true"/>
      <add mimeType="application/javascript" enabled="true"/>
      <add mimeType="*/*" enabled="false"/>
    </dynamicTypes>
    <staticTypes>
      <add mimeType="text/*" enabled="true"/>
      <add mimeType="message/*" enabled="true"/>
      <add mimeType="application/javascript" enabled="true"/>
      <add mimeType="*/*" enabled="false"/>
    </staticTypes>
  </httpCompression>
  <urlCompression doStaticCompression="true" doDynamicCompression="true"/>
</system.webServer>

Novembertreffen der .NET UserGroup Saar: MEF in Silverlight 4

23.11.2010 14:15:27 | Thorsten Hans

mefAm Donnerstag den 25. November 2010 findet wieder ein Treffen der .NET UserGroup Saar statt. Dieses mal werden wir uns das Managed Extensibility Framework – kurz MEF - im Kontext von Silverlight 4.0 anschauen. MEF bietet Entwicklern die Möglichkeit Plug-In basierte Anwendungen zu entwickeln.

Das UserGroup Treffen findet wie jedes Mal in den Büroräumen der Data One GmbH in Saarbrücken statt.

 

Data One GmbH
Nell-Breuning Allee 8

66115 Saarbrücken

Kartenbild

 

Anmelden könnt ihr euch wie immer über die Xing Eventseite oder kurz via E-Mail bei mir.

 

Technorati-Markierungen: ,,,,,
DotNetKicks-DE Image

Review “Die Geschichten vom Scrum”

23.11.2010 08:05:00 | Thorsten Hans

geschichten-vom-scrum-von-sprints-retrospektiven-und-agilen-werten-11972818

Im Rahmen des Scrum Workshops von Golo Roden hat er auf das Buch die "Geschichten von Scrum" hingewiesen und es als “lesenswert” und “Spaß bringend” empfohlen.

Letzte Woche kam dann endlich die lang ersehnte Lieferung von Amazon und ich konnte mich in das Buch stürzen.

Ein Fachbuch als Geschichte, für mich eine Premiere. Holger Koschek erzählt in “Geschichten vom Scrum” wie die Wieimmerländer Einwohner die ultimative Drachenfalle durch den Einsatz von Scrum bauen. Sehr gut finde ich die Integration der unterschiedlichen Charaktere, die sich ohne große Mühe in jedem Unternehmen finden lasen.

Durch den andersartigen Schreibstiel entwickelt sich dieses Buch innerhalb von nur wenigen Seiten zur Sucht, so dass die 235 Seiten wirklich schnell vorbei gehen und man sich direkt nach der nächsten Geschichte der Wieimmerländer Musketieren sehnt.

Meiner Meinung nach ist das Buch sowohl für Scrum Anfänger als auch für Erfahrene Scrum-Master, –Teammitglieder und Productowner geeignet. Es sollte wirklich mehr Fachbücher geben die in Form einer Geschichte erzählt werden.

 

Technorati-Markierungen: ,,
DotNetKicks-DE Image

dotnet Cologne 2011

22.11.2010 14:45:00 | Stefan Lange

Am 6. Mai findet im MediaPark Köln die dotnet Cologne 2011 statt, die größte deutsche .NET Community Konferenz für Software-Entwickler, organisiert von den .NET User Groups Köln und Bonn.

Zurzeit suchen wir noch Sprecher mit interessanten Themen aus allen Bereichen der .NET Technologien. Wer also einen Vortrag einreichen möchte, sollte nicht bis kurz vor Einreichungsschluss warten, sondern dies möglichst zeitnah tun. Wie das im Einzelnen geht, steht hier. Wir freuen uns auf Eure Vorschläge.

Für alle, die Fragen, Ideen, Anregungen oder Wünsche haben, stehen Albert, Roland und ich gerne zur Verfügung.

Einladung zum Treffen der .NET Usergroup Dresden am 01.12.2010

22.11.2010 13:52:00 | Martin Hey

Beim nächsten Treffen der .NET Usergroup Dresden dreht sich alles rund um das Thema Unittests. Anders als sonst wird es diesmal keine Frontalpräsentation geben, sondern wir versuchen es mal mit LdL. Alexander Groß (Lead der .NET Usergroup Leipzig) wird an diesem Abend mit dabei sein und uns unterstützen, da auch wir LdL noch nicht gemacht haben.

Wie läuft das Ganze ab? Jeder Teilnehmer bekommt im Vorab ein paar Fragen zugeschickt, die sich inhaltlich um das Thema der Veranstaltung drehen und auf deren Beantwortung er sich vorbereitet. Beim Treffen selbst wird das bereits Gewusste oder im Selbststudium Erlernte dann den anderen kurz (10-15 Minuten) vorgestellt. So trägt jeder seinen Teil dazu bei, dass alle etwas davon haben. ...und keine Angst: Es gibt keine falschen Antworten.

Die Fragen verschicken wir voraussichtlich am 25.11., so dass alle auch genug Zeit haben, sich damit zu beschäftigen. Bei organisatorischen Fragen könnt ihr euch natürlich jederzeit an uns (Oliver, Robert, Martin) wenden.

Ich bin gespannt auf diesen Abend und hoffe auf rege Teilnahme. Das Treffen findet bei der T-Systems MMS statt und beginnt dieses Mal schon um 17:00 Uhr. Zu besseren Planung bitten wir um Anmeldung zum Event.

msdn tv–Nachrichten für Entwickler (Ausgabe 15/2010)

22.11.2010 12:54:56 | Jan Schenk

Get Microsoft Silverlight

Die November-Ausgabe von "msdn tv" – wieder mit der neuen alten Moderatorin Lori Grosland, die dem bisherigen Anchorman Jan Schenk nachfolgt. Ihr heutiger Interviewgast ist Peter Nowak, Mobile Experte und MVP für Device Application Development, den sie am Rande des "Community Open Day" Ende Oktober in Unterschleißheim getroffen hat.

In den Kurznachrichten vorab: Infos zur Markteinführung von Windows Phone 7 und den ersten Smartphones mit dem neuen Betriebssystem, die seit wenigen Tagen im Händel verfügbar sind; ein hilfreicher Hinweis auf Anmeldemöglichkeiten für den "Imagine Cup 2011", den internationalen Microsoft-Technologiewettbewerb für Schüler und Studierende. Dazu ein Tipp, wie man mit einem kostenlosen Test-Account für die Windows Azure Platform seine eigenen Projekte innerhalb von Minuten in die Cloud stellen kann und last, but not least, zwei Terminhinweise auf anstehende BarCamps in Hamburg und in Darmstadt.

http://msdn-online.de/msdntv

StructureMap und MVC 3: Intialisierung und Verwendung

22.11.2010 12:52:18 | Albert Weinert

Ich verwende als IoC-Container sehr gerne StructureMap, dies hauptsächlich weil man dort sehr einfach einen Großteil der Registrierung der Componenten über Konventionen erledigen kann.

In ASP.NET MVC 3 RC gibt es nun eine einige Änderungen gegenüber AS.NET MVC 2. Nun veröffentliche ich deshalb hier meinen Standard-Initialisierungscode für StructureMap und MVC 3. Darauf aufbauen müssen natürlich die Besonderheiten der Anwendung berücksichtigt werden. Aber es ist ein guter Startpunkt.

Die Standard-Konventionen

Hiermit werden die möglichen Komponenten in MVC 3 registriert: Somit müssen ModelBinder und Validatoren etc. nicht mehr manuell den einzelnen Aufzählungen hinzugefügt werden. Es reicht sie im Container zu haben. Dazu muss nur der DepencyResolver hinzugefügt werden.

Auch werden alle bekannten Typen im Container für die Property-Injection definiert.

Controller Konvention

Die Konvention damit alle Controller gefunden werden.

DependencyResolver

Eine ControllerFactory braucht man nicht mehr. Es gibt nun IDependencyResolver, welches innerhalb von MVC 3 verwendert wird um einen Großteil der MVC 3 Komponenten zu instanzieren. Möchte man wirklich noch weiteren Einfluss auf die Controller Erstellung nehmen, so implementiert man nur noch den IControllerActivator.

Property Injection bei ActionFilter-Attributen

Möchte man in den Filter-Attributen Property Injection verwenden – da Constructor Injection nicht möglich ist – so kann man dies nun auf folgende Weise machen, ohne wie bei MVC 2 einen eigenen ControllerActionInvoker bauen zu müssen.

Für Property Injection bei einem ActionResult muss man weiterhin einen angepassten ControllerActionInvoker implementieren.

Redirects erstellen mit Umbraco

22.11.2010 11:09:00 | Alexander Zeitler

In der Standard-Konfiguration verwendet Umbraco den Seitentitel auch als Seitennamen, d.h. Seitentitel = “Dienstleistungen” => Seitenname = Dienstleistungen.aspx.

Benennt man nun den Seitentitel um, z.B. in “Service”, wird auch der Seitenname umbenannt in Service.aspx.

Dies hat zur Folge, dass die Seite über bestehende Links (Suchmaschinen) nicht mehr verfügbar ist => 404.

Um dies zu vermeiden, kann man mit Umbraco-Bordmitteln leicht einen Redirect einrichten, sodass die alte Seite auf die neue verweist.

Hierzu erstellt man in den Settings für den entsprechenden Document Typ einfach zwei Properties:

Redirect to this page

Override Url

Im Content-Bereich trägt man bei der Service-Seite nun in den Content-Settings die Override Url ein:

Override Url setzen

Bei der Dienstleistungen-Seite wählt man in den Generic Properties die gewünschte Redirect-Seite “Dienstleistungen” aus und setzt die Dienstleistungen auf “Hide in Navigation”, sodass diese im Menü nicht mehr erscheint:

Redirect Page auswählen

Nach der Auswahl sehen die Generic Properties wie folgt aus:

Generic Properties

Danach müssen die beiden Seiten noch publiziert werden, damit der Redirect funktioniert.

DotNetKicks-DE Image

Windows 7 und Internet Explorer 9: Taskleisten-Integration

22.11.2010 11:03:00 | Oliver Scheer

Der neue Internet Explorer 9 beinhaltet die Möglichkeit Windows 7 Funktionen der Taskleiste zu verwenden. Dabei benötigt man für die einzelnen Funktionen maximal drei Zeilen Code. Dieser Beitrag stellt diese Funktionen vor und zeigt, wie man diese in seine eigenen Webseiten integrieren kann.

Video-Demonstration

Get Microsoft Silverlight

Festlegen das die Webseite im Standard-Modus dargestellt werden soll

Damit der Internet Explorer die Seite im Standard-Modus darstellt, welche zur bestmöglichen Darstellung beiträgt, muss man der Webseite dies mitteilen. Macht man dies nicht, versucht der Internet Explorer 9 und andere Browser, die Webseite nach eigener Einschätzung darzustellen.

image

Die obige Darstellung zeigt den Internet Explorer, wie er eine Seite darstellt, wenn man keinen Standard auswählt.

Der Sourcecode der Webseite:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>Keine Festlegung auf Standard</title>

</head>

<body>

<p>…</p>

</body>

</html>

Die folgende Darstellung zeigt, wie es aussehen kann, wenn der Browser exakt weiß wie die Seite zu rendern ist.

image

Dazu benötigt man lediglich eine weitere Zeile im HTML-Code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>Festlegung auf Standard</title>

<meta http-equiv="X-UA-Compatible" content="IE=9" />

</head>

<body>

<p>…</p>

</body>

</html>

Definieren eines Symbols für die Webseite

Viele Webseiten zeigen neben der Adresse auch ein eigenes Symbol an. Um diese Funktion in seine eigene Webseite ebenfalls zu ermöglichen, ist ebenfalls nur eine Zeile HTML-Code notwendig.

image

Der Source-Code der oben dargestellten Seite:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>Festlegung auf Standard</title>

<meta http-equiv="X-UA-Compatible" content="IE=9" />

<link href="/icons/site.ico" rel="shortcut icon" type="image/x-icon" />

</head>

<body>

<p>…</p>

</body>

</html>

Anheften einer Webseite an die Startleiste von Windows 7

Eines der spannendsten neuen Funktionen im Internet Explorer 9, ist die Möglichkeit Webseiten an die Startleiste in Windows 7 anzuheften. Das macht man einfach in dem man das Symbol der Webseite neben der eigentlichen Adresse, oder aber den Karteireiter der Webseite, in die Startleiste zieht.

image

Anschließend hat man die Webseite auf einen Klick parat in der Startleiste

image

Dies kann man übrigens mit jeder Webseite machen. Dazu ist keinerlei HTML-Code notwendig.

Wenn man die Webseite direkt aus der Startleiste startet stehen einem direkt noch viel mehr Funktionen zur Verfügung. Dafür werden im folgendem einige Beispiele demonstriert. Keine dieser Funktionen sorgt dafür, dass eine Webseite nicht in anderen Browsern dargestellt werden kann. Dennoch sollte man vorab prüfen ob die Webseite gerade im Internet Explorer 9 angezeigt wird oder nicht. Je nach dem kann man die Funktionen einfach „hinzuschalten“.

Erkennen, das die Seite im Internet Explorer 9 ausgeführt wird

Wie erkennt man am einfachsten ob die Webseite gerade im Internet Explorer 9 oder in einem anderen Browser angezeigt wird.

Das folgende Beispiel zeigt ein Skript zur Erkennung des Internet Explorer 9.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>Wird diese Seite im Internet Explorer 9 dargestellt?</title>

<meta http-equiv="X-UA-Compatible" content="IE=9" />

<script type="text/javascript">

function isIe9() {

var version = getInternetExplorerVersion();

if (version >= 9) {

return true;

}

else {

return false;

}

}

function getInternetExplorerVersion() {

var rv = -1; // Return value assumes failure.

if (navigator.appName == 'Microsoft Internet Explorer') {

var ua = navigator.userAgent;

var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");

if (re.exec(ua) != null)

rv = parseFloat(RegExp.$1);

}

return rv;

}

</script>

</head>

<body>

<p>

<input id="Button1" type="button" value="button" onclick="javascript:alert(isIe9());" />

</p>

</body>

</html>

Diese Seite macht nichts anderes als einen Button darzustellen. Betätigt man diesen, erscheint eine Meldung die Angibt ob die Seite im Internet Explorer angezeigt wird, oder ob man einen anderen Browser benutzt.

Erkennen das man im „Site-Mode“ ist

Was ist der „Site-Mode“? Als Site-Mode bezeichnet man den Modus, wenn man eine Anwendung aus der Startleiste heraus startet. Dadurch kann eine Webseite zusätzliche Funktionen der Windows Startleiste verwenden.

Eine einfache Möglichkeit zu erkennen, ob die Seite im Site-Mode betrieben wird, ist ein kleines JavaScript-Snippet:

function isSiteMode() {

try {

if (window.external.msIsSiteMode()) {

return true;

}

else {

return false;

}

}

catch (e) {

return false;

}

}

Diese Funktion liefert „true“ zurück, wenn die Seite im Site-Mode gestartet wurde. Andernfalls wird „false“ zurück geliefert.

Diese Methode wird in den beigefügten Beispielen verwendet, um die zusätzlichen Funktionen zu aktivieren.

Anpassen der Darstellung der Webseite

Im Site-Mode hat man die Möglichkeit, die Darstellung der eigenen Seite anzupassen. Man kann definieren, wie Navigationsbuttons des Internet Explorer 9 aussehen, wie groß das Fenster beim Starten der Seite sein soll und wie welcher Name und Tooltip in der Startleiste erscheinen soll.

image

Der dazu notwendige HTML-Code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>Festlegung auf Standard</title>

<meta http-equiv="X-UA-Compatible" content="IE=9" />

<link href="/icons/site.ico" rel="shortcut icon" type="image/x-icon" />

<meta name="application-name" content="Sample Site Mode Application"/>

<meta name="msapplication-navbutton-color" content="lightgreen" />

<meta name="msapplication-tooltip" content="Starte die Anwendung" />

<meta name="msapplication-starturl" content="/default.htm" />

<meta name="msapplication-window" content="width=800;height=600" />

</head>

<body>

<p>…</p>

</body>

</html>

Der Parameter msapplicatipon-navbutton-color definiert die Hauptfarbe der Navigationsbuttons. Die Schreibweise für Farben kann nach Namen oder Hexadecimal-Code erfolgen.

Mit dem Parameter msapplication-navbutton-color kann festgelegt warden, welcher Text als Tooltip über dem Symbol der angehefteten Webseite erscheinen soll.

Die Url der Webseite, die gestartet werden soll, kann mit dem Parameter msapplication-starturl definiert werden. Wichtig hierbei ist, dass man jede beliebige Webseite innerhalb der aktuellen Website und auch Links innerhalb einer Seite definiert werden können.

Der Parameter msapplication-window legt fest, wie groß das Fenster sein soll, wenn die Anwendung gestartet wird.

Erstellen von Einträgen in der Sprungliste des Kontextmenüs

Bisher befanden sich im Kontextmenü nur allgemeine Funktionen zu Programmen, wie z.B. Schließen und Verschieben. Seit Windows 7 hat man die Möglichkeit in dieses Kontextmenü eigene Menüpunkte zu integrieren.

image

Die genaue Bezeichnung für solche Funktionen lautet: Sprunglisten. Damit lassen sich Funktionen direkt innerhalb einer bestimmten Website anspringen. Die einzelnen Einträge innerhalb einer Sprungliste können auch in Kategorien gruppiert und mit einzelnen Symbolen versehen werden.

Sprunglisten können auf zwei Arten erstellt werden. Durch Meta-Tags können Sprunglisten direkt erzeugt werden. Verwendet man JavaScript um die Einträge der Sprungliste zu erzeugen, so kann man dies dynamisch zur Laufzeit machen.

Die Meta-Tag Variante sieht wie folgt aus:

<META name="msapplication-task" content="name=Task 1;action-uri=http://host/Page1.html;icon-uri=http://host/icon1.ico"/>

<META name="msapplication-task" content="name=Task 2;action-uri=http://microsoft.com/Page2.html;icon-uri=http://host/icon2.ico"/>

Die JavaScript-Variante sieht wie folgt aus:

window.external.msSiteModeCreateJumplist('Meine Site');

window.external.msSiteModeAddJumpListItem('Funktion 4', '07_jumplist.htm', '/icons/add.ico');

window.external.msSiteModeAddJumpListItem('Funktion 3', '07_jumplist.htm', '/icons/delete.ico');

window.external.msSiteModeAddJumpListItem('Funktion 2', '07_jumplist.htm', '/icons/refresh.ico');

window.external.msSiteModeAddJumpListItem('Funktion 1', '07_jumplist.htm', '/icons/search.ico');

window.external.msSiteModeShowJumplist();

Die Funktion window.external.msSiteModeCreateJumplist erzeigt eine neue Sprungliste. Die Funktion window.external.msSiteModeAddJumpListItem fügt einen neuen Eintrag mit einer Zieladresse und einem Symbol hinzu.

Die Funktion window.external.msSiteModeShowJumplist aktualisiert die Taskleiste.

Anzeigen von Buttons im Overlay

Eine Funktion die man vom Mediaplayer her kennt, ist die Möglichkeit Buttons in der Anwendungsvorschau der Taskleiste, Buttons einbauen zu können. So kann man z.B. den Mediaplayer steuern (nächstes oder vorheriges Lied und Start/Stop) in dem man mit der Maus auf das Symbol in der Symbolleiste geht und sich die Vorschau der Anwendung ansieht. Dadurch muss nicht unbedingt die gesamte Anwendung in den Vordergrund holen.

image

Diese Möglichkeit hat auch jetzt eine Webseite im Internet Explorer 9 unter Windows 7.

Diese Möglichkeit hat auch jetzt eine Webseite im Internet Explorer 9 unter Windows 7.

Der JavaScript-Code sieht dazu wie folgt aus:

<script type="text/javascript">

function createThumbnailButtons() {

if (!isSiteMode()) {

return;

}

alert('createThumbnailButtons');

btn1 = window.external.msSiteModeAddThumbBarButton('/icons/add.ico', 'button 1');

btn2 = window.external.msSiteModeAddThumbBarButton('/icons/delete.ico', 'button 2');

btn3 = window.external.msSiteModeAddThumbBarButton('/icons/edit.ico', 'button 3');

window.external.msSiteModeShowThumbBar();

document.addEventListener('msthumbnailclick', handler1, false);

}

</script>

Kompatibilität mit anderen Browsern

Die neuen Funktionalitäten stehen nur im Internet Explorer zur Verfügung. Allerdings lassen sich die Webseiten ohne Probleme auch, ohne die neue Funktionalität, in anderen Browsern darstellen.

Zusammenfassung

Basiert noch auf der Beta Version des Internet Explorer 9, aber wird auch in der finalen Version enthalten sein.

Weiterführende Links

http://msdn.microsoft.com/library/gg131029(VS.85).aspx

 

Der Sourcecode für das einzelne Projekt kann hier heruntergeladen werden:

http://win7togo.codeplex.com/releases/view/56185 

Dieses und weitere Beispiele befinden sich hier: http://win7togo.codeplex.com



HTTP Fehler 401 beim hinzufügen eines Custom WebParts

21.11.2010 23:56:21 | Andre Kraemer

Gestern überraschte mich Sharepoint mit einem mir zunächst vollkommen unverständlichen Verhalten.

Ich versuchte zu einer Seite ein WebPart hinzuzufügen, welches ich kurz davor entwickelt hatte. Jedoch kam jedes Mal nachdem ich das Webpart auswählte ein Dialog der mich zur Eingabe von Benutzernamen und Passwort aufforderte. Meine korrekt eingegebenen Benutzerdaten akzeptierte der Dialog nicht. Der Klick auf “Abbrechen” führte schließlich zu einer Standard HTTP 401 Unauthorized Seite.

Weder im Event-Log, noch in den Sharepoint-Logs konnte ich Informationen zur Fehlerursache finden.

Also folgte einige Zeit der Ratlosigkeit und des Fluchens ehe ich mehr zufällig auf die Lösung kam:

Ursache des Problems war eine fehlerhaft von mir implementierte Property meines Webparts. Diese sah ungefähr wie folgt aus:

private string pfad
public string Pfad
{
   get
   {
      return Pfad.EndsWith("/")?Pfad:string.Concat(Pfad,"/");
   }
   set
   {
      pfad = value;
   }
}

Wie man sieht habe ich einen kleinen, aber entscheidenden Fehler innerhalb des Getters. Anstatt mein Feld mit dem Namen pfad zurück zu geben, gebe ich innerhalb des Getters der Eigenschaft Pfad die Eigenschaft Pfad zurück. Somit ruft diese Eigenschaft sich so lange selber auf, bis eine StackOverflowException auftritt.

Diese StackOverflowException führte dazu, dass der Workerprozess meiner Sharepoint Web Applikation recycled wurde. Somit waren meine zuvor eingegebenen Credentials ungültig und der IIS fragte mich erneut nach den korrekten Zugangsdaten.

Nachdem ich den Getter entsprechend korrigiert hatte, lies sich das Webpart problemlos einfügen.

private string pfad
public string Pfad
{
   get
   {
      return pfad.EndsWith("/")?pfad:string.Concat(pfad,"/");
   }
   set
   {
      pfad = value;
   }
}

HTTP Fehler 401 beim hinzufügen eines Custom WebParts

21.11.2010 21:56:21 | Andre Kraemer

Gestern überraschte mich Sharepoint mit einem mir zunächst vollkommen unverständlichen Verhalten.

Ich versuchte zu einer Seite ein WebPart hinzuzufügen, welches ich kurz davor entwickelt hatte. Jedoch kam jedes Mal nachdem ich das Webpart auswählte ein Dialog der mich zur Eingabe von Benutzernamen und Passwort aufforderte. Meine korrekt eingegebenen Benutzerdaten akzeptierte der Dialog nicht. Der Klick auf “Abbrechen” führte schließlich zu einer Standard HTTP 401 Unauthorized Seite.

Weder im Event-Log, noch in den Sharepoint-Logs konnte ich Informationen zur Fehlerursache finden.

Also folgte einige Zeit der Ratlosigkeit und des Fluchens ehe ich mehr zufällig auf die Lösung kam:

Ursache des Problems war eine fehlerhaft von mir implementierte Property meines Webparts. Diese sah ungefähr wie folgt aus:

private string pfad
public string Pfad
{
   get
   {
      return Pfad.EndsWith("/")?Pfad:string.Concat(Pfad,"/");
   }
   set
   {
      pfad = value;
   }
}

Wie man sieht habe ich einen kleinen, aber entscheidenden Fehler innerhalb des Getters. Anstatt mein Feld mit dem Namen pfad zurück zu geben, gebe ich innerhalb des Getters der Eigenschaft Pfad die Eigenschaft Pfad zurück. Somit ruft diese Eigenschaft sich so lange selber auf, bis eine StackOverflowException auftritt.

Diese StackOverflowException führte dazu, dass der Workerprozess meiner Sharepoint Web Applikation recycled wurde. Somit waren meine zuvor eingegebenen Credentials ungültig und der IIS fragte mich erneut nach den korrekten Zugangsdaten.

Nachdem ich den Getter entsprechend korrigiert hatte, lies sich das Webpart problemlos einfügen.

private string pfad
public string Pfad
{
   get
   {
      return pfad.EndsWith("/")?pfad:string.Concat(pfad,"/");
} set { pfad = value; }


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

Ordnung in den BDD Specs mit xUnit.BddExtensions und BehaviorConfigs

21.11.2010 21:44:00 | Alexander Zeitler

Triple-A ftw!

Bei der testgetriebenen Entwicklung (TDD) hat sich inzwischen die AAA-Syntax durchgesetzt.

AAA steht für

  1. Arange
  2. Act
  3. Assert

Im Arrange-Part werden die zu testenden Objekte (Sut = System under test) sowie deren Abhängigkeiten konfiguriert.

Im Act-Part wird das zu testende Verhalten aufgerufen und das Resultat daraus wird im Assert gegen entsprechende Bedingungen getestet.

Don’t repeat yourself

Gerade der Arange-Part kann schnell sehr umfangreich werden, besonders bei Brownfield- oder COM-Projekten, wo viele Mock-Objekte benötigt werden.

Häufig ist es aufgrund der AAA-Struktur auch so, dass man bestimmte Mock-Objekte in mehreren Tests immer wieder (gleich) konfiguriert.

Nun kann man natürlich bestimmte Konfigurationen von Mock-Objekten in private Methoden innerhalb der Test-Klasse auslagern und entsprechend verwenden oder ähnliche Hilfskonstrukte erstellen.

Man kann aber auch gleich die xUnit.BddExtensions verwenden und sich der dort enthaltenen BehaviorConfigs bedienen.

Diese erlauben es, außerhalb von EstablishContext zu konfigurieren und dann innerhalb von EstablishContext aufzurufen und in Because bzw. den Specs zu verwenden.

Um das ganze zu demonstrieren, verwenden wir die Lichtschalter-Specs aus dem letzten Posting.

Allerdings soll das Event “LightSwitched” des ILight-Interface nicht mehr in der Because-Methode (=Act) feuern, sondern die Methode SwitchLight(LightState lightState) verwenden, welche dann das Event feuern soll.

Unsere Spec sähe also so aus – EstablishContext fehlt im Moment absichtlich:

public class When_light_is_switched_on : InstanceContextSpecification<ILightSensor> {
	protected override ILightSensor CreateSut() {
		return new LightSensor();
	}

	protected override void Because() {
		Sut.Watch(The<ILight>());
		The<ILight>().SwitchLight(LightState.On);
	}

	[Observation]
	public void Should_be_detected_by_sensor() {
		Sut.LightState.ShouldBeEqualTo(LightState.On);
	}
}

Im Normalfall würden wir nun in EstablishContext folgendes Konstrukt einfügen:

protected override void EstablishContext() {
	The<ILight>().WhenToldTo
		(l => l.SwitchLight(LightState.On)).Return(0).WhenCalled(
			invocation =>
	The<ILight>()
		.Event(l => l.LightSwitched += (sender, args) => { })
		.Raise(The<ILight>(), new LightSwitchedHandlerArgs(LightState.On)));
}

Eben dieses können wir aber mit den xUnit.BddExtensions auch in eine BehaviorConfig auslagern:

public class LightSwitchedOff : IBehaviorConfig {
	public void EstablishContext(IDependencyAccessor accessor) {
		accessor.The<ILight>().WhenToldTo
			(l => l.SwitchLight(LightState.On)).Return(0).WhenCalled(
				invocation =>
		accessor.The<ILight>()
			.Event(l => l.LightSwitched += (sender, args) => { })
			.Raise(accessor.The<ILight>(), new LightSwitchedHandlerArgs(LightState.On)));
	}

	public void PrepareSut(object sut) {
	}

	public void Cleanup(object sut) {
	}
}

Die Verwendung der BehaviorConfig erfolgt dann in EstablishContext:

[Concern(typeof (ILightSensor))]
public class When_light_is_switched_on : InstanceContextSpecification<ILightSensor> {
	protected override void EstablishContext() {
		With<LightSwitchedOff>();
	}

	protected override ILightSensor CreateSut() {
		return new LightSensor();
	}

	protected override void Because() {
		Sut.Watch(The<ILight>());
		The<ILight>().SwitchLight(LightState.On);
	}

	[Observation]
	public void Should_be_detected_by_sensor() {
		Sut.LightState.ShouldBeEqualTo(LightState.On);
	}
}

Aufgrund der Tatsache, dass man mehrere BehaviorConfigs in EstablishContext verwenden kann, erhält man hier die Möglichkeit, Mocks modular mit Funktionen auszustatten ohne ein und denselben Code wieder und wieder zu schreiben.

Die Beispielanwendung kann hier heruntergeladen werden:

BehaviorConfigsBddExtensions.zip (1.32 mb)

DotNetKicks-DE Image

Paint.NET Plug-Ins: Dateitypen, Korrekturen, Effekte, Werkzeuge [Downloads]

21.11.2010 09:37:42 | Kay Giza

Paint.NET Plugins Pack zum kostenlosen Download: Hunderte Plug-Ins zum Download und installieren für Paint.NET, Dateitypen, Korrekturen, Effekte, Werkzeuge. Ein Giza-Blog.de-Leser fragte mich per E-Mail, bezogen auf meinen Blog-Post Download-Tipp: Paint.NET v3.5.6 (Final Release Build 3.56.3972.42619), ob es irgendwo eine einfache Übersicht über vorhandene Plug-Ins für Paint.NET gibt. Ja gibt es... [... in diesem Blogartikel auf Giza-Blog.de finden Sie eine Übersicht]

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

Events testen mit den xUnit.BddExtensions ( #xbddx )

21.11.2010 00:35:00 | Alexander Zeitler

Will man testen, ob eine Klasse ein bestimmtes externes Event korrekt verarbeitet, kann man dies dank der Mocking-Features in den xUnit.BddExtensions leicht tun.

Angenommen, wir wollen testen, ob ein LichtSensor auf ein ein- bzw. ausgeschaltetes Licht reagiert, können wir das wie folgt testen:

using Xunit;

namespace LightSensor.Tests {
	[Concern(typeof (ILightSensor))]
	public class When_light_is_switched_on : InstanceContextSpecification<ILightSensor> {
		protected override void EstablishContext() {
		}

		protected override ILightSensor CreateSut() {
			return new LightSensor();
		}

		protected override void Because() {
			Sut.Watch(The<ILight>());
			The<ILight>()
				.Event(s => s.LightSwitched += (sender, args) => { })
				.Raise(this, new { LightState.On } );
		}

		[Observation]
		public void Should_be_detected_by_sensor() {
			Sut.LightState.ShouldBeEqualTo(LightState.On);
		}
	}
}

Entscheidend ist die Methode The<ILight>(), welche ein Mock vom Typ ILight erzeugt und dieses zurückgibt.

Den Rest erledigt eigentlich RhinoMocks, welches in den xUnit.BddExtensions verwendet wird.

Das ILight-Mock wirft das Event LightSwitched mit dem Parameter LightState.On, welcher in der Observation entsprechend geprüft wird.

Weitere Details finden sich in der Beispiel-Solution, die hier heruntergeladen werden kann:

EventsBddExtensions.zip (1.32 mb)

DotNetKicks-DE Image

Letzten git commit für AssemblyVersion in MSBuild verwenden

20.11.2010 21:48:00 | Alexander Zeitler

Um eine Verbindung zwischen einem Changeset am Code und der kompilierten Version einer Assembly herzustellen, gibt es die Möglichkeit, z.B. die Id des Commits der Quellecode-Verwaltung zu verwenden.

Am Beispiel von Git soll dies hier demonstriert werden.

Zunächst das Resultat, das wir erzielen möchten:

AssemblyProperties

Der Inhalt von “Product version” kommt aus der Einstellung AssemblyFileVersion in der AssemblyInfo.cs im Properties-Ordner des Projekts:

[assembly: AssemblyFileVersion("1.1. / c1c2d54")]

Dieses Setting könnten wir von Hand pflegen. Allerdings müßten wir dann, um die aktuelle Version der AssemblyInfo.cs im Git-Repository zu haben (welche dann vom Build-Server ausgecheckt wird), diese nochmal committen, sodass der letzte Commit nicht mehr unsere eigentliche Änderung am Code wäre, sondern eben der Commit der Änderung an der AssemblyInfo.cs

Um dieses Problem zu lösen, verwenden wir einen MSBuild-Task, der den SHA-Wert des letzten Commits aus dem Git-Repository ausliest und dann die AssemblyFileVersion vor dem Build aktualisiert und somit für das gewünschte Ergebnis sorgt.

Der verwendete MSBuild-Task heißt “GitVersion” und stammt von Stefan Holmberg.

Im MSBuild-File unseres Projektes ersetzen wir den auskommentierten Bereich (am Ende des Build-Files) der Targets “BeforeBuild” und “AfterBuild” durch folgende Xml-Fragment:

<Import Project="$(SolutionDir)Tools\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />
<UsingTask AssemblyFile="$(SolutionDir)GitVersion.dll" TaskName="GitVersion" />
<PropertyGroup Label="versioning">
	<versioningMajor>1</versioningMajor>
	<versioningMinor>1</versioningMinor>
	<versioningBuild>0</versioningBuild>
	<versioningRevision>0</versioningRevision>
	<LastCommit>not avail</LastCommit>
</PropertyGroup>
<Target Name="BeforeBuild">
<GitVersion LocalPath="$(MSBuildProjectDirectory)">
	<Output TaskParameter="LastCommit" PropertyName="LastCommit" />
</GitVersion>
<AssemblyInfo 
		CodeLanguage="CS" 
		OutputFile="Properties\AssemblyInfo.cs" 
		AssemblyTitle="LastCommitMSBuild" 
		AssemblyDescription="LastCommitMSBuild" 
		AssemblyCompany="PDMLab" 
		AssemblyProduct="LastCommitMSBuild" 
		AssemblyCopyright="Copyright PDMLab 2010" 
		ComVisible="false" 
		CLSCompliant="false" 
		AssemblyVersion="$(versioningMajor).$(versioningMinor).$(versioningBuild).$(versioningRevision)" 
		AssemblyFileVersion="$(versioningMajor).$(versioningMinor). / $(LastCommit)" />
</Target>
<Target Name="AfterBuild">
</Target>

Die Funktionsweise des GitVersion-Tasks ist praktisch selbsterklärend:

  • Zunächst werden in einer PropertyGroup die Variablen für das Erstellen der Versionsnummer definiert und befüllt
  • Als Pfad wird das Projekt-Verzeichnis verwendet, welches das MSBuild-File definiert.
  • Der Output TaskParameter “LastCommit” enthält die aus dem Git-Repository gelesene SHA-Info des letzten Commits
  • Der nachgeschaltete AssemblyInfo-Task erzeugt eine AssemblyInfo.cs mit den gewünschten Werten und verwendet auch “LastCommit” an gewünschter Stelle

Die Beispiel-Solution kann hier heruntergeladen werden:

LastGitCommitMSBuild.zip (1.34 mb)

Vor der Verwendung muss diese in ein Git-Repository kopiert werden, damit der GitVersion-Task funktionieren kann.

Außerdem muss Git so konfiguriert sein, dass es in der Windows-Kommandozeile funktioniert.

DotNetKicks-DE Image

.gitignore funktioniert nicht / wird ignoriert

20.11.2010 16:52:00 | Alexander Zeitler

Wenn in einem Git-Repository die .gitignore-Datei nicht funktioniert, hilft folgende Befehlsfolge:

git rm –r --cached
git add .
git commit –m ‘.gitignore repariert’

Die erste Zeile löscht alles aus dem lokalen Index, der Rest sollte klar sein.

DotNetKicks-DE Image

Download-Tipp: Paint.NET v3.5.6 (Final Release Build 3.56.3972.42619)

20.11.2010 08:44:12 | Kay Giza

Paint.NET: Kostenlose Bildbearbeitung. Die Freeware, ein kostenfreies Bildbearbeitungsrogramm, Paint.NET steht jetzt in finaler Version v3.5.6 zur Verfügung. In diesem Blogposting erfahren Sie die Neuerungen meiner Lieblingsbildbearbeitungssoftware in der Version 3.56.3972.42619 sowie weiterführende Informationen zu Plug-Ins und Dokumentationen... [... mehr in diesem Blogeintrag auf Giza-Blog.de]

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

Scrum at Data One

19.11.2010 23:04:48 | Thorsten Hans

logo_dataone Zum 1.November 2010 sind wir bei Data One in der .NET und SharePoint Entwicklung auf Scrum als Entwicklungsprozess umgestiegen. Vorgelagert war eine Scrum Schulung von Golo Roden, die Unternehmensweit das Verständnis und die Akzeptanz für diese agile Methodik fördern sollte.

 

Golo hat es innerhalb von nur zwei Tagen geschafft sowohl die Theorie um Scrum – auch Nicht-Entwicklern – nahe zu bringen und mit dem angehenden Scrum Team ein Demoprojekt nach Scrum durchzuziehen. Ich persönlich kann Golo’s Workshops im Scrum Kontext wirklich sorglos weiterempfehlen. Vor allem in mittelgroßen Unternehmen hilft es immer wieder wenn externe einen solchen Kickoff geben ;)

Nach einer kurzen Vorlaufzeit sind wir pünktlich zum Novemberstart mit Scrum gestartet und haben heute somit den dritten Sprint hinter uns gebracht. Nach nur einer Woche mit Scrum signalisierten die einzelnen Teammitglieder bereits die sehr gute Transparenz und die klare Aufgabenstellung im Entwicklungskontext. Logischerweise entwickelt sich auch bei uns Scrum noch ständig weiter, dennoch sind wir gerade in der Anfangsphase bemüht, die Grundprinzipien strickt zu befolgen.

Gerade wenn man im Projektgeschäft tätig ist und somit mehrere parallel laufende Projekte managen und bedienen muss stellt auch Scrum eine große Herausforderung dar. Die strategische Planung parallel zum Sprint-Fortschritt ist wohl eine der wichtigsten Komponenten im Prozess weil mehrere Kunden natürlich ASAP bedient werden wollen. :)

Pair Programming

Neben Scrum setzten wir auch auf Pair Programming, ein Bestandteil von eXtreme Programming,  um den Wissenstransfer innerhalb des Entwicklungsteams zu garantieren und kontinuierlich voran zu treiben. Hierbei ist es momentan noch etwas schwierig das Pair Programming konsequent durchzuziehen weil die Kluft Kenntnisstände der einzelnen Entwickler noch etwas zu groß sind.

Doch auch im Pair Programming Kontext konnten wir bereits nach dem ersten Sprint merkbare Fortschritte verzeichnen. Gerade das “heranziehen” von neuen Entwickler ist eine langlaufende Aufgaben die es zu managen gilt.

Meiner Meinung nach ist das Zusammenspiel von Scrum und Pair Programming die optimale Lösung um die Leistungsfähigkeit und das Know-How in heterogenen Entwicklungsteams konsequent zu steigern.

Schlussfolgerung

Dem eigentlichen Ziel, die ausgeglichene Verteilung der Projekte und Aufgaben auf das gesamte Team und dem somit notwendigen Wissenstransfer der erfahrenen Entwickler an die Greenhorns kommen wir immer näher. Natürlich werden noch einige Wochen und Monate ins Land gehen bis sämtliche Mitglieder auf einem hohen Level sein werden, aber die Geduld wird Früchte tragen, was somit dem gesamten Unternehmen, allen beteiligten Entwicklern und somit auch den Kunden zu Gute kommt.

 

Demnach, immer schön weiter sprinten ;-)

 

Technorati-Tags: ,,
DotNetKicks-DE Image

Einstieg zur Workflow Foundation 4 : Unit Testing

19.11.2010 15:13:00 | Gregor Biswanger

Ein interessanter Aspekt ist das in der Workflow Foundation 4  das automatisierte Testen von Workflows möglich ist. Das besondere daran: es lässt sich somit auch mit TDD (Test-Driven Developement) entwickeln.

Dieser Blog-Eintrag demonstriert nur das einfache Unit Testing. Wie TDD mit der WF4 umgesetzt wird, folgt mit einem eigenen Blog-Post.

Für das folgende Beispiel wird der Workflow Rechner aus dem Blog-Post “Activity selbst schreiben” verwendet.

Testen des Rechner Workflows

Dem Workflow Rechner Projekt wird eine neue Klasse mit den Namen WorkflowRechnerTest hinzugefügt. Als Unit-Test Framework wird das Open-Source Projekt NUnit verwendet. Dazu muss die Assembly NUnit.Framework.dll referenziert werden. Anschließend wird der Testklasse ein TestFixture-Attribute deklariert. Als erstes soll eine gültige Eingabe überprüft werden. Dazu wird die erste Test-Methode mit Valide_Eingabe geschrieben. Diese benötigt auch ein Test-Attribute. Durch die Attribute kann der Test-Runner die Testklassen und Methoden mittels Reflection erkennen. Dieser Artikel wird allerdings nicht weiter mit der Verwendung von Unit-Tests unter .NET eingehen.

Beim schreiben von Tests sollte sich an die AAA-Syntax gehalten werden.

 

   1:  using NUnit.Framework;
   2:   
   3:  namespace WorkflowRechner
   4:  {
   5:      [TestFixture]
   6:      public class WorkflowRechnerTest
   7:      {
   8:          [Test]
   9:          public void Valide_Eingabe()
  10:          {
  11:              // Arrange
  12:   
  13:              // Act
  14:   
  15:              // Assert
  16:          }
  17:      }
  18:  }

Listing. 4 – XAML-Code mit der neuen ListBoxExtended.

 

Nun wird bei jedem klick auf der ListBox das Event wie erwünscht gefeuert.

image

 

Source-Code Download

SilverlightBubblingExample.zip (262,87 kb)

Einstieg zur Workflow Foundation 4 : Workflows asynchron aufrufen

19.11.2010 15:13:00 | Gregor Biswanger

Für das Ausführen von Workflows dient der leichtgewichtige WorkflowInvoker als Workflow Hoster. Dieser kann auch Workflows asynchron in einem getrennten Thread aufrufen.

Beispiel: WorkflowAsyncExample

In Visual Studio 2010 wird ein neues “Workflow Console Application”-Projekt mit dem Namen “WorkflowAsyncExample” angelegt.

SNAGHTML3b36e9d

Abb.1 – Neues “Workflow Console Application” Projekt erzeugen.

 

Workflow definieren

Nach dem anlegen des Projekts wird automatisch der Workflow1 im Designer dargestellt. Nun soll der Name noch in DemoWorkflow unbenannt werden. Dazu wird links oben im Designer auf den Namen Workflow1 geklickt. Das Property-Fenster sollte nun mit dem aktuellen Namen öffnen. Leider muss zusätzlich auch manuell der Dateinamen im Solution-Explorer auf DemoWorkflow.xaml unbenannt werden.

Folgende Schritte sollen nun dem Workflow definiert werden:

  1. Dem Workflow eine Sequence activity aus der Toolbox setzen.
  2. WriteLine activity zur Sequence hinzufügen und folgende Expression setzen:
    String.Format(“Workflow gestartet: Thread:{0}”, System.Threading.Thread.CurrentThread.ManagedThreadId)
  3. Weitere WriteLine activity mit folgender Expression setzen:
    String.Format(“Workflow wartet...“)
  4. Delay activity mit folgender Expression setzen:
    TimeSpan.FromSeconds(5)
  5. WriteLine activtiy mit folgender Expression setzen:
    String.Format("Workflow fertig! - Thread:{0}", System.Threading.Thread.CurrentThread.ManagedThreadId)

 

Ist alles korrekt umgesetzt worden sollte es im Designer aussehen wie unter Abb.2 veranschaulicht wird.

image

Abb.2 – DemoWorkflow definiert.

 

Workflow mit Workflow Hoster aufrufen

In der Program.cs-Datei im Solution Explorer befindet sich der WorkflowInvoker der als Workflow Hoster fungiert. Nach dem umbenennen des Workflows in DemoWorkflow, kann der im Vorfeld definierte Workflow mit dem Namen Workflow1 nicht mehr gefunden werden. Das spielt keine Rolle, denn der Source Code wird wie unter Listing 1 abgeändert.

 

   1:  class Program
   2:  {
   3:      private static readonly AutoResetEvent WaitEvent = new AutoResetEvent(false);
   4:   
   5:      static void Main(string[] args)
   6:      {
   7:          Console.WriteLine("Host: Ich starte DemoWorkflow - Thread: {0}", Thread.CurrentThread.ManagedThreadId);
   8:   
   9:          try
  10:          {
  11:              WorkflowInvoker workflowInvoker = new WorkflowInvoker(new DemoWorkflow());
  12:              workflowInvoker.InvokeCompleted += (s, e) =>
  13:                                                     {
  14:                                                         Console.WriteLine("Host: Workflow ist fertig - Thread: {0}", Thread.CurrentThread.ManagedThreadId);
  15:                                                         WaitEvent.Set();
  16:                                                     };
  17:   
  18:              workflowInvoker.InvokeAsync();
  19:                  
  20:              Console.WriteLine("Host: DemoWorkflow gestartet... - Thread: {0}", Thread.CurrentThread.ManagedThreadId);
  21:              WaitEvent.WaitOne();
  22:          }
  23:          catch (Exception exception)
  24:          {
  25:              Console.WriteLine("Host: Workflow exception: {0}", exception.Message);
  26:          }
  27:   
  28:          Console.ReadLine();
  29:      }
  30:  }

Listing. 4 – XAML-Code mit der neuen ListBoxExtended.

 

Nun wird bei jedem klick auf der ListBox das Event wie erwünscht gefeuert.

image

 

Source-Code Download

SilverlightBubblingExample.zip (262,87 kb)

Einstieg zur Workflow Foundation 4 : Timeout für Workflows setzen

19.11.2010 15:13:00 | Gregor Biswanger

Mit dem WorkflowInvoker der als Workflow Hoster fungiert, kann ein Timeout für die Laufzeit der Workflows gesetzt werden. Als Beispiel wird das gleiche Projekt vom Blog-Post “Einstieg zur Workflow Foundation 4 : Workflows asynchron aufrufen” verwendet.

Dabei wird der InvokeAsync-Methode ein TimeSpan mit der gewünschten Zeit für den Timeout überreicht (Siehe Listing 1).

 

   1:  class Program
   2:  {
   3:      private static readonly AutoResetEvent WaitEvent = new AutoResetEvent(false);
   4:   
   5:      static void Main(string[] args)
   6:      {
   7:          Console.WriteLine("Host: Ich starte DemoWorkflow - Thread: {0}", Thread.CurrentThread.ManagedThreadId);
   8:   
   9:          try
  10:          {
  11:              WorkflowInvoker workflowInvoker = new WorkflowInvoker(new DemoWorkflow());
  12:              workflowInvoker.InvokeCompleted += (s, e) =>
  13:                                                     {
  14:                                                         Console.WriteLine("Host: Workflow ist fertig - Thread: {0}", Thread.CurrentThread.ManagedThreadId);
  15:                                                         WaitEvent.Set();
  16:                                                     };
  17:   
  18:              workflowInvoker.InvokeAsync(TimeSpan.FromSeconds(2));
  19:                  
  20:              Console.WriteLine("Host: DemoWorkflow gestartet... - Thread: {0}", Thread.CurrentThread.ManagedThreadId);
  21:              WaitEvent.WaitOne();
  22:          }
  23:          catch (Exception exception)
  24:          {
  25:              Console.WriteLine("Host: Workflow exception: {0}", exception.Message);
  26:          }
  27:   
  28:          Console.ReadLine();
  29:      }
  30:  }

Listing. 4 – XAML-Code mit der neuen ListBoxExtended.

 

Nun wird bei jedem klick auf der ListBox das Event wie erwünscht gefeuert.

image

 

Source-Code Download

SilverlightBubblingExample.zip (262,87 kb)

MSDN Online Startseite: Kostenfreies Add-In für Visual Studio 2010

19.11.2010 15:11:36 | Oliver Scheer

Jederzeit übersichtlichen Zugriff auf die wichtigsten Entwicklerressourcen von MSDN Online Deutschland, und das ohne jeden Aufwand im Werkzeug Ihrer Wahl, bietet unser neues Add-in für Visual Studio 2010, das mit englischsprachigen Editionen ebenso kooperiert wie mit der deutschsprachigen Ausgabe der Entwicklungsumgebung.

image

Windows Phone 7: No forward navigation

19.11.2010 14:07:00 | Patric Schouler

Information forward navigation at Windows Phone 7:

Navigation Stack on Windows Phone 7 - Peter Foot - APPA Mundi

“While Windows Phone uses the same NavigationService and page-based model as “regular” Silverlight, one area the documentation doesn’t make clear is that although the APIs seem to support both Back and Forward navigation in reality there is no forward navigation on Windows Phone. This means when you navigate to a new page and then return Back to the previous page you can’t call NavigationService.GoForward() to return. CanGoForward will always return False. In the documentation for System.Windows.Controls.Frame (the base class of PhoneApplicationFrame) GoForward is described as:-

“Navigates to the most recent entry in the forward navigation history, or throws an exception if no entry exists in forward navigation. For Windows Phone this method will always throw an exception because there is no forward navigation stack.”

(my use of bold)”

Neue MSDN TV Folge online November 2010

19.11.2010 13:26:50 | Oliver Scheer

Die November-Ausgabe von "msdn tv" – wieder mit der neuen alten Moderatorin Lori Grosland, die dem bisherigen Anchorman Jan Schenk nachfolgt. Ihr heutiger Interviewgast ist Peter Nowak, Mobile Experte und MVP für Device Application Development, den sie am Rande des "Community Open Day" Ende Oktober in Unterschleißheim getroffen hat.

In den Kurznachrichten vorab: Infos zur Markteinführung von Windows Phone 7 und den ersten Smartphones mit dem neuen Betriebssystem, die seit wenigen Tagen im Händel verfügbar sind; ein hilfreicher Hinweis auf Anmeldemöglichkeiten für den "Imagine Cup 2011", den internationalen Microsoft-Technologiewettbewerb für Schüler und Studierende. Dazu ein Tipp, wie man mit einem kostenlosen Test-Account für die Windows Azure Platform seine eigenen Projekte innerhalb von Minuten in die Cloud stellen kann und last, but not least, zwei Terminhinweise auf anstehende BarCamps in Hamburg und in Darmstadt.

http://msdn-online.de/msdntv

Get Microsoft Silverlight

Visual Studio Feature Pack 2 verfügbar

19.11.2010 09:04:50 | Christian Binder

Zu den Erweiterungen im Bereich Visualisierung und Modellierung aus dem Feature Pack 1 sind mit dem Feature Pack 2 im Bereich Testing und Qualitätsischerung die Automatisierung von Silverlight 4 Applikationen und vor allem der Coded UI Test Editor hinzugekommen.

Der Coded UI Test Editor ist ein wichtiges Werkzeug zur Wartung der Automatisierten Tests. Die MSDN Dokumentation zum Coded UI Test Editor gibt’s hier. 

UI Test Edito

Download Visual Studio Feature Pack 2

Hinweis: Feature Pack 2 enthält Feature Pack 1 und benötigt KB2403277

Microsoft Commitment to C++

18.11.2010 10:48:00 | Christian Binder

Letzte Woche auf TechEd Europe in Berlin waren einige Sessions zum Thema C++. Aus den Session Feedback ist klar hervorgegangenen, dass einige Teilnehmer durchaus überrascht waren, dass einige Neuerungen für native C++ Entwickler mit VS 2010 mitkommen. Kurzerhand habe ich mit Ale Contenti ein Interview zu einer häufig gestellten Frage aufgenommen. Wie ist Microsoft’s Commitment für native  C++ Entwickler? 

Interview mit Ale Contenti auf Ch9

ASP.NET Development Server "webdev.webserver.exe"

18.11.2010 08:51:00 | Andreas Mehl

Another way to run a Web application on the system is also on the ASP.NET Development Server.

This requires that we make the following call:

%WINDIR%\Microsoft.NET\Framework\v2.0.50727\webdev.webserver.exe /port:50806 /path:"C:\XXX\WebApp" /vpath:/WebApp"

 

It is then started and is registered locally with the user account usable.

This brings a great advantage, since no restrictions occur (shared memory).

 

How to install WebDev.WebServer.exe as a Standlone application

These files are required:

    * WebDev.WebHost.dll
    * WebDev.WebServer.EXE
    * WebDev.WebServer.exe.manifest

And you may need to Install WebDev.WebHost.dll in GAC.

Copy and paste this code into a .BAT file:

@SET GACUTIL="C:\Program Files\Microsoft SDKs\Windows\v6.1\bin\gacutil.exe"

Echo Installing WebDev.WebHost.dll in GAC

%GACUTIL% -if WebDev.WebHost.dll

Chakra! IE9 Platform PreView 7 veroeffentlicht - mit Geschwindigkeitsrekord

18.11.2010 08:09:27 | Kay Giza

Download + Infos: IE9 PP7 mit Geschwindigkeitsrekord im WebKit SunSpider Test. Microsoft hat am 17.11.2010 die Platform Preview 7 des Internet Explorer 9 veröffentlicht. Die Platform PreView ist direkt an Entwickler bzw. Web-Entwickler gerichtet, um frühzeitig aktuelle Vorabversionen des kommenden Microsoft Internet Explorer 9 zu testen, um den gegenwärtigen technologischen Fortschritt zu kennenzulernen und schlussendlich natürlich auch, die eigenen Webseiten und Anwendungen entsprechend testen zu können... [... mehr Informationen in diesem Blogartikel auf Giza-Blog.de]

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

Code Sharing mit TFS 2010

17.11.2010 12:44:08 | Christian Binder

Die Verwaltung von abhängigen Komponenten (Code Sharing) ist kein triviales Themenfeld, da die Isolation von Code in Kombination mit Code Sharing zu durchaus komplexen Szenarien führen kann.

Die Isolation des Codes reflektiert sich in einem entsprechenden Branch Model wieder. Branches isolieren Code und ermöglichen z.B. parallelisiertes Development in Teams, so dass innerhalb der Branchstruktur unterschiedliche Versionen des Codes existieren.

Code Sharing hingegen ist ein Konzept, das aus “Consumer”und “Producer” besteht. Producer sind in diesem Kontext Komponenten oder Code, die von anderen Applikationen, dem Consumer, wiederverwendet werden. Producer können intern oder auch extern entwickelte Komponenten sein und müssen nicht den gleichen Release-Zyklus wie die Consumer haben. Bestes Beispiel hierfür sind Third-Party Komponenten, die typischerweise als Assemblies referenziert werden. Hieraus ergibt sich oft eine 1-n Relation zwischen Consumer-Producer, die in größeren Szenarien auch noch kaskadierend ausfallen kann. Überlagert man nun noch die Branchstuktur eines Consumers, der einen Producer in verschiedensten Versionen aus unterschiedlichen Branches konsumiert, können sich komplexe Abhängigkeiten ergeben.

Folgendes Schaubild zeigt an einem Beispiel, welche Struktur im TFS vorliegen könnte, wenn zwei Teams im gleichen Unternehmen aber mit unterschiedlichen Prozessen oder Release-Zyklen Producer und Consumer erstellen. Der Producer wird im Consumer Project als Code Referenz oder Assembly Referenz eingebunden. An dieser Stelle sein noch erwähnt, dass in der Mehrzahl der Projekte durchaus Producer und Consumer in einem Team Projekt erstellt und referenziert werden.
image

.
Welche Strategien gibt es nun in TFS2010 Version Control, um genau diese Problemstellung zu lösen?

Zum einen ist es wichtig zu verstehen, dass die Isolation von Code im TFS durch Branches gelöst ist, also im Server isoliert abgelegt. Der Abgleich zwischen Branches erfolgt dann auf Basis von Code –Merges. Der zweite Mechanismus sind Workspaces, die es erlauben aus verschiedenen Lokationen des Servers, also auch aus verschiedenen Branches, den Code auf dem Client zu konsolidieren und dort zu bearbeiten. Das sogenannte Workspace Mapping definiert hier welche Serverressource im Client auf welchem lokalen Pfad landen soll.

Diese beiden Mechanismen können für Code Sharing unterschiedlich angewendet werden und somit ergeben sich unterschiedliche Strategien. In folgendem Draftpaper hatte ich zwei Mechanismen aufgezeigt, die Primär den Fokus auf Branching haben. Daher die Abhängigen Komponenten also Consumer und Producer auf dem Server zusammen zu isolieren.

Sven Hubert von der AIT hat in einem WhitePaper beschrieben, wie man die Abhängigkeiten auch primär auf der Cleintseite, genauer im Project selbst mit Hilfe eines .target Files, definieren kann und mittels dynamischen Workspace Mapping zusammenführen kann. Mit TFS 2010 Boardmitteln ist dieser Ansatz für komplexere Szenarien nicht geeignet. Sven Hubert hat aber unter Verwendung einiger Erweiterungen, wie z.B. die Workspace Mapping API einen sehr guten und empfehlenswerten Ansatz gefunden. Unter folgenden Links findet sich eine Deutsche und Englische Version des Whitepapers:

Deutsche Version
English Version

Chris

Eine Datenbank für mehr als nur Daten? Kostenfreie Trainings zum SQL Server 2008 R2

16.11.2010 15:20:22 | Peter Kirchner

Setzen Sie derzeit für Ihre Softwarelösung den SQL Server 2008 R2 ein? Nutzen Sie ihn nur als reines “Datengrab” oder wissen Sie wirklich, was Sie noch alles damit erreichen können? Demnächst bieten wir wieder dreie kostenfreie Trainings zum SQL Server 2008 R2 an, wo Sie ein gutes Stück über den Datenhorizont schauen können!

Bereits nächste Woche! Briefing zu Geschäftspotentialen

Am nächsten Montag, den 22.11.2010, bieten wir ein Briefing zum SQL Server 2008 R2 in Köln an, in dem Sie aus Entscheidersicht lernen können, was Ihnen der SQL Server 2008 R2 zu bieten vermag. Noch sind Anmeldungen möglich.

Agenda:

  • SQL Server 2008 R2 – ein Überblick
  • Was habe ich als Partner von Microsoft SQL Server?
  • Was habe ich als Partner von Microsoft SQL Server 2008 R2?
  • Neues Business durch Migration auf den SQL Server 2008 R2
  • Worauf sollte ich den Kunden hinweisen?
  • Know-How-Bedarf und Deckung beim Partner

Infos zur kostenfreien Anmeldung finden Sie hier. (Anmeldung für Microsoft-Partner oder Nicht-Partner möglich.)

Webcast: SQL Server 2008 R2 als Kerntechnologie für Ihre Umsatzsteigerung

Microsoft SQL Server 2008 R2 ist mehr als nur eine Datenbank – Microsoft SQL ist die Plattform für Ihre Business Intelligence Lösungen und ein effizientes Datenmanagement. Erhalten Sie anhand von Praxisbeispielen einen Überblick über die aktuellen Editionen, deren Funktionen und die Mehrwerte für Softwarehersteller. Erfahren Sie weiter, wie Sie Ihren Umsatz mit der Enterprise Edition steigern können und welche attraktiven Angebote Microsoft Ihnen als Partner bereitstellt.

Infos zur kostenfreien Anmeldung für den Webcast am 01.12.2010 finden Sie hier. (Anmeldung nur für Microsoft-Partner möglich.)

Entwickler Camp für den technischen Einstieg

Am Montag, den 06.12.2010, bieten wir ein Entwickler Camp zum SQL Server 2008 R2 in Berlin an, in dem Sie aus technischer Sicht lernen können, was Ihnen der SQL Server 2008 R2 bietet. Hier sind ebenfalls noch Anmeldungen möglich.

Agenda:

  • Die Microsoft SQL Server 2008 und 2008 R2 Plattform
  • Von SQL Compact bis SQL Azure
  • Spezielle Funktionen von SQL Server 2008 R2
  • Vorteile für Partner
  • Ablöseszenarien von anderen Herstellern – Was, warum und wie?
  • Warum migrieren?

Infos zur kostenfreien Anmeldung finden Sie hier. (Anmeldung für Microsoft-Partner oder Nicht-Partner möglich.)

Gewinnen Sie einen von 50 Kinect-Sensoren! Große Verlosung auf Microsoft Platform Ready!

15.11.2010 15:09:50 | Peter Kirchner

kinect_sensor_1_klein_20100727_1948161383

Haben Sie bereits eine Lösung für Windows Azure, SQL Server 2008 R2 oder SharePoint 2010 kompatibel? Dann nehmen Sie an unserer Verlosung teil! Unter allen Teilnehmern, die bis zum 05.12.2010 eine Lösung als kompatibel in Microsoft Platform Ready eingetragen haben, verlosen wir 50 Kinect-Sensoren!

So nehmen Sie teil:

  1. Registrieren Sie sich auf Microsoft Platform Ready.
  2. Tragen Sie Ihre Lösung dann im Bereich "Mein MPR" ein.
  3. Bestätigen Sie für Ihre Lösung die Kompatibilität mit Windows Azure, SQL Server 2008 R2 oder SharePoint 2010.
  4. Lesen Sie die Teilnahmebedingungen.
  5. Schreiben Sie uns eine E-Mail, dass Sie an unserer Verlosung teilnehmen möchten.
    • Vergessen Sie in der E-Mail nicht, Ihren Firmennamen anzugeben, den Sie auf Microsoft Platform Ready registriert haben.
Sie haben noch keine Windows Azure-Lösung? Kein Problem!

Nehmen Sie dann erst einmal am Windows Azure-Gewinnspiel für Einsteiger teil, bei dem Sie noch keine eigene Windows-Azure-Lösung entwickelt haben müssen und trotzdem Windows Azure schnell kennen lernen können.

Ihr Vorteil, wenn Sie bereits auf Microsoft Platform Ready eine Lösung als kompatibel eingetragen haben, dann können Sie bei dem Windows Azure-Gewinnspiel Ihre Chancen sogar verdoppeln. In diesem Fall achten Sie bitte nur darauf, dass Sie hier auf Microsoft Platform Ready und bei dem Windows Azure-Gewinnspiel den gleichen Firmennamen eingetragen haben.

MSDN TV: Nachrichten fuer Entwickler - Folge vom 12.11.2010

15.11.2010 07:23:21 | Kay Giza

MSDN TV: Folge vom 12.11.2010 - das Video-Kurznachrichtenformat von MSDN Deutschland ist mit einer neuen Folge live. Themen dieser Ausgabe sind: MVP Peter Nowak, Windows Phone 7, TechEd Europe, Imagine Cup 2011, Windows Azure und Barcamps ind Hamburg und Darmstadt. Jetzt die MSDN TV-Folge anschauen... [... mehr]

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

Visual Studio 2010 Projektarten

14.11.2010 14:58:51 | Nico Franze

Mir ist gerade etwas interessantes aufgefallen.. Bevor ich es vergesse schreib ich es lieber schnell auf.

Ich habe in VS2010 ein ganz normales Projekt erzeugt (Windows-Anwendung). Ich habe eine Testklasse geschrieben mit ganz normalen UnitTest-Attributen wie [TestClass] und [TestMethod] und ich konnte machen was ich wollte, meine Testmethoden sind einfach nicht in meinem Testlisten-Editor erschienen.

Ich habe mir dann einmal von Visual Studio ein richtiges Test-Projekt erzeugen lassen und da war alles schick. Ich habe meine selbstgeschriebenen Testklassen in das Test-Projekt kopiert und sofort wurden meine Testmethoden im Testeditor aufgelistet.

Wenn ich bei meinem normalen Windows-Projekt rechte Maustaste und Neues Element hinzufügen anklicke, so erscheint mir folgende Auswahl:

image

Mache ich das gleiche bei meinem Testprojekt, erscheint folgende Auswahl:

image

Interessant. Hier bietet mir VS auf einmal viel cooles Testzeug an, dafür aber keine Fenster und Steuerelemente-Sachen mehr. So, jetzt ging die Sucherei los… Wo war der Unterschied…

Ich habe die beiden Projektdateien verglichen und folgende interessante Zeile in dem normalen Windows-Projekt gefunden:

<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

Im Testprojekt sieht die Zeile so aus:

<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

Danach habe ich mal aus Spaß den ersten GUID, der nämlich den Unterschied darstellt auch einfach mit in mein Windows-Projekt kopiert. Die Zeile sieht dann da nun so aus:

<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

So. Und das Resultat in Visual Studio sieht dann so aus:

image

Nun hab ich alles. Yeah. Windows-Elemente sowie Testelemente. Und meine Testmethoden aus dem Projekt wurden auch sofort im Testlisten-Editor erkannt. Juhu.

Nun könnte ich mir noch viele andere GUIDs heraussuchen und ein Projekt zu einem ultimativen Monsterprojekt machen wo alles drin is… muss aber auch nicht sein. :-) Denn wenn man wie ich nun sein Windows-Projekt zu einem Testprojekt macht und es dann ausführen will, so werden auch nur die Tests gestartet, und nicht mehr das eigentliche Progrämmchen. Deswegen macht es auch viel mehr Sinn, einfach ein separates Testprojekt zu erzeugen, in dem einfach nur alle Tests ausgeführt werden.

Eine Liste von Projekttypen hab ich dann doch noch hier gefunden:

Project Type Description

Project Type Guid

Windows (C#)

{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}

Windows (VB.NET)

{F184B08F-C81C-45F6-A57F-5ABD9991F28F}

Windows (Visual C++)

{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}

Web Application

{349C5851-65DF-11DA-9384-00065B846F21}

Web Site

{E24C65DC-7377-472B-9ABA-BC803B73C61A}

Distributed System

{F135691A-BF7E-435D-8960-F99683D2D49C}

Windows Communication Foundation (WCF)

{3D9AD99F-2412-4246-B90B-4EAA41C64699}

Windows Presentation Foundation (WPF)

{60DC8134-EBA5-43B8-BCC9-BB4BC16C2548}

Visual Database Tools

{C252FEB5-A946-4202-B1D4-9916A0590387}

Database

{A9ACE9BB-CECE-4E62-9AA4-C7E7C5BD2124}

Database (other project types)

{4F174C21-8C12-11D0-8340-0000F80270F8}

Test

{3AC096D0-A1C2-E12C-1390-A8335801FDAB}

Legacy (2003) Smart Device (C#)

{20D4826A-C6FA-45DB-90F4-C717570B9F32}

Legacy (2003) Smart Device (VB.NET)

{CB4CE8C6-1BDB-4DC7-A4D3-65A1999772F8}

Smart Device (C#)

{4D628B5B-2FBC-4AA6-8C16-197242AEB884}

Smart Device (VB.NET)

{68B1623D-7FB9-47D8-8664-7ECEA3297D4F}

Workflow (C#)

{14822709-B5A1-4724-98CA-57A101D1B079}

Workflow (VB.NET)

{D59BE175-2ED0-4C54-BE3D-CDAA9F3214C8}

Deployment Merge Module

{06A35CCD-C46D-44D5-987B-CF40FF872267}

Deployment Cab

{3EA9E505-35AC-4774-B492-AD1749C4943A}

Deployment Setup

{978C614F-708E-4E1A-B201-565925725DBA}

Deployment Smart Device Cab

{AB322303-2255-48EF-A496-5904EB18DA55}

Visual Studio Tools for Applications (VSTA)

{A860303F-1F3F-4691-B57E-529FC101A107}

Visual Studio Tools for Office (VSTO)

{BAA0C2D2-18E2-41B9-852F-F413020CAA33}

SharePoint Workflow

{F8810EC1-6754-47FC-A15F-DFABD2E3FA90}

XNA (Windows)

{6D335F3A-9D43-41b4-9D22-F6F17C4BE596}

XNA (XBox)

{2DF5C3F4-5A5F-47a9-8E94-23B4456F55E2}

XNA (Zune)

{D399B71A-8929-442a-A9AC-8BEC78BB2433}

SharePoint (VB.NET)

{EC05E597-79D4-47f3-ADA0-324C4F7C7484}

SharePoint (C#)

{593B0543-81F6-4436-BA1E-4747859CAAE2}

Silverlight

{A1591282-1198-4647-A2B1-27E5FF5F6F3B}

Tabelle 1: Projekttypen von Visual Studio 2010 (Quelle: http://www.mztools.com/Articles/2008/MZ2008017.aspx)

Die Gewinner des ersten Gewinnspiels auf dotnet-kicks.de stehen fest!

14.11.2010 13:47:00 | dotnet-kicks.de Blog

Am 24.10.2010 startete das erste Gewinnspiel auf dotnet-kicks.de. Es gab 6 interessante Preise zu gewinnen, 3 Freikarten für die GUI&Design Konferenz sowie 3 Amazon Gutscheine.
Angelika von Ammon war bei diesem Gewinnspiel die Glücksfee und zog die Lose.
Folgende Gewinner wurden ermittelt:

Je ein Freiticket für die GUI&Design – Konferenz haben gewonnen:

  • Martin Hey 
  • Torsten Hufsky
  • HipHip-Array

Je einen Amazon Gutschein im Wert von 33€ haben gewonnen:

  • Sascha Dittmann
  • Roland Schumacher
  • Uwe Grunwald

Die Gewinner werden per Email benachrichtigt.

Allen Gewinnern viel Spaß auf der Konferenz bzw. beim Geld ausgeben auf Amazon!

TechEd Europe Nachlese + MSDN TV

14.11.2010 13:08:19 | Peter Nowak

Letzte Woche fand die TechEd Europe in Berlin statt, wo Patrick und ich auf dem WP7 Stand live vor Ort waren.

Patric wurde dabei von Michael Hülskötter zu unserem in Kürze erscheinenden Buch interviewt, was ich euch nicht vorenthalten möchte.

Die Quelle zu diesem Video findet ihr hier. Darüber hinaus hat Michael eine Menge anderer Videointerviews mit Brandon Watson und vielen weiteren interessanten Interviewpartnern gedreht, welche ihr gesammelt hier findet.

Ebenfalls gestern ist eine neue Folge von MSDN TV mit der charmanten Lori Grosland erschienen, welches beim MVP Open Day im Oktober gedreht wurde, wo auch Sie mich ein wenig zum Windows Phone 7 ausfragte. Das möchte ich euch natürlich auch nicht vorenthalten. Quelle: hier. (Danke an Kai für den Embedded Link)

Get Microsoft Silverlight



This posting is provided "AS IS" with no warranties, and confers no rights.

Windows Phone 7: Using threading for heavy operations

14.11.2010 10:56:00 | Patric Schouler

For developers of Windows Phone 7 apps it is important to know all existing concepts of scheduling tasks on Windows Phone 7. At Windows Phone 7 the core threads are the Compositor Thread which interacts with the GPU and the UI Thread. The UI Thread is the main thread, where all your code will normally be executed. But the UI Thread have to handle some important events of the OS and is responsible for the layout management. Therefore it is not a good idea to do heavy actions in the UI thread, because then your app will loose very quickly the “smooth” experience of Windows Phone 7.

The normal way is to create for this heavy operations (parsing JSON, rendering bitmaps, etc.) a new thread directly or using the  BackgroundWorker class. An alternative way you can found at

Scheduling tasks on Windows Phone 7 | .NET Zone.

Instead of using the direct ways for new thread creation, you could use the built-in scheduling mechanism which are in the namespace Microsoft.Phone.Reactive. The Scheduler class in this namespace allows you to defer execution of pretty much everything you need. You can either directly operate with Scheduler or via IScheduler, that will get a thread instance from Scheduler.

Using authenticated RIA Services with Windows Phone 7

13.11.2010 11:17:00 | Patric Schouler

In my older post RIA Services: Windows Phone 7 and SOAP endpoint | .NET - Red zone : Best practices and latest stuff I have described how a RIA Service can be used as normal WCF SOAP service for example with Windows Phone 7.

But if you want to use RIA Services with Windows Phone 7, there is the problem that Silverlight for Windows Phone 7 does not support authentication headers. But using the instructions here Using Authenticated Ria Services on your WP7 phone - Marcel de Vries, MVP Team System - blog community you can still use the cool authorization mechanism of WCF RIA Services with Windows Phone 7.

The key steps are:

1. Add enableHttpCookieContainer="true" to your ServiceReferences.ClientConfig

After the proxy is generated enable the HttpCookieContainer at your bindings for authentication service and your domain service. You have to remove it for each proxy new configuration to avoid an error message during proxy generation.

   1: <bindings>
   2:             <basicHttpBinding>
   3:                 <binding name="BasicHttpBinding_AuthenticationServiceSoap" maxBufferSize="2147483647"
   4:                          enableHttpCookieContainer="true"
   5:                     maxReceivedMessageSize="2147483647">
   6:                     <security mode="None" />
   7:                 </binding>
   8:                 <binding name="BasicHttpBinding_EmployeeDomainServiceSoap" maxBufferSize="2147483647"
   9:                       enableHttpCookieContainer="true"
  10:                     maxReceivedMessageSize="2147483647">
  11:                     <security mode="None" />
  12:                 </binding>
  13:             </basicHttpBinding>
  14:         </bindings>
2. Store the returned cookie container of your Login-Call for the next service calls
   1: protected virtual void OnLoginCompleted(object sender, LoginCompletedEventArgs e)
   2:        {
   3:            var args = new LoginServiceCompletedEventArgs();
   4:            
   5:            CookieContainer = null;
   6:            
   7:            if (e.Result != null)
   8:            {
   9:                args.User = null;
  10:                args.Error = true;
  11:  
  12:                CookieContainer = _authclient.CookieContainer;
  13:                ViewModelLocator.AuthCookieContainer = _authclient.CookieContainer;

Hint: Don’t be surprised that the cookie container looks empty at this point (count is 0). There is a kind of “magic” cookie still in there.

3. Use the returned cookie container for your proteced domain service calls
   1: var client = new EmployeeDomainServiceSoapClient
   2:                  {
   3:                      CookieContainer = ViewModelLocator.AuthCookieContainer
   4:                  };

Vortrag an der Jade Hochschule Wilhelmshaven: Mit Office Business Applications Unternehmensprozesse effektiver gestalten

13.11.2010 04:06:00 | Lars Keller

Mich hat mein ehemaliger Professor (Prof. Wulff, Institut für Wirtschaftsinformatik) angesprochen, ob ich nicht Lust hätte einen Vortrag zum Thema MS Office Entwicklung mit .NET in der Jade Hochschule Wilhelmshaven (zu meiner Zeit hieß diese noch FH OOW) zu halten. Ich musste da nicht lange überlegen. :)

Deshalb werde ich am 18.11.2010 um 16:00 im Raum H102 (großer Hörsaal) im Hauptgebäude einen Vortrag zu dem Thema halten. Den Hörsaal kenn ich noch von früher aus der einen oder anderen interessanten Vorlesung.

Vortragsthema ist: Mit Office Business Applications Unternehmensprozesse effektiver gestalten

In vielen Unternehmen ist MS Office als Standardprodukt vorhanden. Office Business Applications (OBA) ermöglichen, Geschäftsprozesse in MS Office zu integrieren und die Handhabung komplexer Abläufe effektiver zu gestalten.
Beispiele sind das Befüllen von Excel mit Daten aus Outlook oder einer anderen Datenquelle, das Generieren vorausgefüllter Worddokumente oder die Interaktion von verschiedenen Office Applikationen.
Der Vortrag zeigt, wie einfach dies mit der Hilfe von VSTO (Visual Studio Tools for Office) und .NET realisiert werden kann.

Die Teilnahme ist kostenlos und richtet sich nicht nur an Studenten, auch Unternehmen sind herzlich zu dem Vortrag eingeladen. Weitere Informationen stehen hier.

Ich bin sehr gespannt, wie das so ist, wenn man auf der anderen Seite des Hörsaals steht und freue mich jetzt schon sehr auf bekannte und viele neue Gesichter.

Für Studenten:
An dieser Stelle sei auch darauf hingewiesen, dass mein Arbeiter mehrere interessante Diplom-/Bachelorarbeiten anbietet. Ein paar davon werden direkt von meinem Team betreut. :-)

CustomizableOutDir in TFS 2010 with ASP.Net Projects

12.11.2010 16:18:08 | Christian Binder

 

Jim Lamb has blogged about how to CustomizableOutDir using Team Build 2010 as you might want have the assemblies dropped in a custom Folder structure instead of having all assemblies in one Drop Folder, which is the default behavior.

When applying this workaround to a Solution containing an ASP.Net Project you might be missing the _PublishedWebsites folder in the Drop Folder structure:

image

Assuming you have configured the Team Build Workflow as Jim suggested:

image

You can workaround the problem by using a different definition for OutputPath and OutDir in the Webapplication.csproj File:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutDir Condition=" '$(TeamBuildOUtDir)'!=''">$(TeamBuildOutDir)\$(SolutionName)\$(MSBuildProjectName)\</OutDir>
    <OutputPath>bin\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
</PropertyGroup>

The reason why it’s failing is because the _CopyWebApplication Target will be skipped. To figure out if this is the case you can check your MSbuild log  fole the following line: 

Target "_CopyWebApplication" skipped, due to false condition; (!$(Disable_CopyWebApplication) And '$(OutDir)' != '$(OutputPath)'

That’s it. The Issue has been already reported via Connect.

Die Zukunft von Silverlight–Silverlight Firestarter

12.11.2010 13:22:11 | Oliver Scheer

clip_image001

You’re invited to a very special event on December 2nd, 2010

Learn about the future of Silverlight from Corporate Vice President, Scott Guthrie and other experts, direct from Microsoft’s HQ.

Hear about our plans for the next version of Silverlight, the latest developments as well as in-depth sessions on building applications with Silverlight.

Registration is free – take part in-person or online.

Find out more and Register online

STC 2010 – kostenlose Technologiekonferenz für Studierende

12.11.2010 13:19:29 | Oliver Scheer

STC_Banner_367x242

Sie ist wieder da! Die Student Technology Conference! Diesmal dreht sich bei der Technologiekonferenz für Studenten und Schüler alles um die Themen XNA, Windows Phone 7, Silverlight, Azure, HTML5 und IE9, Embedded Compact und .net. Gleichzeitig erfahren die Teilnehmer auf der Konferenz alles über den Technologiewettbewerb Imagine Cup und die unterschiedlichen Teilnahmemöglichkeiten.

Die Veranstaltung findet am 4. und 5. Dezember 2010 auf Schloss Höchst in Frankfurt (Main) statt und ist kostenlos. Auch die Übernachtung wird von Microsoft bereitgestellt. Lediglich die Anreise müssen die Studenten und Schüler aus eigener Tasche bezahlen.

Mehr Infos und Online-Anmeldung auf www.studentconference.de

JavaScript Frameworks in Verbindung mit SharePoint 2010

11.11.2010 22:10:21 | Thorsten Hans

SharePoint2010SharePoint 2010 setzt viele neue Maßstäbe im Bereich der UI-Gestaltung und Interaktion im Webbereich. So ziemlich alles was man in SharePoint 2010 sehen kann ist mittels JavaScript aufgepäppelt. Eigentlich ja nichts schlechtes, aber für den ambitionierten Entwickler heißt dies, dass man selbst auch viel mehr JavaScript schreiben muss, dass seine eigenen Anwendungen sich nahtlos in SharePoint integrieren und dem Anwender die gewohnten Features und Möglichkeiten bieten.

 

Beim Release von SharePoint 2010 war für mich, neben der Tatsache das die Plattform für SharePoint 2010 das .NET Framework 3.5 und nicht die 4er Version sein wird, das grö0te Manko die Verwendung von Microsoft Ajax anstelle von jQuery. Das SharePoint Team hat bei der Implementierung auf ein totgesagtes JS-Framework gesetzt. Selbst MS hat sich bereits vor dem SP2010 Release dazu entschlossen MSAjax nicht weiterzuentwickeln und lieber das jQuery Projekt zu contributen.

Doch was bedeutet die Verwendung von MSAjax konkret?

Nun das UpdatePanel wird in sämtlichen MSDN Beispielen - wie der Phönix aus der Asche – wieder zum Leben erweckt.  Was am UpdatePanel schlecht ist wurde damals im ASP.NET Kontext schon mehr als genug diskutiert und dokumentiert – Wir werden all diese Gründe bestimmt in einigen Monaten / oder Jahren im SharePoint Kontext auch hören. I guess…

Alternative JS-Frameworks in SharePoint 2010 einsetzen

JQueryNatürlich hat man die Möglichkeit jedes beliebige JS Framework in SharePoint 2010 zu integrieren, doch leider funktioniert nicht jedes Framework im  Zusammenhang mit Microsofts Serverprodukt Nr.1

Zunächst einmal die gute Nachricht, das überall zurecht beliebte JavaScript-Framework jQuery funktioniert bis Dato tadellos in den Einsatzgebieten die ich ausprobiert habe. Auch die UI Komponenten von jQuery konnte ich problemlos einbinden und verwenden. Hin und wieder muss man die CSS Klassen von jQueryUI etwas anpassen, aber dass ist ja Standard. :) Wer also jQuery verwenden will, der kann direkt loslegen.

 

ExtJSNeben jQuery habe ich auch bereits die Integrationsfähigkeit von ExtJS getestet. ExtJS bietet OutOfTheBox sehr coole Oberflächenkomponenten an, mit denen man  sehr schnell hochdynamische Oberflächen erstellen kann. Auf den ersten Blick scheint auch ExtJS nahtlos in SharePoint eingebunden werden zu können. Doch ein genauerer Blick zeigt schnell dass es nicht geht. ExtJS erweitert den XmlHttpRequest Typ um die Methoden RemoveAt und IndexOf. SharePoint 2010 hingegen iteriert in vielen JavaScriptMethoden einfach über alle Member dieses Types und verwendet diese als Properties, was natürlich bei IndexOf und RemoveAt zu JavaScript Exceptions führt. Somit kann man nicht mal mehr einfache WebPartSeiten bearbeiten :(.

 

Natürlich gibt es noch viele JS-Frameworks die man testen könnte, allerdings habe ich mich hier einfach mal auf die Frameworks beschränkt, die ich in letzter Zeit mal verwendet habe. Falls Ihr noch weitere JS-Frameworks habt, die ich mal kurz validieren soll, meldet euch einfach, so kann ich diese Liste komplettieren.

 

Visual Studio 2010 Add-In: MSDN Online-Startseite

11.11.2010 20:15:32 | Kay Giza

Kostenloser Download: Visual Studio 2010 Add-In für die VS2010 Startseite. MSDN, das offizielle Microsoft Developer Network von Microsoft Deutschland , stellt Softwareentwicklern mit dieser Ergänzung der bestehenden Visual Studio 2010-Startseite das breitgefächerte Informations-, Support- und Downloadangebot von MSDN Online direkt beim Start der Entwicklungsumgebung zur Verfügung. Ob... [... mehr Informationen + Download in diesem Blogeintrag auf Giza-Blog.de]

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

Plat_Forms: The Web Development Platform Comparison

11.11.2010 17:05:08 | Kay Giza

Webplattformen im Vergleich: Am 18./19.01.2011 findet in Nürnberg der Programmierwettbewerb 'Plat_Forms - The Web Development Platform Comparison' statt. Aufgabe des Wettbewerbes ist es, eine webbasiertes System zu implementieren. Was genau dieser Wettbewerb ist, von wem er organisiert wird und wie man mitmachen kann, erfahren Sie in diesem Blogeintrag auf Giza-Blog.de... [... mehr]

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

Developer Contest: Random Hacks of Kindness - Hacking for Humanity

11.11.2010 15:41:08 | Kay Giza

Hacking for Humanity ist das Motto eines Programmierwettberbs von der Weltbank, NASA, Google, Yahoo! und Microsoft, welcher am 04. und 05. Dezember 2010 in Berlin stattfindet. Was genau der Wettbewerb ist und was es zu gewinnen gibt, erfahren Sie in diesem Blogeintrag auf Giza-Blog.de... [... mehr]

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

Coding-Dojo beim .NET-Stammtisch Konstanz-Kreuzlingen

11.11.2010 01:12:00 | Jürgen Gutsch

Er hat es tatsächlich getan.

Der Ilker Cetinkaya schnappt sich den Sebastian Achatz, packt ihn in seinen – klar – BMW und rast von München nach Kreuzlingen, um beim .NET-Stammtisch Konstanz-Kreuzlingen ein .NET-Coding-Dojo zu moderieren. Er verursacht drei Stunden lang Action und Spass, schnappt sich seinen Compagnon und rast zurück nach München. Voll Krass…

Nochmal ein fettes Dankeschön von uns, für den tollen und spaßigen Abend.

Der Abend hat leider etwas unorganisiert angefangen. Das Restaurant hat den riesigen Bildschirm , den wir hier normalerweise für Präsentationen verwenden, anderweitig verliehen, so das Tilo noch einen kleinen PC-Schirm organisieren musste. Bei der größer der Gruppe gestern war das am Ende so allerdings viel besser, da sich alle auf die Gruppe konzentrierten, statt auf eine Leinwand oder einen Bildschirm der an der Wand steht.

Ganz wie in der Realität, stellte sich die im Grunde einfache Aufgabe dann als kniffliger heraus, als dem “Kunden” ein weiteres Feature eingefallen war. Auch für das “Team”, da hier der Focus nicht nur auf den Spass, sondern auch auf testgetriebene Entwicklung gelegt wurde. Für viele war TDD praktisch anzuwenden völlig neu, aber alle haben sich dann recht schnell orientieren können.

Toll war gestern auch, dass wirklich alle Anwesenden aktiv beteiligt waren, auch diejenigen die – ihrer Aussage nach -  nur wenig Erfahrungen haben. Das war natürlich auch ein Verdienst von Ilker, der mit seiner Art alle beteiligten mitgerissen und angesteckt hat.

Was nehme ich selber mit?

Ich nehme das Dojo mit :-)

Gerade dieser Dojo-Modus ist ideal um in zur Auflockerung, zur Teambildung und zur Niveau-Angleichung in der Firma, im Team anzuwenden. Ich werde also versuchen in Zukunft in regelmäßigen Abständen im Team ein Dojo dieser Art zu machen.

DotNetKicks-DE Image

Zuständigkeiten

10.11.2010 22:51:04 | Jürgen Gutsch

Kein technischer Beitrag, sondern wieder nur eine Überlegung, die auch als Diskussionsgrundlage dienen kann. Es knüpft etwas an MaaS an, aber auch an den Softwarehandwerker, ohne aber auf beide konkret einzugehen.

Im folgenden ist meine Sicht beschrieben, wer für was zuständig ist und wer welche Fragen zu klären und welche Probleme zu lösen hat. Es ist eine Schwarz-Weis-Darstellung die ganz sicher nicht zu 100% auf die Realität übertragbar ist. Möglicherweise ist es auch nur eine Wunschvorstellung, aber auf jeden Fall aus meiner heutiger Sicht der optimale Weg.

Die Grundaussage von mir ist folgende:

Management sollte nur für die Was-Frage zuständig sein, nicht für die Wie-Frage. Die Wie-Frage ist Sache des ausführenden Technikers.

Kurz geklärt:

  • Die Was-Frage fragt nach dem was ich will und was ich benötige. Die Antworten sind die Anforderung die ich an eine mögliche Lösung stelle. Die Mittel zur Lösung, können die Antwort auf die Was-Frage “Was benötige ich dafür?” sein.
  • Die Wie-Frage fragt nach der Art, wie die Lösung mit den gegebenen Mitteln umgesetzt wird.

Es gibt hier sicher Grauzonen, wenn die "Wie-Frage" zu großen Einfluss auf die Kosten hat. Aber ansonsten bleibe ich bei der obigen Grundaussage

Begründung.

In den meisten Fällen hat das Management nicht die nötige Kompetenz, die Wie-Frage zu klären. Die angestellten Experten, also die Techniker sind diejenigen, die für diesen Zweck eingestellt worden sind, also diejenigen, welche die Kompetenz besitzen die Wie-Frage wirklich zu klären.

Beispiel Forst:
Der Graf besitzt einen Wald und hat angestellte Förster. Wenn der Graf nun auf die Idee kommt und seinen Experten vorschreiben will, wie die Bäume zu fällen sind, gibt es vorprogrammierte Konflikte. Allerdings darf der Graf bestimmen was für ein Holz geerntet werden soll, um seine eigenen Kunden zu befriedigen.

Festlegung von Strategien

Richtig ist, dass das Management die Strategie festlegt, also die Fragen nach dem Was und Wieso beantwortet. Natürlich sollte für die Strategie auch eine grobes Wie geklärt sein, um die die möglichen Aufwände zu kennen. Aber dieses Wie kann und sollte nur mit Hilfe der eingestellten Experten beantwortet werden. Auch wenn das Management möglicherweise die nötige Kompetenz besitzt, verbietet es die Fairness und die Logik, die Frage alleine und ohne die ausführenden Techniker zu klären.

Consultants als Zwischenschicht

"A consultant (from the Latin consultare means "to discuss" from which we also derive words such as consul and counsel) is a professional who provides professional or expert advice[1] in a particular area of expertise..." (Wikipedia)http://en.wikipedia.org/wiki/Consultant

Der Consultant ist in dem Fall der eingestellte Experte, der auch die Wie-Frage grob klären kann. Wenn dieser Consultant auch die Techniker schult, anleitet und betreut, gibt er die geklärten, groben Wie-Fragen IMO als detaillierte Was-Fragen, also als detaillierte Anforderungen weiter

Szenario (adaptiert auf die Softwareentwicklung):

  • Chef zu Consultant: Ich möchte eine Anwendung mit den und den Anforderungen (Was)
  • Consultant zu Chef: Ja, machbar mit den und den Technologien (Wie) und dieser und jener Architektur (Wie)
  • Consultant zu Techniker: Ich möchte eine Anwendung mit folgender Anforderungen mit dieser und jener Architektur (Was) und dieser Technologie. (Was)
  • Techniker zu Consultant: Alles klar, lass mich das für dich machen. Wie ich das konkret mache ist mein Bier, solange ich diese Technologie (Was) und diese Architektur (Was) nutze

Wenn nun eingeworfen wird, dass in der Realität der Consultant der Entwickler ist. Stimmt etwas nicht mit dem Consultant. [Achtung Verwirrung] Der Consultant ist dann keiner mehr, so lange er Entwickelt. Der Consultant mag im Vorfeld und während des Projektes beratend und lenkend beteiligt sein, aber sobald er Entwickelt ist er der Techniker und kein Consultant mehr. (Siehe obige Definition)

Desweiteren

Natürlich ist das allgemein ausgerückt und natürlich gibt es immer wieder Ausnahmen.

Ich möchte damit nur sagen, dass das Management die Experten eingestellt hat, um Fragen zu klären und um Probleme zu lösen. Ich möchte damit sagen, dass sich das Management in Erinnerung halten sollte, dass es diese Experten im Unternehmen noch gibt und das Sie auf dessen Expertenmeinungen Wert legen müssen.

Ist das nicht der Fall, so ist der eingestellte Experte rausgeschmissenes Geld und (adaptiert auf die Softwareentwicklung) ist der klassische Code-Monkey die passendere Lösung.

Code monkey is a programmer who writes code for a living. Code monkey can also be used self-deprecatingly in griping about or denying responsibility for management decisions
http://en.wikipedia.org/wiki/Code_monkey

Das Management muss natürlich das nötige Vertrauen in den Techniker aufbringen. Aber fehlt das Vertrauen, ist die Beziehung zwischen dem Management und dem Techniker nicht zukunftsfähig. Kann das Management das Vertrauen generell zu keinem Techniker aufbringen, ist das Management nicht zukunftsfähig und das Problem ist dort zu suchen.

Am Ende

Es stellt sich am Ende noch die Frage wie der Experte aussieht. Aber diese Antwort (wieder adaptiert auf die Softwareentwicklung) finde ich ganz sicher in dem Buch Der pragmatische Programmierer das gestern bei mir eingetroffen ist (Danke für den Tipp Golo)

Danke auch an Markus Schmid und Benedikt Funk, ohne deren Diskussionsbereitschaft die Überlegungen gar nicht zustande gekommen wären :-)

[Update]

Eine kleine aber wichtige Anmerkung kam eben noch von Hannes Preishuber:

“Kontrollpunkte und wie wird kontrolliert durch wen, denn ohne Kontrolle keine Qualität”

Vielen dank für den Einwand :-)

Andersherum ist der Techniker natürlich auch verpflichtet, dafür zu sorgen, dass er das Vertrauen des Mangers erhält und halten kann. Wer die Freiheiten möchte, muss auch die Verantwortung übernehmen. Der Techniker ist demnach verpflichtet die Qualität zu liefern und wenn er das nicht schafft, die Verantwortung zu übernehmen. Kann das der Techniker nicht leisten, kann der Manager folglich auch nicht das Vertrauen aufbringen.

DotNetKicks-DE Image

UI/UX-Grundlagen für Entwickler und andere Nicht-Designer

10.11.2010 22:16:59 | Roland Weigelt

Nachdem ich den Vortrag bereits mit großem Erfolg auf der See# Party in Kreuzlingen (Schweiz) und bei der netug-niederrhein in Krefeld gehalten habe, wird es nun langsam mal Zeit, dass er auch “zu Hause” bei meiner eigenen .NET User Group “Bonn-to-Code.Net” zu hören ist.

23.11.2010 um 19:00 (Einlass ab 18:30)
Bonn Pützchen, in den Räumen der Comma Soft AG

(Infos zur Anfahrt auf der Bonn-to-Code.Net Website)

Aus der offziellen Ankündigung:

Viele Entwickler behaupten von sich freimütig, überhaupt kein Gespür für die Gestaltung von Oberflächen zu haben und können mit dem Begriff "User Experience" noch weniger anfangen. Wer es dabei belässt, macht sich die Sache jedoch ein wenig zu einfach, denn häufig ist es nur ein kleiner Schritt von einer schlechten zu einer durchaus akzeptablen GUI.

Dieser Vortrag stellt einige grundlegende Gestaltungsprinzipien vor, gibt praktisch einsetzbare Tipps und klärt u.a. was zugekniffene Augen und das Wissen um Fluchtreflexe mit Usability zu tun haben. Er ist dabei unabhängig von konkreten GUI-Technologien.

Dauer: 2x 45min

Windows Phone 7 - It's time for a phone to save us from our phones

10.11.2010 14:22:00 | Martin Hey

Nun ist es so ziemlich genau eine Woche her, seitdem ich mein neues Windows Phone 7 Device das erste Mal in die Hände nehmen konnte. Es gab ein paar Kritikpunkte, die ich in meinem ersten Post zu diesem Thema veröffentlicht habe. Dank der vielen Kommentare habe ich gemerkt, dass einige der von mir angemerkten Punkte in der Verantwortung meines Mobilfunkpoviders liegen (z.B. der Suchprovider im Internet Explorer), einige Punkte mit dem nächsten Softwareupdate behoben sein werden (z.B. das fehlende Copy & Paste) und an einige Punkte muss ich mich wohl gewöhnen, wenn ich die Vorteile alle nutzen will (z.B. komplette Kontaktliste in der Cloud).

Zusammengefasst bin ich aber nach wie vor begeistert. In meinen Augen kann es Microsoft damit endlich schaffen, wieder realistisch im Smartphone-Geschäft Fuß zu fassen. Und mit Silverlight und XNA als Basis ist den Entwicklern Handwerkszeug gegeben wurden, um für den Endanwender interessante Anwendungen zu entwickeln. Inzwischen gibt es Devices sowohl auf dem europäischen als auch dem us-amerikanischen Markt und die Registrierung für neue Apps ist freigegeben für alle Entwickler. Auch stolpere ich immer häufiger wieder über Werbeclips für das Betriebssystem, so dass auch Nicht-Nerds angefüttert werden.

In diesem Sinne: "It's time for a new phone...."

Interview zu WP7 Entwicklung auf der TechEd

10.11.2010 11:18:22 | Peter Nowak

Gestern gab es auf der TechEd ein deutsches Interview zum Thema WP7 Entwicklung, welches hier zu finden ist.



This posting is provided "AS IS" with no warranties, and confers no rights.

TechEd 2010 unofficial WP7 (Dev) FAQ from the WP7 booth - Part1

10.11.2010 10:00:16 | Peter Nowak

So Patrick and I are already here at the WP7 booth for 2 days. We found out that a lot of questions are repeating. Therefor I'd like to sum those questions up in this small post.

  • What is this story about this Windows Phone 7 / Windows MOBILE 7 thing?
    The answer is simple - the Windows Phone 7 has nothing in common with Windows Mobile. It has been built up from ground. Easy sample: Don't try to talk about citrons, if you have strawberrys in front of you. The only thing in common is that they are fruits (smartphones).
  • How do I migrate my Windows Mobile app?
    Okay - this is a tough one. This can't be answered in one sentence.
    If you have a native app running on Windows Mobile than you actually don't have any possibility to migrate, as WP7 doesn't support native apps officially.
    If you have a managed app the chances are better. You can migrate your business layer which shall be easy. If you are doing stuff like direct hardware access or other things you have to find away to get around this. Keep always in mind that you have a closed ecosystem where your App is executed in a Sanbox, where you are only allowed to break out in a secured way through choosers and launchers. The filesystem isn't available as well to you, as the only possibility to access it is through the Isolated Storage concept.
    On top of your migration is your View layer. This has be redone completly. Probably some concepts can be reused but the UI System undeneath is different. It is now Silverlight which has nothing in common with Windows Forms from the .NET Compact Framework.
  • Why doesn't Silverlight Apps get executed in the Browser?
    It's an easy story. Silverlight for the Browser has another subset of the .NET Framework underneath where the Silverlight for WP7 is based on the .NET Compact Framework. Long story short: They don't match.
  • What bluetooth profiles are supported?
    AFAIK it is only Audiocentric profiles. There is no way to exchange data between 2 devices via bluetooth for now.
  • How do I access my xyz hardware?
    You can't - there are APIs for supported hardware access which is defined by the Windows Phone 7 API. Nothing more, nothing less.

So far, so good.

Stay tuned for additional FAQ entries..



This posting is provided "AS IS" with no warranties, and confers no rights.

Erinnerung: Giza-Blog.de wegen Wartungsarbeiten nicht erreichbar bis spaetestens 10.11.2010, 8.00 Uhr

09.11.2010 22:39:03 | Kay Giza

Eine kleine Erinnerung: Dieser Webserver bzw. http://www.giza-blog.de wird wie angekündigt, wegen Wartungsarbeiten, von 09.11.2010 - 22.25 Uhr bis  10.11.2010 - 08.00 Uhr nicht erreichbar sein.
Bei Interesse, abonnieren Sie Giza-Blog.de bitte per RSS RSS 2.0, ich werde frühestmöglich berichten, wann Giza-Blog.de wieder erreichbar ist oder alternativ über Twitter über den aktuellen Stand informieren.
In der Hoffnung es geht alles gut: Bis morgen Vormittag und vielen Dank für das Verständnis!



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

.Net User Group Karlsruhe: AntMe! mit Tom Wendel (@bobstriker)

09.11.2010 14:25:00 | Alexander Zeitler

.NET Usergroup Karlsruhe Logo

Am 18.11.2010 um 18:00 Uhr findet das nächste Treffen der .NET Usergroup Karlsruhe (XING-Gruppe der .NET Usergroup Karlsruhe) statt.

Thema

AntMe! mit Tom Wendel

Details zum Thema

AntMe!

AntMe! - Spielerisch Programmieren lernen


"AntMe!" ist ein Serious Game, das auf interessante und leicht verständliche Weise das Erlernen der Software-Entwicklung mit der objektorientierten Programmiersprachen C#, Visual Basic oder auch C++ ermöglicht.


Die Lernwelt ist eine simulierte Welt der Ameisen. Die Lernenden steuern ein Ameisenvolk mit Hilfe eigenentwickelter und selbstprogrammierter Algorithmen. Die Ameisen müssen ihre virtuelle Welt erkunden, Zucker und Äpfel sammeln, sowie mit ihren Fressfeinden - den Wanzen – interagieren. Die Welt der Ameisen bildet die Programmierumgebung für den Spielablauf. Spielerisch und kreativ wird der Lernende mit "AntMe!" an den Aufbau und die Funktionsweise von Quelltexten, Kontrollstrukturen, Objekten und Methoden herangeführt.

Aber die Hauptsache an diesem Abend ist: Spaß haben beim coden !!!
Mitzubringen:
- Notebook (am Besten mit installiertem AntMe! Link s.u.)
- Netzwerkkabel
- Verlängerungskabel bzw. Mehrfachsteckdose
- Lust am programmieren
Links:
http://antme.net/
http://de.wikipedia.org/wiki/AntMe!


=== Unter Vorbehalt ===
Wenn rechtzeitig geliefert wird, werden wir an diesem Abend auch eine XBox 360 mit Kinect vor Ort haben. Du bist der Controller!
http://www.xbox.com/de-DE/kinect

Über den Sprecher

Tom Wendel

Tom Wendel (Microsoft) wird an diesem Abend AntMe! kurz vorstellen und dann werden wir aktiv loslegen. Ob Einzeln oder im Team, das entscheiden wir vor Ort, abhängig von den Teilnehmern. Ziel wird es sein die KI (Künstliche Intelligenz) für sein eigenes Ameisenvolk zu entwickeln und diese dann mit den anderen Ameisenvölkern zu messen. Im Anschluss werden wir Gelegenheit nutzen die unterschiedlichen Algorithmen zu betrachten und zu diskutieren.

Teilnahme

Bitte meldet Euch wieder via XING an, die Location ist wieder DJK-Ost:

DJK-Ost
Friedrichstaler Allee 52
76131 Karlsruhe

DotNetKicks-DE Image

15.11.10 Treffen der DNUG Braunschweig – Windows Phone 7 – Das portable Tor zur Welt

09.11.2010 13:35:00 | Lars Keller

Die DNUG Braunschweig trifft sich am 15.11.2010 um 19:00 im Restaurant Zucker (Tagungsraum). Uns kommt der Microsoft Developer Evangelist Tom Wendel mit dem TechTalk Thema “Windows Phone 7 – Das portable Tor zur Welt” besuchen.

Schon lange ist eines der Hauptargumente für die .NET-Plattform die allesübergreifende Verfügbarkeit. Ob Server, Website, Datenbank, Client, ob PC oder Xbox360: Mit einer Technologie, einem Set an Entwicklertools und einer einzigen Programmiersprache bekommt man alle Programmierprobleme der Welt in den Griff.

Grundlagen hat hier schon Windows Mobile gelegt, das Teil dieser Philosophie ist, aber wir alle wissen: Das geht noch besser. Mit Windows Phone 7 beweist Microsoft jetzt, dass „Windows Telefone“ keineswegs oldschool oder business-only sind und auch nicht wie Briketts aussehen müssen. Ganz im Gegenteil: Eine minimalistische, neue Bedienung, sauberes Oberflächendesign, schnelle 3D-Spiele - all das zeichnet Windows Phone aus. Was Entwickler damit anfangen können, erfahren Sie jetzt bei der aktuellen MSDN TechTalk Roadshow im Oktober.

Bio: Tom Wendel , Developer Evangelist bei Microsoft Deutschland, studierte Informatik an der Hochschule Karlsruhe und war lange Zeit freischaffender Software-Schmied und Berater für heikle Softwarefragen. Durch die enge Zusammenarbeit mit Künstlern und Designern schafft er eine Schnittstelle zwischen Kunst und Technik; dabei verbindet er Freigeist und den Ideenreichtum mit ganz bodenständigen Maschinen. In seiner Freizeit geht er seinen Vorlieben für klassisches Musiktheater nach und veranstaltet Punkrock-Konzerte. Außerdem war er 1972 der bis heute unangefochtene Weltmeister in Super Mario Kart.

Achtung! Um eine Anmeldung zu dem Event wird gebeten. Schreibt einfach eine E-Mail an keller (at) dotnet-braunschweig (dot) de.

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

Weitere Informationen zur DNUG Braunschweig findest du hier.

Zugriff auf WorkItems über das Objektmodell

09.11.2010 12:49:00 | Martin Hey

Mit Hilfe des Objektmodells kann man recht simpel auf die WorkItems im Team Foundation Server zugreifen. Wie das geht, werde ich hier an einem kleinen Beispiel zeigen, in dem alle WorkItems eines TeamProjects aufgelistet werden sollen.
Zunächst werden Referenzen auf die Assemblies Microsoft.TeamFoundation.Client und Microsoft.TeamFoundation.WorkItemTracking.Client benötigt. Dann ist alles recht einfach. Mit den Klassen TfsTeamProjectCollection und WorkItemStore stellt uns das Objektmodell das Handwerkszeug bereit.
private WorkItemCollection GetAllWorkItems()
{
string teamCollectionUrl = "http://tfs.mydomain:8080/tfs/defaultcollection";
string projectName = "MyTestProject";

var projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(teamCollectionUrl));

var workItemStore = new WorkItemStore(projectCollection);

var wiq = string.Format("SELECT System.Title, System.Description FROM WorkItems WHERE System.TeamProject = '{0}'", projectName);

var workItemCollection = workItemStore.Query(wiq);
return workItemCollection;
}

Mit Hilfe der TfsTeamProjectCollectionFactory und der Url der Project-Collection lässt man sich die TfsTeamProjectCollection geben und kann dort dann eine WIQL-Query absetzen. WIQL steht für Work Item Query Language und ist eine Abfragesprache, die in einer SQL-ähnlichen Syntax das Abfragen von WorkItems erlaubt.

Eine weitere Möglichkeit sich mit der TfsProjectCollection zu verbinden ist der Konstruktor der TfsTeamProjectCollection. Vorteil dieser Methode ist, dass man hier zudem auch die Möglichkeit hat, abweichende Credentials zu hinterlegen.
private WorkItemCollection GetAllWorkItems()
{
string teamCollectionUrl = "http://tfs.mydomain:8080/tfs/defaultcollection";
string projectName = "MyTestProject";
string username = "user";
string password = "password";
string domain = "mydomain";

var credentials = new NetworkCredential(username, password, domain);
var projectCollection = new TfsTeamProjectCollection(new Uri(teamCollectionUrl), credentials);

var workItemStore = new WorkItemStore(projectCollection);

var wiq = string.Format("SELECT System.Title, System.Description FROM WorkItems WHERE System.TeamProject = '{0}'", projectName);

var workItemCollection = workItemStore.Query(wiq);
return workItemCollection;
}

Das ist beispielsweise dann sinnvoll, wenn man sich in einer anderen Domäne befindet als der Team Foundation Server, den man abfragen möchte.

Windows Phone 7, Xbox 360 und Kinect sowie ein Visual Studio 2010: Fast geschenkt mit Windows Azure!

09.11.2010 09:47:33 | Kay Giza

Fast geschenkt? Na ja - leichter war es noch nie! Die Chancen standen noch nie so hoch! Microsoft macht es jetzt wirklich einfach ein Windows Phone 7, eine Xbox 360 mit Kinect und Kinect Adventures oder ein Visual Studio 2010 Professional zu gewinnen! Und wie gesagt, so einfach war es noch nie :-). In diesem Blogposting erfahren Sie, wie Sie am Gewinnspiel teilnehmen können... [... mehr]

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

Free ebook: Programming Windows Phone 7, by Charles Petzold

09.11.2010 06:39:00 | Ozgur Aytekin

This book is a gift from the Windows Phone 7 team at Microsoft to the programming community, and I am proud to have been a part of it. Within the pages that follow, I show you the basics of writing applications for Windows Phone 7 using the C# programming language with the Silverlight and XNA 2D frameworks.

Yes, Programming Windows Phone 7 is truly a free download, but for those readers who still love paper—as I certainly do—this book will also be available (for sale) divided into two fully-indexed print editions: Microsoft Silverlight Programming for Windows Phone 7 and Microsoft XNA Framework Programming for Windows Phone 7. [Note from Devon: we should have these ready for order in December 2010.]

With the money you’ve saved downloading this book, please buy other books. Despite the plethora of information available online, books are still the best way to learn about programming within a coherent and cohesive tutorial narrative. Every book sale brings a tear of joy to an author’s eye, so please help make them weep overflowing rivers.

http://blogs.msdn.com/b/microsoft_press/archive/2010/10/28/free-ebook-programming-windows-phone-7-by-charles-petzold.aspx

WP7-Entwicklerparty am 10.11. in Berlin!

08.11.2010 18:34:04 | Oliver Scheer

Aus dem Blog von Frank Prengel:

Damit bei all der Informationsflut aber auch das Networking und der Spaß nicht zu kurz kommen, gibt das Windows Phone Marketplace-Team am Mittwochabend eine Party für WP7-Entwickler (registrierte Marketplace-Kunden werden bevorzugt eingelassen Zwinkerndes Smiley)

Hier die offizielle Ankündigung:

November 5, 2010
Windows Phone 7 Developer Mixer in Berlin!

Tech-Ed Europe returns to Berlin on November 8–12, with more than 25 Windows Phone–related sessions and labs. As part of the event, the Windows Phone Marketplace team will be hosting a small mixer for registered Marketplace developers. If you are planning to attend Tech-Ed, or if you will be in Berlin that week please plan to join us Wednesday, November 10th from 7pm to 9pm at:

Brauhaus Südstern

Hasenheide 69
10967 Berlin

(200m from  ‘Südstern’ U-Bahn station)

We will provide a light buffet and hand-brewed beer, as well as a chance to meet the Windows Phone 7 team and enter a raffle for a Windows Phone 7 device from HTC. 

We will also be shooting video of Windows Phone 7 developers demonstrating their apps.  If your app is already published on Marketplace, we’ll download it when you arrive, just be prepared to tell us about it.  If your app is working but not published yet, bring your .xap with you on a USB drive, and we’ll side load it on a device for you to show off for the camera.

Looking forward to seeing you in Berlin!

The Windows Phone Marketplace Team

Einladungen zum Event gibt es auf der TechEd am WP7-Stand. Wer (aus welchen Gründen auch immer) nicht an der TechEd teilnehmen kann, aber trotzdem enthusiastischer WP7-Entwickler ist und gern an der Party teilnehmen würde, sollte mich (Frank Prengel) bitte kontaktieren (Facebook oder meine Kontaktseite), und ich sehe zu, dass er/sie auf die Gästeliste kommt. OK?

Wir sehen uns im Brauhaus Südstern! Smiley

- Frank

P.S.: Wer sich jetzt fragt, was (in obigem Text) ein “mixer” mit dieser Party zu tun hat, für den zitiere ich aus meinem “Collins Großwörterbuch Deutsch/Englisch”:

mixer … (e) (US inf) Party f zum Kennenlernen; …

(LEO wusste das nicht…)

Windows Phone 7: Noch ein Rückblick

08.11.2010 14:00:00 | Jürgen Gutsch

Kurz vorweg: Ich bin immer noch begeistert vom WP7 und Punkte die ich hier nenne sind keine Kritik am WP7, sondern lediglich Dinge die nicht funktionieren oder leicht störend wirken können.

Anrufannahme

Mit dem WP7 kann man tatsächlich auch Telefonieren ;) Allerdings wird es schwierig, wenn man das Phone gerade per USB am Rechner hängen hat. Denn aus irgendeinem Grund nimmt der Rechner die Anrufe entgegen, was ohne Headset wirklich blöd. Mehrfach ist es mir passiert, dass ich statt den Anruf entgegengenommen zu haben, den Teilnehmer weggedrückt habe. Auch bringt es nichts, schnell das kabel zu ziehen, denn dann wird der Anruf ebenfalls beendet.

Ist nicht kritisch, man muss einfach nur wissen, dass man in der Hauptgeschäftszeit das Phone nicht an den Rechner hängt oder per Headset mit diesem oder dem Rechner verbunden ist.

[Update zu Anrufannahme ]

Das Problem liegt nicht am Anschluss per USB, sondern an der Bluetooth-Verbindung vom WP7-Gerät zum Rechner: Das Problem ist nicht wirklich eigentlich keines, sondern ein interessantes Feature, das man aber kennen muss. Ob es ein WP7-Feature ist, oder ein HTC-Feature ist mir allerdings noch nicht klar.

Telefonate können per PC angenommen werden. Besonders praktisch ist das, wenn man eh ein Headset am Rechner angeschlossen hat um per Skype zu telefonieren. Liegt nun das WP7-Gerät daneben und ist es per Bluetooth verbunden, kann das Telefonat gleich über den PC angenommen werden ohne das man das gerät überhaupt in die Hand nehmen muss.

Wer also wie ich das Feature nicht nutzen will, sollte nicht per Bluetooth mit dem PC verbinden.

Apps

Leider sind Apps nicht immer Fehlerfrei, wenn sie aus dem Marketplace installiert werden. Eine harte Exception einer Drittanbieter-App, die ich bisher schon gesehen habe ist nicht weiter schlimm. Allerdings habe ich das Gefühl, dass ich das Phone mindestens alle zwei Tage neu starten muss, damit das System performant läuft, bzw. damit auch wirklich alle Apps laufen. Hier ist es mehrfach passiert, dass sich eine App, die ich starten wollte, wieder schließt und ich in der vorhergehenden Ansicht lande. Ob das jetzt direkt mit irgendwelchen Apps oder mit dem System selber zusammenhängt kann ich nicht sagen.

Bisher war es auch nicht kritisches. Einmal schnell neu starten und das Phone läuft wieder wie gewohnt performant. ist allerdings störend, wenn man jemand ist, der sein Telefon bisher nie ausgeschalten hat.

Synchronisation

Office ist auf dem Phone, genauso wie eine Medienlibrary. Adobe Reader nutzt einen eigenen File Store. Nun würde ich gerne alle Files auf die gleiche Art Synchronisieren. Leider lassen sich nur Mediendaten (Bilder, Musik, Videos) direkt per Zune mit dem Rechner Synchronisieren. Office Dokumente muss ich mir entweder per Mail zu schicken oder per Sharepoint austauschen. Und genau der letzte Punkt ist der, der Verwirrt. Wenn doch das Phone 7 für Consumer ausgerichtet ist, was spielt dann Sharepoint hier für eine Rolle? hat wirklich jeder auf der Straße der ein Cooles Telephon möchte einen Sharepoint zur Verfügung? Müsste MS dann nicht per Live Dienst dann mindestens einen kostenloses Sharepoint Dienst bereitstellen?

Ich habe ehrlich gesagt, nur ein kleines Problem, wenn ich wenigstens alle Dateien per Live Synchronisieren könnte, noch besser wäre ja die direkte Synchronisation mit dem Rechner (gerne auch per Zune). Aber ich möchte mir jetzt nicht noch einen Sharepoint suchen oder mir die Dokumente per Mail schicken müssen.

Und die PDFs? Die kann ich nur per Mail synchronisieren, obwohl ich doch gerne hin und wieder ein Open Book per Phone 7 lesen würde. Ein mehrere MB großes Dokument per Mail zu versenden und dann auch noch auf das Phone 7 zu laden ist irgendwie doch doof. Oder etwa nicht?

Ich wünsche mir eine einheitliche und direkte Synchronisation mit meinen Rechnern :-)
(Auch schon um wirklich die volle Kontrolle über alle meine Daten zu haben und diese auch alle auf einem Mal sicher zu können)

microSD Karte

Mein HD7 hat eine microSD-Karte integriert, aber nicht austauschbar. Zumindest soll man diese, laut Microsoft, nicht austauschen. Der Grund klingt plausibel. Aber sollten die Geräte nicht zumindest einen weiteren microSD-Karten Slot haben um seine Daten einfacher sichern und Synchronisieren zu können?

WP7 Dev

Das Testen von eigenen Apps mit dem eigenen Gerät wird leider unnötig erschwert. Um die eigenen Apps auf dem Phone zu testen, muss man dieses erst als Developer Phone freischalten. Erst dann kann man die Apps aus dem Visual Studio her aus per USB auf das Gerät deployen und dort testen. Leider wird für Freischaltung ein Account im Marketplace benötigt, für den zum einen knappe 100€ fällig und zum anderen ist die Registrierung auf Grund von Fehlern auf der Website erschwert. Ich habe zumindest bisher keinen Registrierungsversuch bis zum Ende führen können.

Selbstverständlich möchte Microsoft nicht dass man einfach irgendwelche Apps auf irgendwelchen Phones aufspielen kann. Aber auch das ist lösbar:

Zum einen haben wir schon die Einschränkung das deployments aus dem Visual Studio per USB und zum anderen könnte man ja das Phone an die LiveID koppeln. Zum Beispiel können man so regeln das pro LiveID nur ein Phone als Developer Phone registriert werden kann. Desweiteren könne man einschränken, dass die Apps nur mit einer USB-Verbindung laufen.  Das alles würde die Entwicklung und das Testen schon um einiges einfacher machen. Natürlich gibt es den Emulator aber der bietet nicht den vollen Umfang.

Suche

Wieso läuft die Suche im Browser mit Yahoo und ansonsten mit Bing? Kein sehr kritischer und auch alter Punkt, allerdings auf dem ersten Blick verwirrend.

Updates

Auch nur eine Kleinigkeit, zeigt aber dass das System irgenwie noch nicht ganz fertig ist: Schön ist dass man sofort gesagt bekommt, wenn es neue Updates für Apps gibt. Nicht schön ist, das es zwar die Möglichkeit gibt, mehrere Apps auf einem mal Upzudaten, diese Möglichkeit aber nicht funktioniert und man trotzdem alle Apps einzeln aktualisieren muss.

Flugzeugmodus

Nein damit hebt das Phone nicht ab, aber man kann per USB im Internet surfen und sollte theoretisch auch die E-Mails abholen können. Letzteres ist leider bei POP3 Konten nicht möglich. Die Synchronisation bricht mit einer Fehlermeldung ab.

Das stört allerdings nur, wenn man keinen Datentarif nutzt oder diesen schonen möchte, sofern man keine Flatrate nutzt. Besonders, wenn man Dateisynchronisation per E-Mail vornehmen muss ;-)

Und mein Fazit?

Diese Punkte ändern – wie gesagt - nichts an meiner Begeisterung für das Phone und sollen nur die aus meiner Sicht negativen Punkte aufzeigen. Weitere Punkte die im Netz beanstandet werden kann ich nicht nachvollziehen.

Insgesamt bereue ich den Kauf nicht und werde auch weiterhin mit den Developer Tools spielen und demnächst die ersten eigenen Apps veröffentlichen :-)

DotNetKicks-DE Image

Seltsame Namenskonventionen in SharePoint

08.11.2010 09:23:00 | Martin Hey

Sharepoint Server 2010 scheint seine Vergangenheit nicht verstecken zu können. Möchte man ein neues Web erstellen, sind einige Namen nicht möglich.


Man erhält eine Fehlermeldung, wenn man einen der folgenden Namen verwendet CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 oder LPT9. Auch wenn es sich bei SharePoint um eine Web-Anwendung handelt, die ihre Daten in einem SQL-Server verwaltet, scheint es Probleme zu geben, wenn man Namen verwendet, die im Dateisystem reserviert sind.

msdn tv–Nachrichten für Entwickler (Ausgabe 14/2010)

06.11.2010 11:39:31 | Jan Schenk

Get Microsoft Silverlight

 

Neue Folge von "msdn tv" – und die letzte von Moderator Jan Schenk, der nach 25 Sendungen seinen Hut nimmt. Zuvor geht’s allerdings nochmal in die Vollen: zu Gast ist diesmal Benjamin Nitschke, Spiele-Entwickler und Autor eines Standardwerks zur XNA-Programmierung, der sein neuestes Projekt vorstellt, die "Delta Engine". Dahinter steckt ein Multiplattform-Konvertierungstool, das vorhandene Spieleanwendungen auf Knopfdruck für die unterschiedlichsten Game-Plattformen wie Xbox, Windows Phone 7, Android oder an Pods & Pads anderer Hersteller anpasst.
In den Kurznachrichten diesmal viele Infos rund ums neue Windows Phone 7: zu kostenlosen Windows Phone 7 Coding Camps für Studierende, zur finalen Version der ebenfalls kostenfreien Windows Phone 7 Developer Tools und zur laufenden TechTalk Roadshow, bei der MSDN-Experte Tom Wendel über die Smartphone-Plattform informiert.
Dazu gibt’s Tipps für einen gepflegten Fernsehabend anlässlich des PDC Public Viewing am 28. Oktober – entweder zuhause oder bei einer der zahlreichen Microsoft User Groups im Lande und last but not least zwei Web-Empfehlungen für Wissensdurstige: aufs Internet Explorer Developer Center mit allen Entwickler-Infos rund um die IE9 Beta und das neue MSDN Developer Center 'Standards', in dessen Fokus Fragen der Interoperabilität stehen.

New Silverlight Toolkit for Windows Phone 7 available

06.11.2010 10:42:00 | Patric Schouler

The new November 2010 edition of the open source-based Silverlight Toolkit for Windows Mobile developers brings new pre-built controls that they can make your apps easily and refine. The new and exciting elements AutoCompleteBox, ListPicker LongListSelector (this control helps a lot), different page transition effects (page transitions) are now available in the current version. Of course the controls known from the previous version remain included in the scope of the Toolkit (GestureService GestureListener, ContextMenu, DatePicker, TimePicker, ToggleSwitch, WrapPanel).

You can download the toolkit here: Silverlight - Release: Silverlight for Windows Phone Toolkit - Nov 2010

Review der ADC 2010

06.11.2010 09:35:53 | Thorsten Hans

Am 25. und 26. Oktober fand die Advanced Developers Conference 2010 in Bonn statt. Das Contentboard bestehend aus Stefan Lieser, Neno Loje und Bernd Marquardt hatte eine sehr gute und heterogene Agenda für die beiden Konferenztage aufgestellt, die durch einen Workshoptag am 27.Oktober komplettiert wurden.

adc2010 Viele bekannte Speaker aus der deutschsprachigen .NET Community waren auf der ADC 2010 vertreten um Ihr KnowHow an die Teilnehmer weiterzugeben. Für mich startete die ADC 2010 mit einer Session von Golo Roden. Golo zeigte in “Advanced C#, Evolvierbaren Code schreiben” worauf man bei der Entwicklung mit C# achten sollte um die Qualität des eigenen Codes  zu verbessern.

Danach habe ich mir eine Session vom “.NET Doktor” zum Thema “Ein eigener ESB mit WCF 4.0” angeschaut. Meiner Meinung nach wäre der Titel besser “Howto WCF Routing Service” gewesen. Für mich war die Session etwas kontrovers und brachte nicht wirklich den erwarteten Content.

Im Anschluss an den ersten Konferenzteil gab es noch ein gemeinsames Essen mit allen Teilnehmern, welches man nutzen konnte um etwas Networking zu machen und neue Leute kennenzulernen.

Den zweiten Konferenztag habe ich mit der Session “Cloud Storage” von Rainer Stropek gestartet. Rainer hat eindrucksvoll gezeigt welche Möglichkeiten zur Datenhaltung in Azure geboten werden. Anhand eines durchgängigen Beispieles hat Rainer die drei verschiedenen Datenhaltungsmöglichkeiten aufgezeigt. Nach der Mittagspause habe ich mir den Short-Talk von Stefan Lieser “Bubble Sort – TDD am Beispiel” angeschaut um mal wieder die Herangehensweise von anderen Entwicklern an alltägliche Problemstellungen mit TDD zu sehen und diese mit meiner Herangehensweise abzugleichen.

Die letzte Session die ich mir angeschaut habe, hielt wiederum Rainer Stropek. In “Azure in der Praxis” vermittelte Rainer warum Azure interessant, wichtig oder auch innovativ ist. Dank der beiden Sessions von Rainer konnte ich mir ein besseres Bild von Azure machen, was mich langfristig dazu bringt mich mit Azure zu beschäftigen.

Schlussendlich habe ich noch eine Session zu IronRuby gehalten, in der ich die verschiedenen Möglichkeiten von IronRuby aufgezeigt habe. In 90 Minuten ging es von den Ruby und IronRuby Basics über zur CLR Integration, DLR Hosting und dem UnitTesting von C# Code mit IronRuby.

Die Samples meiner Session könnt Ihr euch hier downloaden.

Alles in allem war die ADC2010 eine sehr gute Konferenz, die sich an ein breites Besucherboard gerichtet hat. Ich hoffe dass es allen Teilnehmern Spaß gemacht hat und sie einiges mitnehmen konnten.

IronRoom

PS: Lustig war noch der Wegweiser zum Bügelraum den ich im Hotel entdeckt habe. Wie gemacht für meine Session :)

 

 

Technorati-Tags: ,,,

WP7 @ TechEd 2010 + WP7 Dev Party

05.11.2010 22:34:00 | Peter Nowak

So – nun auch mal wieder etwas zu meiner Person.
Wer nächste Woche auf der TechEd in Berlin ist hat die Möglichkeit am WP7 Booth in der TLC vorbeizuschauen. Offiziell ab Mittwoch werden Patrick Getzmann und ich hier beim Dienst anzufinden sein. Wir freuen uns gerne, wenn Sie einmal vorbeischauen und “Hallo” sagen. Als kleines Schmankerl werden wir auch die letzte Arbeitsversion unseres Buches mitbringen, in welche man eine kleine Sneak-Preview werfen kann.

Am Mittwoch auf jeden Fall werden wir auf der WP7 Entwicklerparty sein, zu welcher es hier alle Infos gibt.

Also dann – man sieht sich in Berlin!



This posting is provided "AS IS" with no warranties, and confers no rights.

Privaten Code testen mit MSTest

05.11.2010 21:25:45 | Thorsten Hans

Gerade wenn man die Codequalität in Brownfieldanwendungen durch UnitTests erhöhen möchte, steht man oftmals vor dem Problem das man privaten Code testen muss. Vor einigen Tagen hat Ralf in seinem Artikel gezeigt wie man dies mit den dynamischen Features von C# machen kann.

Dies kann man mit MSTest allerdings noch einfacher haben.

MSTest stellt mit der Klasse PrivateObject einen Wrapper um die benötigte Reflectionlogik bereit. Die Klasse PrivateObject stellt entsprechende Methode bereit um private Methoden, private Properties usw. aufzurufen.

Wie PrivateObject funktioniert, sieht man am einfachsten am Beispiel einer FizzBuzz Implementierung

public class FizzBuzzService
{
        private const String Fizz = "Fizz";
        private const String Buzz = "Buzz";
        public String StringFor(int number)
        {
            if (IsFizz(number) && IsBuzz(number))
                return Fizz + Buzz;
            if (IsFizz(number))
                return Fizz;
            if (IsBuzz(number))
                return Buzz;
            return number.ToString();
        }
 
        private bool IsFizz(int number)
        {
            return number % 3 == 0;
        }
 
        private bool IsBuzz(int number)
        {
            return number % 5 == 0;
        }
}

Für dieses Beispiel möchte ich einfach die Implementierung der UnitTests für die Methoden IsFizz und IsBuzz, die einzigen privaten Methoden in diesem Kontext, hier aufführen.

[TestClass()] 
public class FizzBuzzTest 
{ 
    privateTestContext testContextInstance; 
        
    public TestContext TestContext 
    { 
        get 
       { 
            return testContextInstance; 
        } 
        set 
       { 
            testContextInstance = value; 
        } 
    } 
 
   [TestMethod()] 
    public void Is_Fizz_Should_Return_True_If_Three_Is_Passed() 
    { 
        bool expected = true; 
        var sut = new PrivateObject(typeof (FizzBuzzService)); 
        var actual = sut.Invoke("IsFizz",new object[]{3}); 
        Assert.AreEqual(expected, actual); 
    } 
 
    [TestMethod] 
    public void Is_Buzz_Should_Return_True_If_Five_Is_Passed() 
    { 
        bool expected = true; 
        var sut = new PrivateObject(typeof (FizzBuzzService)); 
        var actual = sut.Invoke("IsBuzz", new object[] {5}); 
        Assert.AreEqual(expected,actual); 
    } 
} 

Der Einstieg ins Testen der privaten Methoden geschieht jeweils mit der Erstellung des SystemUnderTest oder kurz SUT. Das SUT erstelle ich in meinem Beispiel durch die einfachste Überladung des PrivateObject Konstruktors

var sut = new PrivateObject(typeof (FizzBuzzService)); 

Als Alternative kann man auch eine vorhandene Objektinstanz in den Konstruktor geben um den PrivateObject Wrapper zu verwenden:

FizzBuzzService service = new FizzBuzzService();
var sut = new PrivateObject(service);

Private Methoden des SUTs können sehr einfach durch die Methode Invoke realisiert werden. Enstprechend der Methodensignatur müssen die Parameter der Zielmethode in Form eines Object-Arrays übergeben werden. Der Rückgabewert der Methode ist immer ein Object, daher bietet es sich an, hier auf var zu schwenken und die Typisierung dem Compiler zu überlassen.

var actual = sut.Invoke("IsBuzz", new object[] {5});

durch die Invoke Methode durchgeführt. Gerade im Brownfield Umfeld finde ich dieses Feature sehr sinnvoll und spart einem Entwickler in vielen dieser Fälle sehr viel Zeit.

Beim Ausführen der Tests sieht man, dass alles schön grün ist (falls die Methode macht was sie soll ;D)

TestPrivateCode

Demnach viel Spaß beim Testen des PrivateCodes ;)

Die gesamte API der Klasse PrivateObject kann man der MSDN entnehmen.

Technorati-Tags: ,,

Eigene Templates mit Geburtsdatum für VS schreiben

05.11.2010 00:20:02 | Nico Franze

Ich werde heute mal etwas nostalgisch in der Vergangenheit herumrühren und hier kurz beschreiben, wie man ein ItemTemplate für Visual Studio 2008 baut und individualisiert. Das heißt, wir legen mittels eines Templates zwei cs-Dateien an, eine resx-Datei und wir schreiben in irgendein Kommentar automatisiert das Geburtsdatum des Autors. Ja, ihr habt richtig gelesen. 2008. Asche über mein Haupt. Ich werd das aber demnächst für 2010 nachholen… :-) Aber da 2008 immer noch sehr häufig benutzt wird, dachte ich mir, ich mach das jetzt mal.

ItemTemplates oder auch ProjectTemplates sind die Vorlagen, die man in Visual Studio findet, wenn man ein Neues Projekt oder ein Neues Element hinzufügen möchte. Hier können auch eigene Templates geschrieben werden.

clip_image001

Wenn man ein neues Element hinzufügt so werden mindestens eine Datei, oder auch mehrere Dateien oder Ordner, dem Projekt hinzugefügt. In unserem Beispiel möchten wir eine Kommando-Klasse (z.B. SpeichernKommando) und ein Interface in einem separaten Use-Case-Ordner hinzufügen. Zusätzlich wollen wir noch eine Ressourcendatei anlegen. Danach wollen wir weitere Benutzereingaben entgegennehmen und ebenfalls in den Dateien hinterlegen. Hier kurz noch mal meine beiden cs-Dateien, die als Vorlage für ein Kommando dienen sollen.

SpeichernKommando.cs

   1: namespace WizardBeispiel
   2: {
   3:     public class SpeichernKommando : ISpeichernKommando
   4:     {
   5:         public SpeichernKommando()
   6:         {
   7:  
   8:         }
   9:  
  10:         public bool IsAvailable()
  11:         {
  12:             return true;
  13:         }
  14:  
  15:         public void Execute()
  16:         {
  17:             throw new NotImplementedException();
  18:         }
  19:     }
  20: }

 

ISpeichernKommando.cs

   1: namespace WizardBeispiel
   2: {
   3:     public interface ISpeichernKommando
   4:     {
   5:         bool IsAvailable();
   6:         void Execute();
   7:     }
   8: }

Zuerst erstellen wir uns eine Grundlage. Klick auf Datei –> Vorlage Exportieren

image

Dann befolgt ihr den Wizard. Wählt Symbolvorlage (für deutsche VS, englisch Item Template)

clip_image001[5]

Wählt die zu exportierende Datei aus. Obwohl hier Checkboxen sind und man ein additives Verhalten vermuten könnte, ist dem leider nicht so. Trotzdem können wir später mehr als nur eine Datei hinzufügen. Jetzt wählen wir einfach erstmal nur das Kommando.

clip_image001[7]

Wählt anschließend noch einige Assemblies, die ihr gern immer mit dabei haben möchtet, wenn ihr das Template auswählt. Auch hier könnt ihr später eigene Assemblies angeben.

clip_image001[9]

Im letzten Schritt könnt ihr ein Symbol wählen, eine Beschreibung anpassen und den Exportordner einsehen. Die Daten für das Template selbst können später alle noch verändert werden.

clip_image001[11]

Nachdem dieser Schritt ausgeführt wurde, entsteht eine zip-Datei in Eigene Dateien\Visual Studio 2008\My Exported Templates\. In meinem Beispiel beinhaltet diese 3 Dateien.

  • __TemplateIcon.ico
  • MyTemplate.vstemplate
  • SpeichernKommando.cs

Die Bilddatei zeigt das Bildchen an in Visual Studio, die cs-Datei ist die Datei, die später wirklich importiert werden soll und in der .vstemplate-Datei steht genau drin, was wohin importiert werden soll. Im Übrigen geht das hier natürlich mit VB genauso gut wie mit C#. Da es sich ja nun hier nicht mehr um das SpeichernKommando direkt handelt sondern um eine Vorlage für alle möglichen Kommandos, benennen wir die Datei einfach mal um in „Kommando.cs“. Der Name der Datei muss auch in der vsTemplate-Datei umbenannt werden. Die vsTemplate-Datei sieht nun wie folgt aus:

   1: <VSTemplate Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
   2:   <TemplateData>
   3:     <DefaultName>WizardBeispiel.cs</DefaultName>
   4:     <Name>WizardBeispiel</Name>
   5:     <Description>Beschreibung zu meinem Template</Description>
   6:     <ProjectType>CSharp</ProjectType>
   7:     <SortOrder>10</SortOrder>
   8:     <Icon>__TemplateIcon.ico</Icon>
   9:   </TemplateData>
  10:   <TemplateContent>
  11:     <References>
  12:       <Reference>
  13:         <Assembly>System</Assembly>
  14:       </Reference>
  15:     </References>
  16:     <ProjectItem SubType="Code" TargetFileName="$fileinputname$.cs" ReplaceParameters="true">Kommando.cs</ProjectItem>
  17:   </TemplateContent>
  18: </VSTemplate>

Wenn man sich hier unsere cs-Datei noch einmal anschaut, dann wird man feststellen, dass alle „personalisierten“ Informationen mit Platzhaltern versehen wurden. Der Namespace, der Name sowie der Konstruktor der Klasse beinhalten nun kryptische Platzhalter wie $rootnamespace$ oder $safeitemname$. Somit ist sichergestellt, dass später die Klasse im richtigen Namespace liegt, den richtigen Namen hat und auch alles wieder sofort kompilierbar ist. Der Parameter „" ReplaceParameters="true"” sorgt dafür, dass diese Platzhalter auch wirklich ersetzt werden.

Jetzt fehlen uns ja noch weitere Dateien. Wir kopieren unsere Interface-Datei auch noch in den Ordner, wo wir gerade unsere vsTemplate-Datei entpackt haben. Außerdem kopieren wir noch eine resx-Datei hinein. Wenn ihr keine habt, erzeugt in Visual Studio irgendwo schnell eine Neue und fügt diese ein. Die .Designer.cs-Datei brauchen wir hier nicht, die erzeugen wir nachher neu. Meine wird Resource.resx heißen.

Wir haben ja im Wizard gesagt, das Template soll gleich wieder nach Visual Studio importiert werden. „Importiert“ heißt kopiert, und zwar nach C:\Dokumente und Einstellungen\nfranze\Eigene Dateien\Visual Studio 2008\Templates\ItemTemplates. Befindet sich diese zip-Datei in diesem Ordner, so ist die Vorlage schon hinzugefügt, wenn man ein neues Element dem Projekt hinzufügen möchte.

clip_image001[13]

Auch das Icon findet sich wieder. Wenn wir nun dieses WizardBeispiel-Element einmal testweise hinzufügen zum Projekt, so erscheint unsere Datei, nur mit dem soeben neu eingegebenen Namen. Sollte die System-Assembly noch nicht als Verweis vorliegen, so würde sie mit hinzugefügt werden. So wie es in unserem Template angegeben ist.

Aber nun weiter in unserer vstemplate-Datei. Wir fügen nun zwei neue Zeilen ein und ändern eine vorhandene noch etwas ab, damit die Dateien in unserem UC-Ordner landen. Mit den beiden neuen Dateien möchten wir zusätzlich zum Kommando noch unsere Ressourcendatei sowie unser Interface hinzufügen. Unsere Datei sieht nun wie folgt aus.

   1: <TemplateContent>
   2:   <References>
   3:     <Reference>
   4:       <Assembly>System</Assembly>
   5:     </Reference>
   6:   </References>
   7:   <ProjectItem SubType="Code" TargetFileName="UC$fileinputname$\$fileinputname$.cs" OpenInEditor="true" ReplaceParameters="true">Kommando.cs</ProjectItem>
   8:   <ProjectItem SubType="Code" TargetFileName="UC$fileinputname$\I$fileinputname$.cs" ReplaceParameters="true">IKommando.cs</ProjectItem>
   9:   <ProjectItem SubType="Code" CustomTool="ResXFileCodeGenerator" TargetFileName="UC$fileinputname$\$fileinputname$Ressource.resx" ReplaceParameters="true">Resource.resx</ProjectItem>
  10: </TemplateContent>

Diese Zeilen besagen nun folgendes. Erstens werden alle drei Dateien in einem neuen Unterordner erstellt, der mit UC anfängt und weiterhin den Namen der Datei beinhaltet (ohne Endung). Wenn wir also ein Element hinzufügen und es „SpeichernKommando.cs“ nennen, so entsteht automatisch erstmal ein Ordner namens „UCSpeichernKommando“. Dieser Ordner enthält drei Dateien. Eine  SpeichernKommando.cs, eine ISpeichernKommando.cs sowie eine SpeichernKommandoRessource.resx.

Das OpenInEditor gibt an, welche Datei danach im Editor geöffnet werden soll. Ich finde das Kommando besser als z.B. das Interface oder die Ressourcendatei. Hier kann natürlich jeder machen was er will. Im Parameter Subtype steht drin, welcher Editor zum Öffnen benutzt werden soll.

Bei der Ressourcendatei ist es wichtig noch das CustomTool anzugeben. Dieses erzeugt automatisch die gewünschte .Designer.cs und ordnet sie der Ressourcendatei unter. Bei Ressourcendateien heißt das CustomTool, welches die Ressourcen.Designer.cs-Datei generiert „ResXFileCodeGenerator“. Solltet ihr andere Anwendungsfälle haben, so erzeugt euch einfach einmal eine entsprechende Datei ganz regulär in Visual studio und schaut euch die Dateieigenschaften an. Dort ist das CustomTool eingetragen, welches ihr hier in der Vorlage benutzen könnt.

clip_image001[15]

So, mein Ordner besteht nun aus folgenden Dateien.

  • __TemplateIcon.ico
  • MyTemplate.vstemplate
  • Kommando.cs
  • IKommando.cs
  • Ressource.resx

Bevor wir aber weitermachen müssen wir noch unser Interface anpassen. Aktuell sieht es so aus:

   1: namespace WizardBeispiel
   2: {
   3:     public interface ISpeichernKommando
   4:     {
   5:         bool IsAvailable();
   6:         void Execute();
   7:     }
   8: }

Hier ist noch nicht ein Platzhalter drin. Wir ändern es in folgendes ab

   1: namespace $rootnamespace$.UC$fileinputname$
   2: {
   3:     public interface $safeitemname$
   4:     {
   5:         bool IsAvailable();
   6:         void Execute();
   7:     }
   8: }

Nun befindet sich auch das Interface im richtigen Namespace (auch im Unterordner) und hat auch den richtigen Namen. Der gleiche Namespace sollte auch in dem Kommando selbst gewählt werden. Hier braucht man kein großes I vor den Platzhalter machen, das macht VS anscheinend automatisch.

In unserer Kommando.cs sollte das Interface aber auch benutzt werden. (Man beachte hier aber das I)

    public class $safeitemname$ : I$safeitemname$

Diese Dateien zippen wir nun und kopieren sie nach „C:\Dokumente und Einstellungen\nfranze\Eigene Dateien\Visual Studio 2008\Templates\ItemTemplates“. Schon können wir in Visual Studio „Neues Element“ hinzufügen und unsere Vorlage auswählen. Probieren wir das mal.

clip_image001[17]

Et voilà

clip_image001[19]

Und es kann sofort wieder kompiliert werden… Doll. Jetzt kommt der eigentliche Spaß. Ich möchte dass im Kommando automatisch das Geburtsdatum des Autors steht. Da Visual Studio das nicht erraten kann, muss es während des Hinzufügens irgendwo angegeben werden. Wir definieren in unserem Kommando die Stelle, wo wir das gern hinhaben möchten. Bei mir sieht das nun so aus, dass ich es über meiner Klasse eingefügt hab:

// $username$ hat Geburtstag am $geburtsdatum$

public class $safeitemname$ : I$safeitemname$

{

Den Platzhalter $username$ gibt es schon, den Platzhalter $geburtsdatum$ werden wir nachher selbst ersetzen. Im Übrigen gibt es folgende vordefinierte Platzhalter (Quelle: http://msdn.microsoft.com/en-us/magazine/cc188697.aspx):

Parameter

Beschreibung

itemname

The user-provided name from the dialog. This value is often used for naming classes and files.

safeitemname

The same as itemname but with all unsafe characters removed.

safeitemrootname

The name of the root item, which can be used for multi-item templates. For example, if you have partial classes, or a code-beside or code-behind scenario, you can use this item in the secondary files when you need the safeitemname of the main item being created.

projectname

The user-provided name of the project for a project template.

safeprojectname

The user-provided name of the project for a project template with all unsafe characters removed.

rootnamespace

The root namespace of the project for an item template, which can be used to replace the namespace in a project item source file.

guid[1-10]

A GUID that can be used as a unique identifier for uses such as project GUID in the project file. You can specify up to 10 different GUID parameters using the syntax: guidx, where x is a number between 1 and 10.

time

The current time in the format DD/MM/YYYY HH:MM:SS.

year

The current four-digit year.

username

The Windows username of the logged-in user.

userdomain

The Windows domain of the logged-in user.

machinename

The name of the machine where the template is being used.

clrversion

The version of the common language runtime being used.

registered-organization

The registered organization of the user based on the system settings.

wizarddata

A single string that can be any XML or string data included in the WizardData element in a template metadata file.

Zuerst erzeugen wir ein neues Visual Studio Projekt vom Typ Klassenbibliothek. Als Verweise fügen wir folgende ein:

  • EnvDTE.dll
  • Microsoft.VisualStudio.TemplateWizardInterface.dll

Die vorgefertigte Klasse Class1 nutzen wir gleich. Wir nennen sie „Wizard“ und implementieren das Interface „IWizard“ im namespace Microsoft.VisualStudio.TemplateWizard.

Damit diese Assembly benutzt werden kann, muss sie in den GAC. Damit sie da rein kann, muss sie signiert werden. Das geht in den Projekteigenschaften -> Tab „Signierung“. Dort Checkbox „Assembly signieren“ anhaken und in der Combobox bei Schlüsseldatei „Neu“ auswählen. In dem Fenster was erscheint, gebt ihr irgendeinen Namen für die Daten an z.B. „key“ und ein passwort braucht ihr hier nicht. Das sieht nun so aus

clip_image001[21]

Als nächstes fügen wir einen winzigen Dialog (Windows Form) hinzu. Ich nenne den Dialog „DataDialog“. Auf meinem Dialog platziere ich einfach nur einen DateTimePicker. So sieht das nun bei mir aus. Wehe hier schreibt irgendeiner ins Kommentar, dass der Dialog scheiße aussieht, oder er verzweifelt den „OK“-Button sucht… Das Ausschmücken des Dialoges überlasse ich der Phantasie des Lesers.

clip_image001[23]

Ich mache nun einfach auf die Schnelle eine Property in den Dialog, der den Wert des Datetimepickers zurückgibt. Später muss der Dialog einfach nur mittels „x“ oben rechts geschlossen werden.

   1: public DateTime Datum
   2: {
   3:     get { return dateTimePicker1.Value; }
   4:     set { dateTimePicker1.Value = value; }
   5: }

In dem Wizard entferne ich überall die throw NotImplementedExceptions und in der Methode RunStarted werden wir den Dialog anzeigen und selbst einen dieser Platzhalter ersetzen. Die Parameter der Methode „RunStarted“ sind automationObject, welches das DTE-Objekt ist, falls jemand hier noch mit dem CodeDOM oder anderen Visual Studio Features weiterarbeiten möchte. Weiterhin gibt es ein Dictionary. Dieses beinhaltet alle Platzhalter und ihre Ersetzungen. Hier brauchen wir unser Geburtsdatum nur noch hinzufügen. Mein code sieht wie folgt aus:

   1: public void BeforeOpeningFile(EnvDTE.ProjectItem projectItem)
   2: {
   3: }
   4:  
   5: public void ProjectFinishedGenerating(EnvDTE.Project project)
   6: {
   7: }
   8:  
   9: public void ProjectItemFinishedGenerating(EnvDTE.ProjectItem projectItem)
  10: {
  11: }
  12:  
  13: public void RunFinished()
  14: {
  15: }
  16:  
  17: public void RunStarted(object automationObject, Dictionary<string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams)
  18: {
  19:     DataDialog dialog = new DataDialog();
  20:     dialog.ShowDialog();
  21:  
  22:     replacementsDictionary.Add("$geburtsdatum$", dialog.Datum.ToShortDateString());
  23: }
  24:  
  25: public bool ShouldAddProjectItem(string filePath)
  26: {
  27:     return true;
  28: }

Ok, so, nun ham wa ja schon viel geschafft. Wir kompilieren alles und werden nun unsere Assembly in den GAC einfügen. Das geht wie folgt. Im Startmenu „Microsoft Visual Studio 2008“->“Visual Studio Tools“->“Visual Studio 2008-Eingabeaufforderung“. Wichtig ist, IM ADMINISTRATORMODUS STARTEN (rechte Maustaste als Admin ausführen). Folgende Zeile eingeben:

Gacutil /i „C:\Dokumente und Einstellungen\nfranze\Eigene Dateien\Visual Studio 2008\Projects\ItemWizard\ItemWizard\ItemWizard\bin\Debug\ItemWizard.dll“

Wobei ihr natürlich hoffentlich euren Pfad nehmt… ;-)

Als letzte kleine Änderung müssen wir unseren Wizard nun auch noch bekannt machen in unserem Template. Dafür bearbeiten wir die vstemplate-Datei wie folgt.

   1: <VSTemplate Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
   2:   <TemplateData>
   3:       ...
   4:   </TemplateData>
   5:   <TemplateContent>
   6:       ...
   7:   </TemplateContent>
   8:   <WizardExtension>
   9:      <Assembly>ItemWizard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=859062e4da6d855b</Assembly>
  10:      <FullClassName>ItemWizard.Wizard</FullClassName>
  11:   </WizardExtension>
  12: </VSTemplate>

So, nun haben wirs. Nehmt euch wieder euren Ordner mit den ganzen Dateien drin, macht wieder eine zip draus und kopiert die Datei ins ItemTemplate-Verzeichnis. Und dann probiert mal, ob das so klappt.

Solltet ihr euch manchmal wundern, dass eure Änderungen im Wizard nicht übernommen werden, wenn ihr neu kompiliert und die Datei neu dem GAC zufügt, so startet mal Visual Studio neu.

Weiterhin habe ich einige Dokumentationen gesehen, in denen bei <WizardExtension><Assembly> immer nur der Assemblyname angegeben wurde, ohne Version und PublicKeyToken. Dies kann manchmal folgenden Fehler verursachen:

„Fehler: Diese Vorlage hat versucht, die nicht vertrauenswürdige Komponente „ItemWizard“ hinzuzufügen. Weitere Informationen zu diesem Problem und zum Aktivieren dieser Vorlage finden Sie in der Dokumentation über das Anpassen von Projektvorlagen.“

clip_image001[25]

So, und nun, liebe Entwicklungsleiter. Schreibt Vorlagen für eure Mitarbeiter und lasset sie sie benutzen. Jeder hat die gleichen Startvoraussetzungen, alle arbeiten mit gleichen Schemen, dies könnte ein großer Qualitätssprung in eurem Quellcode sein.

Lazy loading von Abhängigkeiten mit StructureMap

04.11.2010 21:00:00 | Jan Christian Selke

Das Offensichtliche

Vor kurzem beschäftigte mich die Überlegung: Wie kann ich mit StructureMap meine Abhängigkeiten quasi just-in-time holen? Es gibt ja durchaus Klassen, deren Abhängigkeiten nicht alle sofort und vor allem gemeinsam genutzt werden.

Als ob das nicht genug wäre, habe ich kurz darauf einen Beitrag in der Google-Group zu genau dieser Frage gelesen. Grund genug für mich, das nochmal genauer anzusehen und kompakt für mich zusammen zu fassen.

Wenn man mit StructureMap Lazy Loading realisieren möchte, dann kann ab Version 2.6 anstelle des abhängigen Typs eine Func<DependentType> als Parameter genutzt werden. Diese werden dann erst bei dem tatsächlichen Zugriff evaluiert. Beispielhaft könnte eine Klasse dann folgendermaßen aussehen.

    public class MyType : IMyType
{
private readonly Func<IDependency1> _dependency1;
private readonly Func<IDependency2> _dependency2;

public MyType(Func<IDependency1> dependency1, Func<IDependency2> dependency2)
{
_dependency1 = dependency1;
_dependency2 = dependency2;
}

public void DoSomething()
{
var dependency1 = _dependency1();
dependency1.DoSomething();
}

public void DoSomethingElse()
{
var dependency2 = _dependency2();
dependency2.DoSomethingElse();
}
}

Eigentlich eine recht einfache Methode, eine einfache Variante des Lazy Loadings zu implementieren. Aber was mir bisher etwas zu kurz kam; funktioniert das wirklich so einfach? Muss ich etwas bei der Registrierung der Typen beachten/anders machen?
Kurz: Nein! Alles bleibt beim alt-bekannten :-).
Für dieses recht einfache Beispiel reicht bereits eine minimale Registrierung.
    ObjectFactory.Initialize(x => x.Scan(scan =>
{
scan.TheCallingAssembly();
scan.WithDefaultConventions();
}));

myType = ObjectFactory.GetInstance<IMyType>();

Die Magie

Für alle, die etwas mehr Hintergrundinformation haben möchten - Die Magie dahinter verbirgt sich in der Anwendung des Typs  LazyInstance<T> :
    public class LazyInstance<T> : Instance
{
protected override string getDescription()
{
return "Lazy construction of " + typeof (T).FullName;
}

protected override object build(Type pluginType, BuildSession session)
{
var container = session.GetInstance<IContainer>();
Func<T> func = () => container.GetInstance<T>();

return func;
}
}

Die Func<> Konstruktor Argumente werden von StructureMap als LazyInstance<> registriert. Lediglich die Typen müssen registriert sein (sei es wie oben durch DefaultConventions oder durch manuelle Registrierung), den Rest macht StructureMap.
Der Func<T> wird zugewiesen

    () => container.GetInstance<T>()

Schon werden Abhängigkeiten bei Bedarf nachgeladen.
Registriert wird der Lazy-Typ übrigens im BuildUp des Containers…
    var funcInstance = new FactoryTemplate(typeof (LazyInstance<>));
_pluginGraph.FindFamily(typeof(Func<>)).AddInstance(funcInstance);
_pluginGraph.ProfileManager.SetDefault(typeof(Func<>), funcInstance);

Das FactoryTemplate hat wiederum eine Methode zum Schließen der offenen generischen Funcs… ;-)

Windows Phone 7 - Mehr Zeit fuer das Leben, den Sohn oder die Freundin (Videos)

04.11.2010 19:12:01 | Kay Giza

Windows Phone 7: Ich habe zwei lustige Videos gefunden, die ich den Lesern von Giza-Blog.de nicht vorenthalten möchte. Weiterhin noch ein zwei Link-Tipps zu aktuellen WP7-App-Contests (wo man etwas schickes gewinenn kann)... [... mehr Infos und die Videos in diesem Blogeintrag auf Giza-Blog.de]

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

A Guide to Visual Studio Application Lifecycle Management @TechEd 2010

04.11.2010 15:00:46 | Christian Binder

This year I am covering the Development Practices Track (DPR) and the Visual Studio ALM focused sessions in the Development Track @ TechEd as Program Manager. Like last year I would like to give you quick guide which might help you choosing the right content from these tracks in the context of ALM.

Agile Development?


Stephen Forte will discuss in DPR301 - Scrum, but  how to get the best out of Scrum and why you might want to customize the process to your needs. Another topic is Agile Estimation as is not easy especially if you do it the first time. Stephen Forte will give you some good guidance to avoid common mistakes and frustration. If you plan to move to Agile or your Estimation process is not working for you, don’t miss  DPR201 - Agile Estimation.
You want to know how Agile Development works with TFS 2010? Then join Peter Provost and Aaron Bjork in DEV310 - Agile Development with Visual Studio 2010 and TFS 2010.  Peter and Aaron are building the next Version of the Agile Experience in Visual Studio XX, you can’t get closer.
And our famous Interactive session DPR201-IS - An Agile Talk on Agility  will explain Agile Development in a very special way and is always fun.

In the Architecture Track you might want to check out the following Sessions related to Agile:
ARC206 Scrum for Managers 
ARC208 Architecture in Agile Projects – How to do it  right

Testing Testing Testing ….

Brian Keller is there and has designed a couple of sessions to give you a solid overview of the Visual Studio 2010 Test capabilities. From Test Manager 2010, Coded UI Test to Lab Management 2010 which has been finally released in Summer 2010. For best results I recommend consuming the sessions in the following order. The title might help you :-)

DEV202 - Software Testing with Visual Studio 2010: Part 1 of 2
DEV303 - Software Testing with Visual Studio 2010: Part 2 of 2

Additionally I have asked Brian to run DPR303 - Applied Software Testing with Visual Studio 2010 covering practical aspects like which Tool is best for which scenario? You you will get some good guidance how to use the Tools in the right way to serve you best. Note: If you are not familiar with the new Test tools don’t miss Brian’s first sessions. And finally take all your questions and join Brian’s interactive Session DPR202-IS - Software Testing with Visual Studio 2010: Making it real for YOU

Don’t forget the Foundation!

Sure. Last Year I have got the feedback to have more sessions in this area and here you go. Join Brian Randell in DEV207 - The Busy Developer’s Guide to Team Foundation Server 2010 Version Control to understand the Basic concepts of TFS 2010 Version Control.  In DPR304 - Understanding Branching and Merging in Team Foundation Server 2010 Brian will build up on his talk DEV207and will dive into more advanced topics like Branching and Merging with TFS 2010. I case you are new to TFS 2010 Version Control don’t miss Brian’s first session! For those of you who have to deal with Shared Code might want to skip Lunchtime and join DPR303-LNC - Using Extensibility for Dependency Management with TFS 2010. Sven Hubert will demonstrate a  scenario which deals with code Dependencies and will use Visual Studio 2010 DGML capabilities to support visualization. Please note that a Lunchtime Session (LNC) is just 45min, so the session requires a good understanding of TFS 2010 Version Control.

Do You think Brian Randell is not capable installing TFS 2010 on a WIn7 Client in 30min or Less? The Race is on! Check it out at Lunchtime DPR201-LNC - TFS 2010: Install and Configure in 30 Minutes or Less and have Fun.

If you are interested in the new Project Server and TFS 2010 integration don’t miss:
OFS201 Application Lifecycle Management - Microsoft Project 2010 and Team Foundation Server 2010, Better Together

Native C++ ALM

When ever I am talking about Visual Studio 2010 ALM I got  frequently the question. Does this work for native C++ to? That’s why have asked Ale Contenti, Program Manager in the C++ Team, to show in DPR202-LNC - ALM for C++ in Visual Studio 2010 to illustrate all the value that is available "out-of-the-box" for managing large native code bases.

Best Practices?

You are searching for best practices how to Run a TFS 2010 environment?  If so Neno Loje has in DEV209 - Successfully Administering and Running Team Foundation Server 2010 a lot of good tips and practices to share. Neno is now for Years in the TFS consulting business and has seen a lot of way’s how it can be done wrong.  As TFS gets really useful and unfolds its effectiveness by being customized and tweaked to the needs of your organization Neno will cover in DPR203 - Best Practices Using Visual Studio Team Foundation Server 2010 some good practices for doing so. To know what is not working well before you will find it out yourself can be really helpful :-)  

Dogfooding?? TFS is build on TFS and we are deploying Pre-releases in our own Development to see if it works on a huge scale Team.  In other words “We eat our own dogfood”. Aaron Bjork, Senior Program Manager on TFS will cover in DPR202 - Visual Studio ALM: Lessons Learned through Dogfooding the lessons we learned from this process and will give you some insights how Development at Microsoft is done.

Architecture not just for Architects

Shortly after the release of Visual Studio 2010 Ultimate we published our first Feature Pack, which directly targeted the Architecture Features. Peter Provost will cover in two session the main areas. DEV204 - Architecture Discovery with Visual Studio 2010 Ultimate is focusing the Architecture Discovery and visualization. These Tools are not only for Architects! any Developer will love them when it comes to Refactoring, Impact analyses or just understanding the codebase especially if some else has written the code. DEV210 - Visualization and Modeling in Visual Studio 2010 Ultimate cover the Modeling capabilities like DSL’s and UML with the a strong focus to the Extensibility of the framework.

For sure this is just a small scoped selection.

Enjoy the Event!

Below find the schedule of the above mentioned sessions. Please be aware that there could be changes, so make sure to check for updates at the Event! 

Tuesday, November 09

9:00 AM-10:00 AM

10:30 AM-11:30 AM

DPR201-IS - An Agile Talk on Agility (Repeats on Wednesday)

12:00 PM-1:00 PM

DPR203 - Best Practices Using Visual Studio Team Foundation Server 2010

1:20 PM-2:05 PM

DPR201-LNC - TFS 2010: Install and Configure in 30 Minutes or Less

2:30 PM-3:30 PM

DPR301 - Scrum, but
DEV202 - Software Testing with Visual Studio 2010: Part 1 of 2

Wednesday, November 10

9:00 AM-10:00 AM

DEV204 - Architecture Discovery with Visual Studio 2010 Ultimate

10:30 AM-11:30 AM

12:00 PM-1:00 PM

DEV207 - The Busy Developer’s Guide to Team Foundation Server 2010 Version Control

1:20 PM-2:05 PM

DPR202-LNC - ALM for C++ in Visual Studio 2010

2:30 PM-3:30 PM

DPR201-IS (R) - An Agile Talk on Agility

DEV303 - Software Testing with Visual Studio 2010: Part 2 of 2

4:00 PM-5:00 PM

DPR304 - Understanding Branching and Merging in Team Foundation Server 2010

5:30 PM-6:30 PM

DPR202-IS - Software Testing with Visual Studio 2010: Making it real for YOU (Repeats on Thursday)

Thursday, November 11

9:00 AM-10:00 AM

DPR303 - Applied Software Testing with Visual Studio 2010

10:30 AM-11:30 AM

12:00 PM-1:00 PM

DPR201 - Agile Estimation

1:20 PM-2:05 PM

DPR303-LNC - Using Extensibility for Dependency Management with TFS 2010

2:30 PM-3:30 PM

DEV310 - Agile Development with Visual Studio 2010 and TFS 2010

4:30 PM-5:30 PM

DPR202-IS (R) - Software Testing with Visual Studio 2010: Making it real for YOU

DEV209 - Successfully Administering and Running Team Foundation Server 2010

6:00 PM-7:00 PM

DPR201 (R) - Agile Estimation

Friday, November 12

9:00 AM-10:00 AM

DEV210 - Visualization and Modeling in Visual Studio 2010 Ultimate

10:30 AM-11:30 AM

12:30 PM-1:30 PM

DPR202 - Visual Studio ALM: Lessons Learned through Dogfooding

Microsoft: Silverlight und HTML5 - wie schauts aus mit der Strategie

04.11.2010 08:31:05 | Kay Giza

Silverlight und HTML5, wie ist die Strategie von Microsoft? Ist Microsoft Silverlight nach wie vor eine große strategische Bedeutung für Microsoft? Wird weiterhin an der nächsten Version gearbeitet? Wird Silverlight weiterhin plattform- und browserübergreifend angeboten werden und bleibt Silverlight die zentrale Entwicklungsumgebung für die Windows Phone-Plattform? Auf alle diese Frage gehe ich in diesem Blogposting auf Giza-Blog.de ein und gebe weiterführende und verweisende Links mit an... [... 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-2010 Kay Giza. All rights reserved. Legal
Subscribe

Silverlight im Firefox debuggen

03.11.2010 22:20:00 | Martin Hey

Ok, ich gebe es zu: Was meinen Browser angeht, verwende ich den Firefox als Standard-Browser und nicht den Internet-Explorer. Das funktioniert auch ganz gut. Problematisch wird es dann, wenn man mit Microsoft-Technologien entwickelt. Möchte man eine Silverlight-Anwendung debuggen, hält der Debugger bei Breakpoints nicht an - mit der bekannten Meldung "The breakpoint will not currently be hit. No symbols have been loaded for this document."

Funktioniert es, wenn der IE als Standard-Browser eingestellt ist, so liegt es eindeutig nicht an den Projekteinstellungen (denn auch hier gibt es Fallstricke), sondern am Browser. Dank der Tipps von Lars und Tim hab ich jetzt auch die Lösung und muss nicht mehr jedes Mal die Einstellung für den Standard-Browser ändern.

Der Tipp ist vielleicht nicht neu, aber weil ich mit Sicherheit beim nächsten Rechner wieder überlege, was man machen muss damit es geht, hier der Tipp als Gedankenstütze für mich und alle die das gleiche Problem haben.

Folgende Schritte führen zum Ziel:
  • in der Adressleiste about:config eingeben
  • die Warnung akzeptieren (sind wir nicht immer vorsichtig?)
  • den Eintrag dom.ipc.plugins.enabled.npctrl.dll suchen und doppelklicken, so dass der Wert von true auf false geändert wird
  • den Browser neu starten
Startet man nun den Debugger wieder, so hält dieser auch an den Breakpoints an.

Silverlight weiter voll auf Kurs

03.11.2010 15:57:23 | Oliver Scheer

Einige Irritationen haben in den vergangenen Tagen die Auslegungen zu einem Interview verursacht, das Microsofts Präsident der Sparte Server & Tools, Bob Muglia, während der PDC10 der Szenekennerin Mary Jo Foley gegeben hat. Fazit war daraufhin, dass die Bedeutsamkeit von HTML5 für Microsoft gleichzeitig ein Nischendasein für Microsoft Silverlight einleiten müsse. Dies entspricht nicht den Tatsachen. Wir vom MSDN Online-Team möchten daher gerne auf folgende Fakten aufmerksam machen, um etwaige Missverständnisse auszuräumen:
Bob Muglia hat persönlich in einem Artikel im offiziellen Silverlight-Blog die betroffenen Aussagen aufgegriffen und ihre Inhalte klargestellt. Die zentrale Botschaft: Silverlight ist weiterhin voll auf Kurs, bleibt ein bedeutender Pfeiler in Microsofts Strategie und bietet auch auf Dauer eine der besten, zuverlässigsten und zukunftsfähigsten Plattformen für Entwickler.

Mehr Informationen dazu auf MSDN

Neue Folge von Silverlight-Expertise: “Datenfehler unter Expression Blend vermeiden” und “Silverlight Unit Tests unter Continuous Integration Systeme”

03.11.2010 13:07:12 | Gregor Biswanger

dotnet-magazin-logo

In der aktuellen Ausgabe vom dot.net magazin gibt es eine neue Folge von meiner Silverlight-Kolumne “Silverlight-Expertise”:  

Silverlight-Expertise - Die Crème de la Crème des Monats
Die Serie „Silverlight Expertise“ des dot.NET Magazins präsentiert monatlich zwei leckere Top-How-Tos zum Thema Silverlight von Gregor Biswanger (www.dotnet-blog.net), sodass Einsteiger und fortgeschrittene Silverlight-Experten durch geballtes Wissen gesättigt werden. Heute stehen auf der Menükarte „Datenfehler unter Expression Blend vermeiden“ und „Silverlight Unit Tests unter Continuous Integration Systeme“. Viel Spaß und einen guten Appetit.

 

dotnetmagazin-12-2010

 

Zu lesen sind die How-To´s beim dot.net magazin, Ausgabe 12/2010

Windows Phone 7 - meine ersten Eindrücke

03.11.2010 08:05:00 | Martin Hey

Seit gestern kann ich mich nun auch in die Reihe derer einreihen, die einem Windows Phone 7 ein Zuhause bieten. Die Gründe sind recht vielschichtig: Bisher war ich Nutzer eines Mobiltelefons, das auf Windows Mobile 6.5 basierte, das nur mit Hilfe von HTC Sense bedienbar wurde. Nun scheint Microsoft mit diesem Betriebssystem endlich den Sprung in Richtung Smartphones geschafft zu haben. Andererseits finde ich es faszinierend, auch mit meiner bevorzugten Programmiersprache Anwendungen schreiben zu können, die Spaß machen - und seit Mai 2010 bin ich mit dabei, wenn es um WP7-App-Entwicklung geht.

Nun aber genug der Lobhudeleien. Wo es Sonnenseiten gibt, gibt es auch Schattenseiten.

Geplanter Start von Windows Phone 7 in Deutschland sollte der 21.10. sein und sehr erwartungsvoll wartete ich wie viele in der Community auf den Startschuss - aber nichts passierte. Nun kann man sich mit Wortspielereien aus der Affaire ziehen, aber in meinen Augen ist der Start - aus Entwicklersicht - in die Hose gegangen. Aus Anwendersicht mag das anders sein: Seit Beginn dieser Woche laufen die Windows Phone 7 Spots in den Medien und auch die Anbieter haben neben den Plakaten für das jetzt frei verfügbare iPhone 4 auch die Plakete für jegliche Art von Windows Phone 7 Geräten aufgehängt.

Aber so richtig "verfügbar" ist es trotzdem nicht. Amazon hat die Geräte so ziemlich als erster im Shop gehabt - allerdings kann man es hier nach wie vor nur reservieren, nicht aber bestellen. O2 bietet mir die Bestellung an - jedoch werde ich (wie auch schon bei der Bestellung des HD2 vor knapp einem Jahr) gefühlt hingehalten. Mit Aussagen wie "Es ist schon losgeschickt, aber wir wissen nicht mit welchem Paketdienst.", "Es ist schon losgeschickt mit DHL, aber eine Sendungsverfolgungsnummer haben wir nicht." und quasi täglichen Versprechen "...spätestens übermorgen ist es bei Ihnen..." wurde ich knapp 2 Wochen hingehalten. In den O2 Shops sieht es auch nicht anders aus: Meinen Erfahrungen zufolge dürfen die Händler nur jeweils ein Gerät bestellen und erst sobald dieses verkauft ist, ein neues nachbestellen - heißt es gibt de facto nur alle 2 Tage ein Gerät zu verkaufen. Service sieht anders aus.

Inzwischen ist trotz aller Widrigkeiten ein HTC HD7 meins. Alles in allem macht es einen guten Eindruck. Einzig: Am Gerät selbst finde ich die Abdeckung für das Akku-Fach etwas billig. Das kann HTC besser und das haben sie auch beim HD2 gezeigt. Das Betriebssystem und auch die Apps laufen flüssig. Die Registrierung als Entwicklergerät ging super. Telefonieren, SMS schreiben funktioniert wie man es von einem Telefon erwarten kann. Auch die Einrichtung der Email-Konten war recht einfach und funktionierte (zumindest bei den bekannten Providern) automatisch.

Dummerweise hat auch dieses Betriebssystem - so cool es sein mag - seine Mankos. Viele davon liegen bei Microsoft, einige könnten auch bei meinem Provider liegen: Zum einen wäre da das fehlende Copy & Paste. Ja, ich möchte gern Kopieren und Einfügen - Informationen aus Kontakten in Nachrichten, Informationen aus Internetseiten in Browser-Adressleisten oder Notizen. Zum anderen fehlt mir die Synchronisationsmöglichkeit meiner Mails und Kontakte mit Outlook. Strategie ist, "der Benutzer steht im Mittelpunkt". Ich bin ein Benutzer und ich benutze Outlook und das auch im privaten Bereich. Und nun soll ich einen Exchange-Server installieren und hosten, um meine Kontakte und Kalendereinträge sowohl auf dem Device als auch auf meinem heimischen Rechner zu haben? Das kann doch nicht euer Ernst sein! Die Alternative ist der Outlook-Connector zu meinem Live-Account. Dann habe ich zwei Kalender und zwei Kontaktlisten, die ich manuell synchron halten muss. Der Benutzer steht bei beiden Ansätzen nicht im Vordergrund, sondern wohl eher die Marketingabteilung bei Microsoft, die sowohl die Live-Dienste als auch die Umsätze mit Exchange pushen will. Schade, denn hier könnte man mit wenig Aufwand viel erreichen.

Ein weiteres Manko ist der Standard-Suchprovider im Browser. Dass es nicht Google ist, war mir fast klar - schließlich will Microsoft seine Suchmaschine Bing vorantreiben und wenn mehr Leute in Deutschland Bing verwenden (müssen), dann wird wohl auch der Crawler häufiger mal auch deutsche Seiten crawlen und die Ergebnisse besser. Aber es ist nicht Bing! Nein: Der Standard-Suchprovider ist Yahoo. Wann hat jemand von euch eigentlich das letzte Mal mit Yahoo gesucht? Und natürlich ist diese Einstellung nicht änderbar...

Dieser Post hört sich sehr kritisch an? Das scheint nur so. Alles in allem bin ich sehr zufrieden mit dem Device bisher. Es gibt ein paar Mankos, von denen ich mir hoffe, dass sie sich in irgend einer Art und Weise beheben lassen - aber hier vertraue ich darauf, dass die Hersteller einsichtig werden und auf die Anwender hören - denn ist nicht der Kunde König?

[Update 03.11.2010]: Nachdem ich mich nun etwas näher mit den Hotmail-/Live-Diensten beschäftigt habe, hab ich herausgefunden, dass man seine Kontakt-Daten als CSV exportieren kann. Und somit mein Ich-lösch-versehentlich-meine-Kontakte-Problem lösen kann. Damit hab ich zumindest eine Backup-Möglichkeit - auch wenn mich an dieser stört, dass sie manuell ist.

[Update 04.11.2010]: Inzwischen hab ich auch herausgefunden, dass das Suchprovider-Problem durch meinen Mobilfunkanbieter O2 erzeugt wurde. die Devices haben zwar mehr Speicher als der Standard, dafür aber auch Yahoo statt Bing.

Klarstellung zur Aussage: “Microsoft bevorzugt HTML5 statt Silverlight”

02.11.2010 11:24:00 | Gregor Biswanger

Auf der diesjährigen PDC 2010 von Microsoft wurde von Bob Muglia (Microsoft-Präsident für Server und Werkzeuge) ein Interview von ZDNet zum Thema “Silverlight und HTML5” skizziert. Dabei sprach er davon das Microsoft in Zukunft viel mehr Wert auf HTML 5 anstatt Silverlight lege. Bei Silverlight sei nur noch der Fokus auf Windows Phone 7 gesetzt. Weiteres kann auch unter diesen heise.de-Bericht entzogen werden: “Microsoft bevorzugt HTML5 statt Silverlight”

Erst mal Luft holen und tief einatmen. Es gibt bekannte Sprichwörter die sich zu dieser Situation bestens widerspiegeln.

apfel_mit_pfeil

Das erste lautet: “Drei Dinge kehren nie zurück: ein abgeschossener Pfeil, ein gesprochenes Wort und eine verpasste Chance.

Erstens Bob Muglia sprach im Marketingrausch sehr viel über HTML 5 und wie gut der neue Internet Explorer 9 damit umgehe. Das somit Microsoft derzeit denn Fokus stark auf HTML 5 legt.

Diesen Schritt MUSS Microsoft gehen um das Image und das Produkt “Internet Explorer” auf den Markt zu Etablieren. Hier war das Größte Negative-Image die fehlende HTML-Standard Unterstützung (Man gedenke an IE 6).

Dann Sprach Muglia das der Fokus bei Silverlight hauptsächlich für Windows Phone 7 gesetzt sei und der Druck für die Weiterentwicklung der Web-Version gesenkt wurde.

Das Silverlight-Team ist seit 2007 mit so hohem Druck ausgesetzt, das jedes Jahr eine neue Version mit Verbesserungen und Erweiterung veröffentlicht wurde. Das Team hat großartige Leistungen vollbracht. Bereits Silverlight 2 war technologisch verdammt gut und sehr weit, obwohl dies als die erste annehmbare Silverlight-Version gilt. Ab Silverlight 4 konnte man bereits feststellen das die neuen Features nur noch “Kleinlichkeiten” waren die von der Community gefordert wurden. Nun ist das neue Windows Phone 7 veröffentlicht und der Fokus gilt natürlich hierbei fehlende Features und die Erwartungen der Community zu befriedigen. Es werde lediglich NUR der Druck des Entwicklerteams gesenkt. Es wurde nicht davon gesprochen das Silverlight für Microsoft nicht mehr im Interesse liegt. Ich sage es mal kurz und knapp, Microsoft möchte in beiden Bereichen RIA so wie Standard-Web ganz vorne Mitspielen. Selbst das frisch veröffentlichte Office 2010 und SharePoint 2010 setzen mittlerweile auf Silverlight. Ich könne nun Seitenweise Gründe schreiben woran man die Wichtigkeit für Silverlight bei Microsoft spürt. Ich könnte auch Seitenweise Vorteile von Silverlight gegenüber HTML 5 schreiben. Doch ich möchte gleich mit dem wichtigsten Fortfahren…

 

zahnraeder_big

 

Das zweite Sprichwort lautet: “Ein Unternehmen ist nur so gut wie seine Mitarbeiter

Obwohl eben ein wahrer Kern bei der Aussage von Muglia steckt, ist es eben nicht so wie es von der “Presse” (ZDNet) verstanden wurde. Muglia hätte bestimmte Aussagen anders Formulieren und klarstellen müssen. Er selbst bereut es bereits sehr, das er seine Aussage auf der Silverlight-Team Blogseite wieder ins gute stellt und nur über die Vorteile von Silverlight schwärmt:

“PDC and Silverlight”

Auch der Chef vom Silverlight-Team Tim Heuer bloggte bereits zu diesem Thema:

“Silverlight is dead. Long live Silverlight!”

Klarstellung auch von heise.de-Berichtet:

“Microsoft steht zu Silverlight”

Fazit

Silverlight ist nicht Tot. Silverlight wird auch nicht aussterben. Microsoft liegt derzeit nur viel Wert am IE 9 und investiert bisschen mehr Geld dazu. Bei Silverlight wurden bereits Multi-Millionen-Dollar investiert. Es gibt keinen Grund nicht mehr auf Silverlight zu setzen und geplante Projekte deswegen platzen zu lassen.

Also don´t Panik! And go for it!

Autocomplete mit JQuery UI Autocomplete und ASP.NET MVC und Listen von komplexen Typen List

01.11.2010 20:32:00 | Alexander Zeitler

Im letzten Posting habe ich gezeigt, wie man eine List<string> als JsonResult zurückgeben kann, um eine Autocomplete-Textbox mit JQuery UI Autocomplete zu befüllen.

Einfache Listen mit string-Werten sind vielleicht ganz nett, wenn man für eine generische Suche á la Google Bing nur Vorschläge liefern will.

Was aber, wenn  man Autocomplete z.B. in einem CRM integriert und eine Liste von Kunden vorschlägt?

Wäre es dann für den Anwender nicht praktisch, wenn er statt nach dem bereits selektierten (weil tatsächlich vorhandnenen) Kunden zu suchen, gleich zu den Details des Kunden kommen würde?

Auch das lässt sich leicht mit JQuery UI und ASP.NET MVC realisieren.

Zunächst erweitern wir unsere Kunden-Liste aus dem letzten Beispiel um eine Id und den Ort:

_kunden = new List<kunde>()
			{
				new Kunde() {Id = Guid.NewGuid(), Name = "Alfreds Futterkiste", Ort = "Berlin"},
				new Kunde()
				    {Id = Guid.NewGuid(), Name = "Ana Trujillo Emparedados y helados", Ort = "México D.F."},
				new Kunde() {Id = Guid.NewGuid(), Name = "Antonio Moreno Taquería", Ort = "México D.F."},
				new Kunde() {Id = Guid.NewGuid(), Name = "Around the Horn", Ort = "London"},
				new Kunde() {Id = Guid.NewGuid(), Name = "Frankenversand", Ort = "München"},
				new Kunde() {Id = Guid.NewGuid(), Name = "France restauration", Ort = "Nantes"},
				new Kunde() {Id = Guid.NewGuid(), Name = "Königlich Essen", Ort = "Brandenburg"},
				new Kunde() {Id = Guid.NewGuid(), Name = "Toms Spezialitäten", Ort = "Münster"}
			};

Wie man sieht, ist die Liste jetzt auch nicht mehr List<string> sondern List<Kunde>.

Die Generierung des Suchergebnisses erfolgt analog zum bekannten Beispiel:

List<Kunde> result =
				_kunden.Where(kunde => kunde.Name.ToLower().StartsWith(term.ToLower())).ToList();

Starten wir nun die Anwendung und tippen z.B. “alfred”, sehen wir… nichts:

Wo ist Alfreds Futterkiste?

Warum ist das so?

Eine Überprüfung des JsonResults per Fiddler zeigt eindeutig, dass der Controller die Daten liefert:

HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Mon, 01 Nov 2010 18:37:08 GMT
X-AspNet-Version: 2.0.50727
X-AspNetMvc-Version: 2.0
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 91
Connection: Close

[{"Id":"bbf55dd9-4d7d-4144-8383-32044af5ebc7","Name":"Alfreds Futterkiste","Ort":"Berlin"}]

Was ist also schiefgelaufen?

Der Grund für dieses Problem ist, dass JQuery UI Autocomplete ein Json in folgendem Format erwartet:

[{"value":"bbf55dd9-4d7d-4144-8383-32044af5ebc7","label":"Alfreds Futterkiste, Berlin"}]

Wie bekommen wir nun dieses Resultat von unserem Controller erstellt?

Dank LINQ, anonymen Typen und Listen ist dies kein Problem – wir ändern unsere Abfrage wie folgt:

var result = from kunde in _kunden
			    where kunde.Name.ToLower().StartsWith(term.ToLower())
			    select new
			            {
			                value = kunde.Id,
			                label = string.Format("{0}, {1}", kunde.Name, kunde.Ort)
			            };

Ein Neustart der Anwendung liefert jetzt die gewünschten Ergebnisse:

Suchliste mit Value und Label

Ein unschönes Verhalten ergibt sich allerdings noch:

Iteriert man per Pfeiltasten über die Vorschläge, wird in der Textbox statt des Namens die Id des Eintrags angezeigt:

Die Id hat in der Textbox nichts verloren...

Dieses Verhalten lässt sich leicht mit etwas Javascript korrigieren. JQuery UI Autocomplete liefert das Event “focus” mit, das gefeuert wird, wenn man in der Vorschlagsliste von einem Eintrag zum nächsten springt und der neue gewählte Eintrag den Fokus erhält.

In den EventArgs ist der aktuelle Eintrag mit Value und Label enthalten, so dass wir den Wert in der Textbox einfach überschreiben können:

<script type="text/javascript">
	$(function () {
		$('#customers').autocomplete({
			source: '<%= Url.Action("Search") %>',
			minLength: 1,
			focus: function (event, ui) {
				var selectObject = ui.item;
				$('#customers').val(selectObject.label);
				return false;
			}
		});
	});
</script>

Das gleiche Verhalten tritt nochmals auf, wenn man einen Eintrag auswählt. Die Lösung ist hier analog, jedoch heißt das Event "select":

<script type="text/javascript">
	$(function () {
		$('#customers').autocomplete({
			source: '<%= Url.Action("Search") %>',
			minLength: 1,
			focus: function (event, ui) {
				var selectObject = ui.item;
				$('#customers').val(selectObject.label);
				return false;
			},
			select: function (event, ui) {
				var selectObject = ui.item;
				$('#customers').val(selectObject.label);
				return false;
			}
		});
	});
</script>

Das bereinigte Resultat sieht nun so aus:

Kunde selektiert und Text in der Textbox

Wem übrigens das Verhalten, das nichts passiert, wenn man ohne Auswahl Enter drückt, nicht gefällt, findet bei Thomas eine Lösung.

Um von der Auswahl nun direkt die Kunden-Details angezeigt zu bekommen, benötigen wir nun ein ViewResult, das uns diese zurückliefert:

public ActionResult Details(Guid Id) {
	ensureData();
	Kunde model = _kunden.Where(kunde => kunde.Id == Id).FirstOrDefault();
	return View(model);
}

Die zugehörige partial View lassen wir aus dem Controller generieren:

generateview

Schließlich erweitern wir unser Autocomplete-Script im select-Event noch um einen JQuery-Ajax-Call, der das ViewResult abruft und unter der Such-Textbox einbaut:

<script type="text/javascript">
	$(function () {
		$('#customers').autocomplete({
			source: '<%= Url.Action("Search") %>',
			minLength: 1,
			focus: function (event, ui) {
				var selectObject = ui.item;
				$('#customers').val(selectObject.label);
				return false;
			},
			select: function (event, ui) {
				var selectObject = ui.item;
				$('#customers').val(selectObject.label);
				$.ajax(
					    {
					    type: "GET",
					    url: '<%= Url.Action("Details") %>',
					    data: "Id=" + selectObject.value,
					    dataType: "html",
					    success: function (result) {
					       	var domElement = $(result)
					       	$("#details").empty();
					       	$("#details").append(domElement);
					    },
					    error: function (error) {
					       	alert(error);
					    }

					    }
						)
				return false;
			}
		});
	});
</script>

Das Resultat sieht dann wie folgt aus:

Gesucht? Gefunden!

Die Beispiel-Solution kann hier heruntergeladen werden:

MvcJQueryAutocompleteCustomType.zip (355.22 kb)

DotNetKicks-DE Image

Einladung zum Treffen der .NET Usergroup Dresden am 18.11.2010

01.11.2010 17:47:00 | Martin Hey

Wie bereits beim letzten Treffen angekündigt, werden die nächsten beiden Treffen der .NET Usergroup Dresden nun in sehr kurzen Abständen folgen. Den Beginn machen wir am 18.11.2010. Treffpunkt ist dieses Mal wieder im Erdgeschoss der T-Systems MMS. Wir konnten Peggy Reuter gewinnen, uns etwas zu diesen beiden Themen zu zeigen:

Sketch Flow Prototyping in Expression Blend
  • Vorteile von Sketch Flow Prototypen
  • Killerfeatures von Sketch Flow gezeigt einem Demoprojekt
User Experience und Metro Style Design für Windows Phone 7
  • Theoretischer Ansatz aus UX und Design-Sicht
  • Umsetzung eines kleinen Prototypen in Expression Blend
Wer Peggy kennt, wird wissen, dass die Themen entwicklerfreundlich dargeboten werden. Es verspricht also wieder ein spannender Abend zu werden und wir freuen uns auf rege Teilnahme beim Treffen und auch beim Bierchen danach.

Einen Link zur Anmeldung gibt es wie gewohnt im Xing.

WP7 Buch: Inhaltsübersicht (Arbeitsstand)

01.11.2010 13:45:27 | Peter Nowak

Nachdem ich mir nun mehrfach schon anhören musste das ich ein “Sadist” bin, da ich in Facebook Anmerkungen zum aktuellen Arbeitsstand unseres Buches mache, will ich diesen Wissensdurst einmal kurz befriedigen.

Bevor ich jedoch dazu komme noch ein wichtiger Hinweis: Es handelt sich um den aktuellen Arbeitsstand und kann sich noch aktuell ändern. So sind einige Themen aktuell noch nicht aufgeführt, Themen noch nicht in das richtige Kapitel verschoben etc.

Für die Statistik: Aktuell sind es 417 unbebilderte Seiten.

Hier also die aktuelle Übersicht:

Kapitel Überschrift
KAP00 Vorwort
Vorwort
Wie kam es zu diesem Buch
Ziel und Motivation dieses Buches
Über die Autoren
Danksagungen
Kap01 Einleitung
Alles ist neu
Die abgeschnittenen Zöpfe
Multitasking vs verwaltetem System
Silverlight vs Windows Forms
Managed vs native Code
Wieso XNA?
Offenes vs geschlossenem System
Was sollten Sie bereits wissen, bevor Sie anfangen?
Es folgt…
Systemvoraussetzungen
Fehler in diesem Buch
Korrekturen und Kommentare
Kap02 Hello new World
Das Gerät und sein Betriebssystem
Die Navigation in Windows Phone 7
Synchronisieren eines Windows Phone 7
Kontakte und Termine aus verschiedenen Quellen
Erstellen und gemeinsames Bearbeiten von Dokumenten
Verbunden mit der Welt: Email, Internet, Facebook, Xbox Live
Das Windows Phone als Einkaufswagen: Marketplace und Zune
Aktualisieren eines Windows Phones
Laufen lernen
Microsoft Visual Studio 2010 Express für Windows Phone
Microsoft Expression Blend für Windows Phone
XNA Game Studio 4
Der Emulator
…und was noch?
Vollversionen und Express in Koexistenz
Kap03 Windows Phone 7 unter der Haube
Die neue Hardwareplattform
Display & Auflösung
Prozessor & Grafik
Speicher
Tastatur & Bedienelemente
Der Powerbutton
Die Lautstärkebuttons
Der Kamerabutton
Der Backbutton
Der Startbutton
Der Searchbutton
Audio
Sensoren
Accelerometer
A-GPS
Proximity
Compass
Lichtsensor
Verbindungen
Sonstige Hardware
Die neue Softwareplattform
Die Anwendungsschicht
Das Windows Phone 7 App Modell
Das Windows Phone 7 UI Modell
Das Navigationsmodell
Shell Frame Management
Cloud Services
Der Windows Phone 7 Kernel
Das Metro Design
Entwickeln mit dem Windows Phone 7
Kap04 Mobile Anwendungen mit SL für WP
Erstellen von eigenen Anwendungen
Windows Phone Developer Tools
VS 2010
Expression Blend 4
manuelles Kompilieren und Bereitstellen
Metro revisited
Status und Application Bar
Ausrichtung des Bildschirms
Standardschriftart
Push Notifications
Aufbau von grafischen Oberflächen
Fortschrittsanzeige
Themes
Anwendungskonfiguration
Touchscreen & Gesten
Hardwaretasten
Virtuelle Bildschirmtastatur
Sensoren
Steuerelemente
Windows Phone Notifications
Textleitfaden
Hello World
Frame und Page Navigation
Steuerelemente für Windows Phone 7
Button
CheckBox
RadioButton
TextBox
ComboBox
Grid
HyperlinkButton
image
PasswordBox
ProgressBar
TextBlock
ListBox
PhoneApplicationFrame
PhoneapplicationPage
Border
Canvas
InkPresenter
MediaElement
MessageBox
MultiScaleImage
Popup
WebBrowser
Tooltip
Slider
StackPanel
ScrollViewer
Panorama
Pivot
Weitere Steuerelemente für Silverlight für WP7
ContextMenu
WrapPanel
DatePicker und TimePicker
ToogleSwitch
GestureListener
Erstellen eines eigenen Steuerelements in Silverlight für Windows Phone
Oberflächendesign und Besonderheiten (Theming)
Brushes
Colors
Font Names
Font Sizes
Thickness
Text Styles
Theme Visibility and Opacity
Das MVVM Entwurfsmuster
Hello World mit MVVM
MVVM - ein anderer Ansatz
Das MVVM Light Toolkit
Globalisierung und Lokalisierung
Globalisierung
Lokalisierung
Der Schnelleinstieg in Datenbindung mit Silverlight
LINQ
Die Grundlagen
Linq to Objects
Linq to XML
Linq to JSON
Reactive Extensions
Das Observer-Entwurfsmuster
Rx, Observable-Entwurfsmuster und LINQ
Kap05 Erstellen von Spielen mit dem XNA Game Studio 4.0
Mobile Gaming
Das XNA Framework
Die Projektvorlagen
Weitere Bestandteile des XNA Game Studio 4.0
Funktionsweise eines Spiels
Welche Möglichkeiten bietet das XNA Framework
Welche Möglichkeiten bietet das XNA Framework nicht
Hallo XNA
Hallo Windows Phone 7
Vollbild Modus
Textausgabe
Ein grafisches Objekt
Eingabe
XNA Spiele für Windows Phone 7
Ein erstes Spiel
Die Spiel-Ressourcen
Das Spielprinzip
Multi-Touch Helfer
Die using-Verweise und Referenzen
Benötigte Variablen
Konstruktor und Tombstoning
Initialisierung und Laden von Ressourcen
Aktualisieren des Spielzustands
Zeichnen des Spiels
Die nächsten Schritte
Die Basis für ein Spiel
Spielinhalt
Aufteilung in Komponenten
Die Game-Klasse
Der Seestern
Der Kraken
Die Fische
Die nächsten Schritte
Multiplatform-Support
Xbox Live
Kap06 Arbeiten mit plattformspezifischen APIs
Arbeiten mit de FrameRateCounter
Redraw regions
Cache Visualisierung
Lokalisation
Triangulation
Das FM Radio
Besonderheiten
Verwenden des Radios
Die Werte der FMRadio Klasse im Detail
Arbeiten mit Gesten
Touch-Gesten
Multi-Touch-Gesten
Andere Gesten
Gesten in WP7
Eigene Gesten mit dem SL für WP7
Gesten mit einem Finger / Touch
Gesten mit mehreren Fingern / Multi-Touch
(Multi)Touch-Behaviours
Multi-Touch und Gesten in XNA
TouchPanel Eigenschaften
MultiTouch mit XNA
Gesten in XNA
Verarbeitung der Gesten
XNA TouchPanel in SL nutzen
Beschleunigungssensor
Die ApplicationBar
Der VibrateController
Virtuelle Tastaturlayouts
"Arbeiten mit ""Aufgaben"""
PhoneCallTask
PhoneNumberChooserTask
PhoneNumberResult
PhotoChooserTask
PhotoResult
EmailAdressChooserTask
EmailComposeTask
Emailresult
MediaPlayerLauncher
SearchTask
SmsComposeTask
WebBrowserTask
TaskEventArgs
SaveEmailAdressTask
SavePhoneNumberTask
CameraCaptureTask
Auslesen von Geräteinformationen
Auslesen von anonymen Benutzerinformationen
Arbeiten mit dem Bilder Extra
Verhindern der Bildschirmsperre
Orientierung
Orientierung in SL
Orientierung in XNA
Das XAP-Dateiformat
Arbeiten mit dem Dateisystem
Anlegen und Füllen einer Datei
Auslesen und Löschen einer Datei
Anlegen und Löschen von Unterordnern
Auflisten von Dateien und Unterordnern
Leeren des IsolatedStorage
Arbeiten mit zusätzlichen Anwendungsinhalten
Arbeiten mit zusätzlichen Dateien
Arbeiten mit eingebetteten Ressourcen
Datenkomprimierung
(De)Komprimieren von Datenströmen
Arbeiten mit ZIP-Archiven
Arbeiten mit lokalen Daten
Lokale Anwendungseinstellungen
Serialisieren und Deserialisieren von Objekten
Serialisierung mit dem XMLSerializer
Serialisierung mit dem DataContractSerializer
Serialisierung mit dem DataContractJSONSerializer
Zugriff auf das Gerät mittels CoreCon
Der Lebenszyklus einer Windows Phone 7 Anwendung
Kap07 Arbeiten mit Netzwerken und Datenbanken
Netzdienste
WebServices
WCF Dienste
WCF Data Services und das Odata-Protokoll
Zugriff auf andere Web-ressourcen
Oauth- Authentifizierung mit WP7
Push Notifications
Toast Notifications
Tile Notifications
RAW Notifications
Eine Cloud-Anwendung benachrichtigen
Interaktion mit dem WebBrowser Steuerelement
Die NetworkInterface-Klasse
Arbeiten mit Fiddler
Kap08 Logging und Unit Tests mit dem Windows Phone 7
Logging mit de WP7
Unit Testing mit dem WP7
Unit Testing it de WP7
Kap09 Deployment
Bereitstellen mittels Marketplace
Trial Modus für die eigene Anwendung
Launcher für den Marketplace
MarketplaceHubTask
MarketplaceDetailtask
MarketplaceReviewTask
MarketplaceSearchTask
Das Deployment
Anlegen deines Marketplace-Kontos
Die Windows Marketplace for Mobile Zertifizierungsrichtlinien
Inhaltsrichtlinien
Anwendungsrichtlinien
Performance und Speicherverbrauch
Grafikgrößen
Integration in Musik+Video Hub und Bilder-Extras
Voraussetzungen für XAP-Installationsdateien
Das Marketplace-Profil
Freischalten eines Windows Phone 7 Geräts
Einreichen einer App
Geräteverbindung
Die Zune Desktop Software
Das Windows Phone Connect Tool
Kap10 Migration von Spielen und Anwendungen
Generelle Überlegungen
Migration von bestehenden XNA-Spielen
Schritte nach der Migration
Migration von bestehenden Silverlight-Anwendungen
Migration von bestehenden Windows Mobile-Anwendungen
Migration der View
Migration des Models und des Controllers
Das Erstellen der ModelView
Fazit
Kap0A Sonstiges
Tipps und Tricks für eine optimale Performance
Arbeiten mit Grafiken
Caching von Bildern aus dem Internet
Verringern der Assemblygröße
Quellcode im Konstruktor und Loaded-Ereignis
Framerate Counters
Arbeiten mit ListBox-Einträgen
Weitere Ressourcen
Design
Datenbanken
Steuerelemente und Tipps
Frameworks und Tools
Architektur und Datenzugriff
Weitere Informationsquellen
Updatekapitel



This posting is provided "AS IS" with no warranties, and confers no rights.

Windows Phone 7 Game Framework

01.11.2010 07:53:46 | Oliver Scheer

Dennis Sasse (Microsoft) hat zusammen mit mir in den letzten Wochen ein Framework für die leichte Erstellung von Casual Games erstellt. Damit ist es möglich sehr schnell Spiele zu erstellen, in dem es dem Entwickler die Arbeit für Standard-Funktionen abnimmt, wie z.B. Punkte zählen, Zeit messen, Leben verwalten. Dieses Video gibt einen Einstieg in das Framework. Wer Lust hat an diesem Framework mitzuentwickeln ist herzlich willkommen. Eine detailliertere Beschreibung des Windows Phone 7 Gaming Frameworks ist auf http://wp7gameframework.codeplex.com/ zu finden.

Get Microsoft Silverlight

Das Projekt liegt auf Codeplex und kann von jedem heruntergeladen werden.

Link: http://wp7gameframework.codeplex.com



tweetmeme_source = 'TheOliver';

Gewinnen mit Windows Phone 7: Zeitschriften veranstalten App-Contests

01.11.2010 07:13:38 | Oliver Scheer

Pünktlich zur Verfügbarkeit von Windows Phone 7 und der Windows Phone Developer Tools sind bei gleich zwei Fachblättern Programmier-Wettbewerbe angelaufen: die Redaktion des PC-Magazin prämiert beim "WP7 Gewinnspiel" die nach ihrer Ansicht besten drei Apps und belohnt Entwickler mit Windows Phone 7 Handys und der Entwicklungssoftware "Visual Studio 2010 Professional". Einsendeschluss ist Ende November.
Coole Anwendungen für die neue Smartphone-Plattform von Microsoft sucht auch DevDorado, die Kundenzeitschrift von Software-Distributor Zoschke-Data: Noch bis zum 12. November haben Entwickler beim "DevDorado WP7 Contest" Zeit, ihre Apps für Windows Phone 7 einzureichen und sich damit für einen der drei Siegerplätze zu qualifizieren. Zu gewinnen gibt’s, wie könnte es anders sein, Windows Phone 7-Smartphones. Wer aufs Siegertreppchen kommt, entscheidet eine Jury, in der neben Zoschke-Chef André Wiese auch die beiden Microsoft-Experten Frank Fischer und Frank Prengel sitzen.



tweetmeme_source = 'TheOliver';

Regeln | Impressum