.
Anmeldung | Registrieren | Hilfe

.NET-Blogs Archiv Dezember 2008

Zum Jahresende: Koordinierte Weltzeit und irdisches Schwanken

31.12.2008 16:51:00 | Sebastian Jancke

Heute morgen las ich in der Süddeutschen Zeitung folgende sehr schöne Formulierung, die in ihrer Wort- und vor allem Namenswahl selten ist:

schaltsekunde

Dies erinnert mich an den schönen Werbespot von Monster.de, indem Menschen mit sehr langen Beinen die Erd-Rotation mit einer Art Fahrrad sicherstellen ;-)

Monster-de-tv-spot

ALT.NET Cologne #4 – Buildmanagement

30.12.2008 11:53:00 | Sebastian Jancke

Zum vierten Mal ein ALT.NET Bier im schönen Köln, diesmal zum Thema Buildmanagement (mit Maven). Stefan, Sergey, Lars und ich hatten dazu Christian Raschka eingeladen. Nach einem kleinen “warm-up” gings ab 19h mit einer Einführung in Maven los. Anschließend diskutierten wir den aktuellen Stand des NPanday-Projektes (früher: NMaven).

Maven ist ein java-basiertes System zum Buildmanagement. Maven ist dabei nur eine sehr kleine Laufzeitumgebung, die erst durch die große Zahl verschiedenster Plugins zum Leben erwacht und arbeitet. Interessant für ALT.NET sind dabei vor allem die Konzeote und Ideen – auch wenn in gemischten Umgebungen ein java-basiertes Buildsystem durchaus pragmatisch erscheint.

Während Ant, NAnt und MSBuild als imperativ aufgefasst werden können, ist Maven rein deklarativ: Man beschreibt was man möchte (Abhängigkeiten, Compiler, Testrunner, Analysen, Reports, …) und Maven kümmert sich um den Rest. Grundsätzlich gilt hier “Convention-over-Configuration”. Es gibt für alles sinnvolle Standardwerte. Zusätzlich sind bestimmte “best practices” als feste Regeln in Maven verbaut. So ist zum Beispiel die Struktur eines Moduls/Projektes immer gleich. Dies hat den Vorteil, dass man darüber nicht mehr nachdenken muss, alle Projekte gleich aussehen und der Standard bereits erprobt ist. Die verschiedenen Bestandteile eines “build” (Phasen!) sind in Maven fest verbaut und entstehen nicht – wie bei Ant – durch das aneinanderreihen von “targets”. Der Vorteil: Eine Phase heißt überall auf der Welt gleich und nicht einmal install, einmal compile und einmal build – hier greifen auch die angesprochenen best practices. Zusätzlich erledigt eine Phase immer die selbe Aufgabe, egal in welchen Projekt (Phasen können trotzdem erweitert werden). 

Eine Assembly (oder in Java: JAR) wird in Maven auch Artefakt genannt. Ein Artefakt kann Abhängigkeiten zu anderen, eigenen Modulen haben oder aber auch externe Abhängigkeiten.

Alle Plugins werden genauso wie Abhängigkeiten zu anderen Modulen aufgefasst: Alles ist eine Abhängigkeit des Buildprozesses. Fehlt ein Plugin oder eine Abhängigkeit, so wird dieses von zentralen Servern (sog. “Repositories”) heruntergeladen. Dort können wiederum weitere (transitive) Abhängigkeiten hinterlegt sein; diese werden dann auch geladen. Alle Artefakte werden in einem lokalen Repository abgelegt, dieses funktioniert also als Cache. Für Unternehmen lohnt sich der Einsatz eines Proxy-Repositories im Unternehmensnetzwerk. Dieser Proxy hat seinen eigenen Cache und versucht Anfragen zunächst daraus zu bedienen. Fehlen hier Artefakte, werden diese über konfigurierbare zentrale Repositories heruntergeladen.

Maven vergibt für erstellte Artefakte automatisch Buildnummern, die sich niemals doppeln können. Grundsätzlich ist jeder Build zunächst als sog. “Snapshot” mit dem jeweiligen System-Benutzernamen markiert. Erst ein spezielles Plugin erzeugt auf Wunsche in komplettes Release. Zur Erzeugung eines solchen gehört dann auch der Upload auf ein angegebenes Repository. Auf öffentlichen zentralen Repositories sind idR keine Snapshots zu finden, dies garantiert die Stabilität der veröffentlichen Versionen. Wer dennoch gegen den “trunk/HEAD” bauen möchte, kann meist Snapshot-Versionen von den Servern der jeweiligen Projekte bekommen. Da Abhängigkeiten mit Versionsnummern definiert werden sollten (oder mit Versionsbereichen), erreicht Maven somit die so wichtige Reproduzierbarkeit von Builds.

Alle beschriebenen Abhängigkeiten eines  Artefakts werdem mit dem Project Object Model (POM) beschrieben. Dazu können auch Angaben über das verwendete SCM (mit Pfad zum Checkout) oder ein Ziel-Repository für Releases gehören. Fehlt der Quellcode kann Maven diesen automatisch aus dem gegebenen SCM herunterladen. Wird ein Release erzeugt, wird zunächst kontrolliert, ob im SCM noch Änderungen vorhanden sind. Falls es solche gibt, werden diese zunächst auch “ausgecheckt”. Anschließend wird der komplette Build durchgeführt und der Stand im SCM getagged. Das fertige Release wird dann ins lokale Repository und in das angegebene Ziel-Repository installiert.

Für .NET gibt es schon länger ein Reihe von Maven-Plugins, um .NET Compiler, Testrunner, Analysen, etc. zu unterstützen. Nach 2 Jahren im Apache Incubator konnte das Projekt aber nicht genügend Geschwindigkeit und Halt in der Community erzeugen. Deshalb ist der aktuelle (funktionierende) Stand nun unter neuem Namen nach Codeplex gewandert. Die Plugin-Sammlung heißt nun NPanday. Damit ist Maven sicherlich näher an .NET gerückt, fraglich ist aber ob der Ansatz einer Java-Runtime beibehalten werden kann. Derzeit scheinen die Pläne vorzusehen, sich noch stärker mit MSBuild im Rücken zu verbinden und langfristig die Java-Abhängigkeit zu verlieren. Auch veröffentlichen derzeit keine der großen Open Source Projekte in der .NET Welt ihre Artefakte auf zentralen Repositories. Für mehr Sichtbarkeit von Maven und die Aufnahme von mehr Geschwindigkeit müssten sicherlich Projekte wie NHibernate, Castle Windsor, Spring.NET, NUnit, xUnit, … sich beteiligen und ein Deployment auf einem zentralen Server pflegen. Dazu müsste man sicherlich “unten” anfangen und die Basis (Unittesting-Frameworks, Castle Dynamic Proxy) zuerst deployen, damit alle darauf aufsetzenden Projekte ihre Abhängigkeiten korrekt definieren können.

Technorati Tags: ,,

FIX: When you run an application that is built by using the /Ot compiler option in Microsoft Visual Studio 2005 Service Pack 1 (SP1), some "if" ...

29.12.2008 21:04:00 | Ozgur Aytekin

FIX: When you run an application that is built by using the /Ot compiler option in Microsoft Visual Studio 2005 Service Pack 1 (SP1), some "if" statements may run incorrectly

You use the /Ot (Favor Fast Code) compiler option when you build an application that is configured on the x64 platform in Microsoft Visual Studio 2005 Service Pack 1 (SP1). When you run the application, some if statements may run incorrectly. Therefore, the results are unpredictable. For example, the if statements may be skipped in the generated code of the application.

This problem only occurs in the following scenario.
- There are some MOV instructions between two compare operations.
- These compare operations use the same operands.
- The values of the operands are changed by the MOV instructions.

http://support.microsoft.com/kb/959378

Fundamentals of Relational Database Design

29.12.2008 05:20:00 | Ozgur Aytekin

Database design theory is a topic that many people avoid learning for lack of time. Many others attempt to learn it, but give up because of the dry, academic treatment it is usually given by most authors and teachers. But if creating databases is part of your job, then you're treading on thin ice if you don't have a good solid understanding of relational database design theory.

This article begins with an introduction to relational database design theory, including a discussion of keys, relationships, integrity rules, and the often-dreaded "Normal Forms." Following the theory, I present a practical step-by-step approach to good database design.

http://www.deeptraining.com/litwin/dbdesign/FundamentalsOfRelationalDatabaseDesign.aspx

Virtuelles ALT.NET DE Meeting am 29.12.2008

28.12.2008 21:14:53 | Albert Weinert

Kurz vor Jahresende findet das erste ALT.NET DE Online Treffen statt

Beim ersten Treffen gibt es noch kein spezielles Thema.

Jeder interessierte kann Teilnehmen, sofern ein Headset vorhanden ist, eine WebCam dazu schadet nicht, jedoch muss der Live Meeting Client installiert sein (kann man auf der Testseite machen)

Wie das ganze abläuft steht noch nicht fest, es wohl erst einmal ein wenig Open Space sein um dies zu erarbeiten.

Offiziell geht es ab 20 Uhr los, die Lobby ist aber 19:30 Uhr geöffnet.

Weitere Informationen zum Online-Meeting

Technorati-Tags: ,,

New Security Catalog Views in SQL Server 2005/2008

28.12.2008 19:33:00 | Ozgur Aytekin

SQL Server 2005 introduced the concept of securables, which are anything within SQL Server which you can assign permissions against. This includes the SQL Server itself. Microsoft did this to provide more granular access in order to customize security to what you need. But with more flexibility comes more complexity. As a result, you've got to look in a few more places to understand the permissions a given login or database user has.

The use of stored procedures for roles such as sp_helprolemember and sp_helpsrvrolemember is still necessary because some permissions are assigned directly to the roles. Some roles, like db_datareader and db_datawriter, have implicit rights that will need to be taken into account. Those should stay a staple of your toolset when trying to determine security within SQL Server. The reason sp_helprotect is no longer viable at the database level is because it is included for backward compatibility and therefore only reports on those securables that were present in SQL Server 2000, such as tables, views, functions, and the like. Newer securables, such as schemas and databases, weren't in SQL Server 2000 and as a result, sp_helprotect won't report permissions on them because it doesn't report against any securable that wasn't present in SQL Server 2000.

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

Windows Server 2008 Hyper-V systems restart unexpectedly, and you receive a 0x1000007E Stop error code when you mount a VHD file

28.12.2008 19:32:00 | Ozgur Aytekin

When you mount a virtual hard disk (VHD) file, Windows Server 2008 Hyper-V systems restart unexpectedly, and you receive the following Stop error code:
0x1000007E
For example, you use Windows Server 2008 Virtual Machine Manager (VMM) to convert a physical drive to a virtual drive. If you use VMM to mount the captured image, the Windows Server 2008 system may experience this problem.

http://support.microsoft.com/kb/959766

FIX: When you try to save a style sheet in Microsoft Visual Studio 2005 Service Pack 1 (SP1), the IDE may shut down unexpectedly

28.12.2008 19:30:00 | Ozgur Aytekin

When you try to save a style sheet, a .css file, in Microsoft Visual Studio 2005 Service Pack 1 (SP1), the IDE may shut down unexpectedly. Additionally, an event message that resembles the following is logged in the application event log:

Event Type: Error
Event Source: Microsoft Visual Studio
Event Category: None
Event ID: 1000
Description: Faulting application devenv.exe, version 8.0.50727.762, stamp 45716759, faulting module vswebdesign.dll, version 8.0.50727.762, stamp 45716d5d, debug? 0, fault address 0x0016fd5b.

http://support.microsoft.com/kb/960152

Frohe Weihnachten 2008 und ein erfolgreiches Jahr 2009!

24.12.2008 10:13:06 | Kay Giza

Das war es nun (fast), das Jahr 2008, wie immer viel zu schnell ist es vorüber gegangen. Es bleiben uns nur noch wenige Tage, in denen wir noch einmal auf die Ereignisse der vergangenen 12 Monate zurückblicken können. Es waren für mich sehr schöne, erlebnisreiche und interessante 12 Monate, auf die ich persönlich gerne zurückblicke! Sei es beruflich oder auch privat!

Jawohl - man kann sagen, es wurde viel bewegt, egal wo ich hinschaue wurde wirklich immer mit persönlichem Einsatz viel bewegt.
Ich möchte mich den folgenden Worten gerne anschließen: Man sollte nie zuschauen! Man soll mittun, Zeuge sein und Verantwortung tragen. (Antoine de Saint-Exupéry)
Ich wünsche mir, dass Ihr Jahr 2009 genauso und sogar noch erfolgreicher wird, als dieses Jahr, dafür wünsche ich Ihnen alles Glück und den besten Erfolg!

Insbesondere möchte ich hier auf diesem Wege allen Lesern meines Weblog danken, für das immer wiederkehrende Feedback, die zahlreichen E-Mails und Kommentare in den Posting, für den Dialog.
Ich habe durchweg von Start des Weblogs bis heute genau aus diesem Dialog die Energie bezogen, weiter zu machen. Sie haben es mir gedankt mit ständig steigendem Interesse, sei es in nackten Zahlen, Daten und Fakten oder in den zahlreichen Blogkommentaren. Ich würde mich freuen, wenn wir weiterhin in 2009 über meinen Weblog in Kontakt bleiben würden.


Ich wünsche Ihnen nun ein besinnliches Weihnachtsfest und ein glückliches sowie erfolgreiches Jahr 2009!

Viele Grüße,
Kay Giza
 Frohe Weihnachten wünscht Kay Giza!

Nun möchte ich Ihnen gerne noch einig interessante Links hinweisen, die Sie - wenn Sie möchten - zwischen den Feiertagen gerne besuchen können:

 



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

Microsofts MSDN Online veroeffentlicht: MSDN Mediathek

22.12.2008 20:46:48 | Kay Giza

MSDN – das Microsoft Developer Network, veröffentlich passend zu den ruhigen Weihnachtsfeiertagen die „MSDN Mediathek“.
Mit einer innovativen einfachen Bedienung rückt das Video-Erlebnis im Internet noch mehr in den Vordergrund. Die Mediathek bietet beim Start über 1.500 Multimedia-Beiträge auf Abruf, kostenfrei und ohne Registrierung. Die Mischung aus Technik-Demonstration, kompetenter Beratung und frischer Unterhaltung ist der Mehrwert des One-Stop Video-Shops für Software-Entwickler. Empfehlungen der MSDN Online-Redaktion, eine komfortable Suchfunktion, Channel-Views und die Kombination aus sofort anspielbaren Videos und der Zugriff auf dazugehörige Downloads erleichtern die einfache Orientierung und den Zugriff auf das technische Know-How. MSDN Online in Deutschland bietet seit Jahren Multimediale Inhalte für Entwickler an, von Podcasts bis hin zu
Webcasts. Die MSDN Mediathek bietet Softwareentwicklern in Deutschland einen zentralisierten Zugriff auf alle Multimediangebote: http://www.msdn-online.de/Mediathek


Mein Team und ich würden uns über Feedback freuen, probieren Sie unsere Mediathek doch mal über die Weihnachtsfeiertage aus und lassen Sie uns doch bitte wissen, ob wir Ihren Geschmack getroffen haben, ob wir genau die Themen anbieten die Ihren Wissensdurst stillen oder was wir anders oder besser machen könnten. Nutzen Sie doch die Kommentare-Funktion in diesem Weblog oder schreiben Sie uns eine E-Mail.

Viel Spaß und Erfolg ab heute mit der MSDN Mediathek - wünscht das MSDN Online Team!

Screenshots:

MSDN Mediathek im Überblick
MSDN Mediathek im Überblick

Einfach Navigation
Wählen Sie aus den verschiedenen Channels aus
Einfach Navigation

Einfach Suchen
Einfach Suchen



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

Flotzam - A Twitter, Facebook, Flickr & RSS Mash-up

22.12.2008 19:46:49 | Kay Giza

Auf der Xtopia 08 und dem Microsoft Technical Summit 2008 wurde auf einer großen Leinwand Inhalte von Twitter, Facebook, Flickr & von vielen Konferenz-Bloggern in einem sogenannten Mash-up veröffentlicht.
Screenshot:

[Bitte klicken Sie auf das Bild für eine vergrößerte Darstellung]

Wir haben sehr viele Anfragen dazu bekommen, wie, was, wer und warum?
Wir haben hier Flotzam genutzt, eine Client-Anwendung: http://flotzam.com/ von Karsten Januszewski und Tim Aidlin.

Wer mehr darüber wissen möchte:



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

AnteMe 1.6 released

21.12.2008 19:59:03 | Lars Keller

Seit kurzen ist die beliebte Ameisensimulation AntMe in Version 1.6 erschienen. Durch AntMe können gerade Programmieranfänger fast "spielend" c# oder VB lernen. Wobei ich auch gern zugebe, dass ich selber ab und zu noch ein Duell mit unseren Azubis mache. ;-) AntMe macht wirklich richtig Laune!

Es gibt auch seit neusten ein Forum und einen Video Channel auf den AntMe Webseiten sowie ein Weihnachtsgewinnspiel.



This weblog is sponsored by netcreate OHG.

AnteMe 1.6 released

21.12.2008 18:59:03 | Lars Keller

Seit kurzen ist die beliebte Ameisensimulation AntMe in Version 1.6 erschienen. Durch AntMe können gerade Programmieranfänger fast "spielend" c# oder VB lernen. Wobei ich auch gern zugebe, dass ich selber ab und zu noch ein Duell mit unseren Azubis mache. ;-) AntMe macht wirklich richtig Laune!

Es gibt auch seit neusten ein Forum und einen Video Channel auf den AntMe Webseiten sowie ein Weihnachtsgewinnspiel.

Ausblick auf den ASP.NET MVC Release Candidate & MVC Design Gallery

21.12.2008 13:20:18 | Robert Mühsig

ScottGu gibt kurz vor Weihnachten noch einen Ausblick auf den Release Candidate  von ASP.NET MVC und stellt die MVC Design Gallery vor.

(more…)

ShareThis

AnteMe 1.6 released

21.12.2008 09:59:00 | Lars Keller

Seit kurzen ist die beliebte Ameisensimulation AntMe in Version 1.6 erschienen. Durch AntMe können gerade Programmieranfänger fast "spielend" c# oder VB lernen. Wobei ich auch gern zugebe, dass ich selber ab und zu noch ein Duell mit unseren Azubis mache. ;-) AntMe macht wirklich richtig Laune!

Es gibt auch seit neusten ein Forum und einen Video Channel auf den AntMe Webseiten sowie ein Weihnachtsgewinnspiel.

Jahresrueckblick 2008: MSDN in Zahlen: 26174

19.12.2008 21:14:26 | Kay Giza

Der MSDN-Jahresrückblick, Folge 15 und somit Ende unseres Jahresrückblicks: Seitenblicke! [...mehr]

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

Video-Archiv: Rückblick auf Xtopia und Technical Summit

19.12.2008 15:04:00 | Lori Grosland

Nichts zu tun über die Feiertage? Zu kalt draußen? Lust ein paar Videos anzuschauen? Na, dann habe ich eine Idee für Euch.

Seit letzte Woche sind die Video-Aufzeichnungen von aller gehaltenen Vorträge von „Xtopia 08“ und „Technical Summit 2008“ jetzt im MSDN Event-Archiv abrufbar.  Auch zu finden sind die Vortragsfolien von zahlreichen Referate. Insgesamt stehen fast 100 Präsentationen wahlweise als Download oder Video-Stream zu Verfügung.

Xtopia:

http://www.microsoft.com/germany/msdn/events/archiv/xtopia08/default.mspx

Technical Summit:

http://www.microsoft.com/germany/msdn/events/archiv/technicalsummit08/default.mspx

Viel Spaß und frohe Weihnachten! 

Praktisches Feature: Blogeinträge automatisch Twittern lassen (mit Zone.de)

19.12.2008 13:47:54 | Steffen Ritter

Die Weihnachtsgeschenke hören nicht auf: Mein geschätzter Freund Michael Praetorius, bekannt aus Funk und Fernsehen, erm, Web, u.a. Betreiber von Zone.de hat mir gestern beim Glühwein auf dem Tollwood (einer der Weihnachtsmärkte in München) von einem neuen Feature seiner Plattform berichtet: Automatisches Twittern von Blogeinträgen mit direktem Link auf den Eintrag. Eine ausführliche Anleitung mit Bildern gibt es hier.  

Was ist ein BarCamp?

19.12.2008 12:07:00 | Lori Grosland

Ich gehe gern auf BarCamps hier in Deutschland.  Es ist eine super Gelegenheit neue Leute kennenzulernen, mehr über Web2.0/Internet/Computer Themen zu erfahren, und ich halte auch ganz gern Vorträge über verschiedene Themen (z.B. Popfly, Photosynth, Windows Live Writer, etc.) 

Aber was ist ein BarCamp?  Viele von meine Freunde und Kollege wollen häufig wissen, was genau ein BarCamp ist.  Wie man wahrscheinlich vermutet, ist es einer Art Konferenz aber nicht eine Konferenz, wie die meisten Leute kennen.  Um diese Fragen einfacher zu beantworten, habe ich auch ein Video über BarCamps gemacht.  Ich glaube es ist einfacher zu verstehen, wenn man es auch sieht.  ;-) 

In diesem Video erkläre ich mehr über BarCamps und zeige auch Szenen von BarCamp Hamburg 2, das am 22.-23. November 2008 bei Otto stattgefunden hat. 

Mehr Info zu BarCamps findet Ihr hier…
http://de.wikipedia.org/wiki/BarCamp

Lust selbst an einem BarCamp hier in Deutschland teilzunehmen?  Anstehende Termine könnt Ihr normalerweise hier finden…
http://barcamp.org/#germany

Jahresrueckblick 2008: MSDN in Zahlen: 2250

18.12.2008 21:08:30 | Kay Giza

Der Rückblick auf MSDN-Aktivitäten im Jahr 2008. Heute: MSDN setzt Zeichen. [...mehr]

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

Oxite – Open Source CMS mit ASP.NET MVC

18.12.2008 20:58:10 | Oliver Scheer

Ein erweiterbares Content Management System als Open Source-Projekt auf Basis von ASP.NET MVC hat Microsoft jetzt auf CodePlex frei gegeben. Besonders gut eignet sich das Projekt „Oxite“ als Blogging-Plattform. Und natürlich vermittelt es herausragend die praktische Anwendbarkeit des MVC-Frameworks in einem überschaubaren Umfeld. Schauen Sie mal auf MIX Online vorbei, um Oxite im Einsatz zu sehen. Dort erfahren Sie auch noch mehr über Oxite, sogar ein Channel 9-Video ist drin.

Neuer Artikel bei dotnetpro: NUnit vs. xUnit.net

18.12.2008 18:47:00 | Gregor Biswanger

In der kommenden Ausgabe der dotnetpro gibt es einen neuen Artikel meinerseits:

NUnit vs. xUnit.net

Ende Mai 2008 wurde die erste stabile Version von xUnit.net veröffentlicht. Das neue Testtool bringt lange Zeit vermisste Testfunktionen mit. Allerdings hat xUnit einige, bislang hoch geschätzte Funktionen von NUnit nicht übernommen. Nicht in jedem Fall lohnt sich deshalb ein Umstieg auf xUnit. Dieser Artikel hilft bei der Auswahl der richtigen Testplattform.

Zu lesen ist der Artikel bei dotnetpro, Ausgabe 01/2009.
Oder http://www.dotnetpro.de/articles/freearticles/pdf/2009-01-xUnit.pdf

Merry Web-Mas: Haufenweise kostenlose Webtools von Microsoft (...und ein Sonderangebot zu Silverlight, ich kann nicht anders)

18.12.2008 13:46:00 | Steffen Ritter

Ich weiß, es ist Finanzkrise, das Geld ist knapp, aber trotzdem sollte kein Webdesigner und Webentwickler auf erstklassige Werkzeuge verzichten müssen.

Der Microsoft Web Application Installer ist ein Komplettpaket mit dem die gängigsten kostenlosen Webanwendungen von Microsoft und anderen Herstellern für Windows Server komfortabel und schnell installiert werden können. Darin enthalten sind viele populäre ASP.NET-Anwendungen und PHP-Anwendungen wie beispielsweise Graffiti, DotNetNuke, WordPress, Drupal, OSCommerce und viele weitere. Der Installer überprüft mit nur wenigen Clicks die entsprechenden Voraussetzungen, lädt die Anwendungen dann von ihren Originalquellen in der Community, und hilft bei der Konfiguration und Installation. Schneller und bequemer geht es kaum.

Der Microsoft Web Platform Installer ist ein einfaches Tool zur Installation der gesamten Microsoft Web Platform für ASP.NET und PHP, inklusive IIS, Visual Web Developer 2008 Express Edition, SQL Server 2008 Express Edition und dem .NET Framework.

Und ja, mir blutet als Marketingmensch trotz aller Freude über dieses kostenlose Angebot das Herz, da schließlich damit kein Umsatz erzeugt wird. Deswegen muss ich einfach noch ein wenig Werbung zum Ende des Beitrags unterbringen, ich habe da nämlich eben ein ebenfalls absolutes finanzkrisentaugliches und weihnachtsfähiges Besser-geht’s-nicht-mehr-und-billiger-auch-nicht-Wahnsinnsangebot entdeckt:

CANCOM bietet als „Die Tools für Silverlight 2“ ein komplettes Paket aus Expression Blend 2 (für RIA-Development/Design), Expression Encoder 2 (für HD-Online-Videoencoding mit VC-1 und H.264) plus eine ca. 10 Stunden lange Einführungs-DVD von Sascha Wolter an. Das Angebot gilt nur solange Vorrat reicht, was immer das heißen mag. Und der Preis: Nur 284,- Euro netto (ca. 340,- Euro inkl. MwSt). Hmm, daran wird dann eigentlich auch wieder fast nichts verdient… Egal, es ist Weihnachten.

Video: Was ist neu in Windows 7 [kostenloser Download]

18.12.2008 07:46:14 | Kay Giza

Eine der für mich als alten IT-Pro (<- das ich das jemals schreiben würde ;-)) interessantesten Sessions von vielen die ich gesehen habe auf dem Microsoft Technical Summit 2008, war die Session: Was ist neu in Windows 7

Durch die Session "Was ist neu in Windows 7" führten gekonnt Daniel Melanchthon & Frank Fischer von Microsoft. Microsoft stellte vor wenigen Wochen auf der Professional Developers Conference (PDC) in Los Angeles der Welt die nächste Version seines Clientbetriebsystems vor. Windows 7 baut auf die Grundlagen auf, die mit Windows Vista und Windows Server 2008 geschaffen wurden und bringt viele neue Funktionen mit. Natürlich fallen die veränderten Optik, Unterstützung für Multitouch, die neue Taskbar, neue Suchfunktionen, Jump Lists, und vieles mehr als erstes auf. Unter der Oberfläche verbergen sich aber weitreichende Änderungen. Wenn Sie nicht die Gelegenheit nutzen konnten, auf dem Technical Summit 2008 Windows 7 zum ersten Mal in Deutschland auf einer großen Veranstaltung sehen zu können, kann ich Ihnen die Video-Aufzeichnung nur empfehlen. Microsoft zeigt eine pre-beta Ausgabe, um damit einen Einblick in den aktuellen Entwicklungsstand zu geben und aufzuzeigen, in welche Bereiche der Entwicklung Microsoft investiert und was Kunden von Windows 7 an neuen Funktionen erwarten können. Entwickler können sich zusätzlich im Windows Developer Center informieren.

Die Aufzeichnung der Session steht als Video kostenfrei und ohne Registrierung zur Verfügung: Was ist neu in Windows 7



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

Installieren Sie das ausserplanmaessige Sicherheitsupdate fuer Internet Explorer vom 17.12.2008

18.12.2008 07:15:00 | Kay Giza

Die Sicherheit unserer Kunden und Partner ist für Microsoft ein vordringliches Anliegen. Um diese beim sicheren Betreiben Ihrer IT-Infrastruktur optimal zu unterstützen, hat Microsoft gestern Mittwoch, den 17. Dezember 2008 eine außerplanmäßige Sicherheitsaktualisierung veröffentlicht. Diese betrifft alle unterstützten Versionen von Microsoft Internet Explorer. Solche außerplanmäßigen Sicherheitsaktualisierungen werden von uns nur aus wichtigen Gründen veröffentlicht. Die seit gestern stark steigende Anzahl an Angriffen macht diesen Schritt aus unserer Sicht nötig... [... mehr]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Kostenfreie MSDN Service-Hotline für Entwickler
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

Der perfekte Zeitpunkt zum Source Code veröffentlichen?

18.12.2008 02:09:54 | Robert Mühsig

Mit dem ASP.NET MVC Demoprojekt "Oxite" hat Microsoft viel Wirbel gemacht. Auf der einen Seite ist es sehr schön den Source Code zu veröffentlichen, auf der anderen Seite hat Microsoft auch harte Kritik von den Alpha Geeks bekommen. Sollte man ein Projekt erst dann veröffentlichen wenn es "perfekt" ist?

(more…)

ShareThis

Jahresrueckblick 2008: MSDN in Zahlen: 25

17.12.2008 21:03:54 | Kay Giza

Nächste Station beim Jahresrückblick von MSDN Online: Futter vom Info-Bring-Dienst. [...mehr]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Kostenfreie MSDN Service-Hotline für Entwickler
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

EMIC Celebrates 5th Anniversary

17.12.2008 12:32:00 | Lori Grosland

Back in October I got the chance to go back to Aachen and visit EMIC - the European Microsoft Innovation Center.  To celebrate its 5th anniversary, EMIC hosted a reception at its offices, where guests had the opportunity to talk to researchers, check out demos of some of their current projects and enjoy food and drinks.  I had my video camera with me and captured some of the fun.

EMIC is a Microsoft Research & Development facility that focuses on collaborative applied research in Europe in the areas of enterprise, mobility, home, security, software verification and embedded systems.

For more information on EMIC research, projects and partners, visit:

http://www.microsoft.com/EMIC

Weihnachtsgeschenk für Fotofreunde: 60 Bilder im 10er-Format gratis

17.12.2008 09:13:00 | Steffen Ritter

Die Kollegen von MSN haben sich was Nettes ausgedacht, um Fotofreunden mit Digitalkamera eine Weihnachtsfreude zu machen. Bis Endes des Jahres schenkt MSN zusammen mit Fuji jedem 60 kostenlose Abzüge im 10er-Format. Nur Versandkosten und eine kleine Bearbeitungsgebühr kommen dazu, insg. circa 3,50 Euro.

Wer noch bis zum 19. Dezember bestellt (also Freitag diese Woche) sollte die Fotos rechtzeitig zu Weihnachten erhalten.

Foto-Geschenk von MSN

Hier entlang zum Jahresrückblick 2008 von MSN, mit der Foto-Aktion 60 Bilder gratis: http://specials.de.msn.com/rueckblick/

Ach ja, Profis verwalten ihre Bilder natürlich mit Expression Media (ehemals iView MediaPro)... Gibt's für Mac und Windows.

Jahresrueckblick 2008: MSDN in Zahlen: 7780

16.12.2008 20:56:49 | Kay Giza

Etappe Zwölf des MSDN-Jahresrückblicks, der heute einen Abstecher in die Bibliothek macht. [...mehr]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Kostenfreie MSDN Service-Hotline für Entwickler
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

Exchange Server 2007 - Import-Mailbox Statuscode -2147219956

16.12.2008 16:42:10 | Lars Keller

Reminder für mich:

Wer beim Import-Mailbox Befehl den Statuscode -2147219956 bekommen sollte, sollte mal schauen wie groß das *.pst File war. Bei mir kam der Fehler ab 2gb PST Größe.



This weblog is sponsored by netcreate OHG.

Exchange Server 2007 - Import-Mailbox Statuscode -2147219956

16.12.2008 15:42:10 | Lars Keller

Reminder für mich:

Wer beim Import-Mailbox Befehl den Statuscode -2147219956 bekommen sollte, sollte mal schauen wie groß das *.pst File war. Bei mir kam der Fehler ab 2gb PST Größe.

Wie man von einem UserControl auf ein anderes zugreift?

16.12.2008 11:43:17 | Albert Weinert

Am besten gar nicht!

Eine der Standard-Fragen von Foren und Newsgroups scheint mir zu sein wie man von Control A auf Control B zugreift. Oft übergreifend zwischend UserControls welche auf einer WinForm/WebForm eingesetzt wird.

Bei ASP.NET wird dann oft versucht mit FindControl() dass jeweilige Control auf welches man nun unbedingt zugreifen muss zu suchen um dieses dann, sofern gefunden, entsprechend den Vorstellungen zu bearbeiten.

Dann Frage ich mich, ob der Sinn von Objekt-Orientierung in Ansätzen verstanden wurde? Soll dieses UserControl wirklich nur auf dieser speziellen Seite mit eingesetzt werden? Warum dann ein UserControl? Was wird gemacht wenn das UserControl mal auf einer anderen Seite eingesetzt wird? Wird dann je nach Seite entschieden welches andere Control gebraucht wird? und und und.

Warum denn nicht?

Durch die Verwendung eines UserControls erhält man eine potentiell wiederverwendbare Komponente die sich an verschiedenen Stellen einsetzen lässt. Damit dies jedoch funktioniert sollte ein Control so wenig wie möglich von seiner Umgebung wo es eingesetzt wird wissen, am besten gar nichts.

Doch es wird häufig in einem Control direkt auf die Datenbank zugegriffen, aus einem Control wird versucht zu erahnen in welchem Kontext es läuft um Entscheidungen zu treffen. Z.B. ein- und ausblenden von fremden - nicht im Control verwendeten - Controls oder fremden Text zu Modifizieren oder was auch immer nicht im Einflussbereichs der Control liegt.

Damit ist eine Wiederverwendung so gut wie unmöglich und kann direkt sein gelassen werden. Man hat eine sehr enge Kopplung an die Umgebung. Früher oder später knallt einem das Control um die Ohren (falsche Daten, keine Änderung des fremdem Controls etc.), man ärgert sich, schiebt Frust und früher ohne Objektorientierung war eh alles besser.

Ein paar Faustregeln

What Happens in Vegas, stays in Vegas.

  • Es geht das Control nichts an wo die Daten herkommen.
  • Es geht das Control nichts an wo es eingesetzt wird.
  • Es geht das Control nichts an was andere Controls machen
  • Es geht das Control nichts an welche Entscheidungen aufgrund bestimmter Zustände des Controls gemacht werden.
  • Die Steuerung und Reaktion auf ein Control übernimmt eine übergeordnete Instanz wie z.B die Seite auf der das Control verwendet.
  • Es geht die übergeordnete Instanz nichts an was im Control im Detail passiert.
  • Das Control (bzw. dessen Entwickler) entscheidet was für Verwendung wichtig ist und kommuniziert nur dies nach außen.

Die ASP.NET WebControls machen zum Beispiel machen es so, die WinFoms-Controls ebenso auch Control-Libraries arbeiten so. Warum? Damit sie überall eingesetzt werden können. Also spricht doch nichts dagegen die eigenen Sachen auch so zu gestalten.

 

Technorati-Tags: ,,,

Ein Walktrough für die Neuerungen (C# 4.0) in der Office Programmierung

16.12.2008 09:54:03 | Lars Keller

Auf dem Blog des VB Team kann man nachlesen, wie sich die kommenden neuen Features auf die Office Programmierung auswirken.

Walkthrough: Office Programmability in Visual Basic and C# in VS 2010 (Lisa Feigenbaum)



This weblog is sponsored by netcreate OHG.

Ein Walktrough für die Neuerungen (C# 4.0) in der Office Programmierung

16.12.2008 08:54:03 | Lars Keller

Auf dem Blog des VB Team kann man nachlesen, wie sich die kommenden neuen Features auf die Office Programmierung auswirken.

Walkthrough: Office Programmability in Visual Basic and C# in VS 2010 (Lisa Feigenbaum)

Exchange Server 2007 - Import-Mailbox Statuscode -2147219956

16.12.2008 06:42:01 | Lars Keller

Reminder für mich:

Wer beim Import-Mailbox Befehl den Statuscode -2147219956 bekommen sollte, sollte mal schauen wie groß das *.pst File war. Bei mir kam der Fehler ab 2gb PST Größe.

Ein Walktrough für die Neuerungen (C# 4.0) in der Office Programmierung

15.12.2008 23:54:00 | Lars Keller

Auf dem Blog des VB Team kann man nachlesen, wie sich die kommenden neuen Features auf die Office Programmierung auswirken.

Walkthrough: Office Programmability in Visual Basic and C# in VS 2010 (Lisa Feigenbaum)

Jahresrueckblick 2008: MSDN in Zahlen: 10

15.12.2008 20:43:19 | Kay Giza

Die Folge 11 der MSDN-Rückschau aufs Jahr 2008 wirft einen Blick auf Programme zum Ausprobieren. [...mehr]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Kostenfreie MSDN Service-Hotline für Entwickler
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

Aufzeichnungen vom Technical Summit verfügbar

15.12.2008 19:00:00 | Jens Häupel

Die Video-Capturings und PPTs von der Xtopia und dem Technical Summit sind!  Die Seiten sind komplett frei zugänglich und sowohl die Videos als auch die Folien können heruntergeladen werden.

URLs sind wie folgt:

Xtopia :

http://www.microsoft.com/germany/msdn/events/archiv/xtopia08/default.mspx

Technical Summit:

http://www.microsoft.com/germany/msdn/events/archiv/technicalsummit08/default.mspx

Besonders interessant sind sicherlich die Sessions von Daniel Melanchthon zu den Neuerungen in Windows 7 oder Entwickeln für Multiprozessorsysteme von Steve Teixera.

by the way: Ich hatte gedacht, dass ein Chalk Talk für VSTO eine Prima Gelegenheit gewesen wäre, eine rege Frage- und  Antwort-Stunde zu produzieren. Leider hat mir die Realität sowohl bei der Basta als auch beim TechSummit gezeigt, dass diese Form von Vortrag hierzulande wohl noch nicht so ganz verstanden wird. Schade eigentlich. Übrigens werde ich mich nach fast 6 Jahren langsam vom Thema zurückziehen und demzufolge hier weniger Postings haben. Peter Monadjemi, Lars Keller, oder Christian Gross sind gute Quellen bzw. Trainer und Consultants für Informationen rund um das Thema, die man auch immer wieder auf entsprechenden Konferenzen trifft.

Silverlight & 3D: Viewer für Photosynth und andere Spielerein

15.12.2008 17:04:09 | Robert Mühsig

Das Photosynth Team hat einen Silverlight Viewer (der allerdings noch etwas buggy ist) veröffentlicht, in dem man fast alle Features von Photosynth nutzen kann:

image

Jeder der mit Silverlight bereits rumgespielt hat, wird festgestellt haben, dass 3D nicht direkt (wie in WPF) unterstützt wird. Unter der “About Page” findet sich auch ein netter Abschnitt, der erläutert, wie man in dem Photosynth Viewer trotzdem ein 3D Gefühl bekommt:

Geek Stuff

Silverlight 2 does not support 3D, so in order to achieve the 3D effects used in this viewer we are utilizing a technique called Affine Texture Mapping where the images are drawn from many triangles, and then we are approximating the texture mapping. If you want to see the triangles we are drawing, press the ‘t’ key and navigate around in the viewer. Hit ‘t’ again to turn off the triangles. :-)

Siehe Wiki für ein paar weitere Informationen.
Wenn man “t” drückt, sieht man auch die Dreiecke:

image

Steffen Ritter hat zudem heute über noch ein nettes 3D Rendering Beispiel in Silverlight gebloggt:

We all live in a rendered Submarine… noch ein schniekes 3-D-Beispiel in Silverlight!

image

Fazit des Posts: Silverlight kann 3D Content darstellen, allerdings noch lange nicht so einfach wie in WPF. In Silverlight 3 könnte sich das allerdings bessern.

ShareThis

Michael Greth - Sharepoint & Web 2.0

15.12.2008 12:40:00 | Lori Grosland

Auf dem Technical Summit in Berlin habe ich mit Michael Greth gesprochen.  Michael ist Sharepoint MVP (Micorost Most Valuable Professional) und arbeitet als Trainer, Berater und Freelancer.  Er hat sich in 2001 auf Sharepoint spezialisiert und schreibt ein Sharepoint Blog und betreibt die Sharepoint Community. In diesem Video erzählt Michael über Sharepoint, was er daran so spannend findet, warum Sharepoint eine prima Web2.0 Plattform ist und auch über das Podcasting Kit für Sharepoint.

Michaels Blog:
http://weblogs.mysharepoint.de/mgreth/

Michaels Sharepoint Podcast
http://weblogs.mysharepoint.de/sharepointpodcast/

Sharepoint Community:
http://www.mysharepoint.de/

Podcasting Kit für Sharepoint auf Codeplex:
http://www.codeplex.com/pks

16.12.08 Treffen der .NET Developer Group Braunschweig - Usability als Wettbewerbsfaktor

15.12.2008 11:59:09 | Lars Keller

 

www.dotnet-braunschweig.de

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

Ich freue mich sehr das mein langjähriger Geschäftspartner und UI Experte Timo Runge einen Vortrag zu Usability in der Softwareentwicklung hält:

Usability-Engineering als Wettbewerbsfaktor

"Wenn Funktionalität unerreichbar ist..." - dann sollten Sie über Ihre Usability nachdenken. In zunehmenden Maße geben eine gute GUI und Usability-Aspekte den Ausschlag bei der Entscheidung eines potentiellen Kunden für oder gegen eine Software-Lösung. Die Nutzerakzeptanz entscheidet über die Effizienz der eingesetzten Software. Aus diesem Grund sollte Usability Engineering auch bei kleineren Projekten eine Rolle spielen. In seinem Vortrag gibt Timo Runge (netcreate OHG) einen Überblick zum Thema Usability Engineering und zeigt, wie Entwickler schon mit Kenntnis einiger Grundlagen positive Effekte erzielen.

Weitere Informationen unter www.dotnet-braunschweig.de.

Wie immer ist jeder herzlich willkommen!



This weblog is sponsored by netcreate OHG.

16.12.08 Treffen der .NET Developer Group Braunschweig - Usability als Wettbewerbsfaktor

15.12.2008 10:59:09 | Lars Keller

 

www.dotnet-braunschweig.de

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

Ich freue mich sehr das mein langjähriger Geschäftspartner und UI Experte Timo Runge einen Vortrag zu Usability in der Softwareentwicklung hält:

Usability-Engineering als Wettbewerbsfaktor

"Wenn Funktionalität unerreichbar ist..." - dann sollten Sie über Ihre Usability nachdenken. In zunehmenden Maße geben eine gute GUI und Usability-Aspekte den Ausschlag bei der Entscheidung eines potentiellen Kunden für oder gegen eine Software-Lösung. Die Nutzerakzeptanz entscheidet über die Effizienz der eingesetzten Software. Aus diesem Grund sollte Usability Engineering auch bei kleineren Projekten eine Rolle spielen. In seinem Vortrag gibt Timo Runge (netcreate OHG) einen Überblick zum Thema Usability Engineering und zeigt, wie Entwickler schon mit Kenntnis einiger Grundlagen positive Effekte erzielen.

Weitere Informationen unter www.dotnet-braunschweig.de.

Wie immer ist jeder herzlich willkommen!

We all live in a rendered Submarine... noch ein schniekes 3-D-Beispiel in Silverlight!

15.12.2008 09:17:00 | Steffen Ritter

Diesmal kein Quake in Silverlight aber stattdessen interaktiv, d.h. das Objekt kann mit der Maus gesteuert werden: 3-D-Submarine in Silverlight.

Das Beispiel basiert auf der Silverlight-3-D-Engine Balder und verwendet die Kit3D-Engine für Silverlight. Beide sind kostenlos bzw. auf Microsofts Open Source Website CodePlex zum Download verfügbar.   

Quelle: http://blogs.microsoft.co.il/blogs/adlaim/archive/2008/12/14/another-3d-silverlight-sample.aspx

16.12.08 Treffen der .NET Developer Group Braunschweig - Usability als Wettbewerbsfaktor

15.12.2008 01:59:00 | Lars Keller

 

www.dotnet-braunschweig.de

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

Ich freue mich sehr das mein langjähriger Geschäftspartner und UI Experte Timo Runge einen Vortrag zu Usability in der Softwareentwicklung hält:

Usability-Engineering als Wettbewerbsfaktor

"Wenn Funktionalität unerreichbar ist..." - dann sollten Sie über Ihre Usability nachdenken. In zunehmenden Maße geben eine gute GUI und Usability-Aspekte den Ausschlag bei der Entscheidung eines potentiellen Kunden für oder gegen eine Software-Lösung. Die Nutzerakzeptanz entscheidet über die Effizienz der eingesetzten Software. Aus diesem Grund sollte Usability Engineering auch bei kleineren Projekten eine Rolle spielen. In seinem Vortrag gibt Timo Runge (netcreate OHG) einen Überblick zum Thema Usability Engineering und zeigt, wie Entwickler schon mit Kenntnis einiger Grundlagen positive Effekte erzielen.

Weitere Informationen unter www.dotnet-braunschweig.de.

Wie immer ist jeder herzlich willkommen!

Speed für die Anwendung durch das vorladen der Assemblys

14.12.2008 23:17:13 | Paul Mizel

Hab da was Interessantes gefunden, wird die Anwendung mal zu langsam Aufgerufen, hilft folgender Codeausschnitt. Thread jitter = new Thread(() => {   foreach (var type in Assembly.Load("MyHavyAssembly, Version=1.8.2008.8," +            " Culture=neutral, PublicKeyToken=8744b20f8da049e3").GetTypes())   {     foreach (var method in type.GetMethods(BindingFlags.DeclaredOnly |                         BindingFlags.NonPublic |                         BindingFlags.Public | BindingFlags.Instance |                         BindingFlags.Static))     {       System.Runtime.CompilerServices.RuntimeHelpers.PrepareMethod(method.MethodHandle);     }   } }); jitter.Priority = ThreadPriority.Lowest; jitter.Start(); http://www.codeproject.com/KB/dotnet/pre_JIT.aspx

Danke: Frohes Fest und ein Guten Rutsch

14.12.2008 11:55:39 | Christian Binder

wünsche ich allen :-) Warum schon jetzt? Heute bekomme ich die Schrauben aus meinem Fuss, die ich vorletztes Jahr bekommen habe.
Hab ich sowieso schon immer weiter verschoben … kennt man ja, wenn man sich besonders auf was freut, gibt es immer wichtigere Dinge…. :-)
Na ja, jetzt dann doch.

Ich möchte mich auf diesem Weg ganz besonders bei Allen bedanken, die in der VSTS Community so tatkräftig an dem Thema ALM und VSTS dran sind!
Auch freut  mich immer wieder Eurer Feedback, was mir so wichtig ist, da es uns die Möglichkeit gibt, die Themen zu adressieren, die für Euch relevant sind.  
Weiter so :-)

Also in diesem Sinne ein Frohes Fest und einen Guten Rutsch

Chris

PS: Bin ab dem 12.1 wieder online :-)

VSTS Content MAP: Video Aufzeichnungen vom Tech Summit 2008 in Berlin und Webcast

14.12.2008 11:39:47 | Christian Binder

Wer über die Feiertage doch mal Lust auf ein Session vom Tech Summit hat kann sich hier die ganzen Aufzeichnungen anschauen.
Alle VSTS Session habe ich hier direkt verlinkt:

Viel Spass

Chris

Using OPENROWSET to read large files into SQL Server

13.12.2008 10:19:00 | Ozgur Aytekin

Using OPENROWSET to read large files into SQL Server

The BULK option was added to T-SQL in SQL Server 2005 and it persists in SQL Server 2008. When using SQL Server 2000 it was possible to read and write to the file system using the sp_OA_Create and sp_OA_Method extended stored procedures. These XPs continue to work, but are disabled by default because of security concerns and it is a better practice to use more secure capabilities like OPENROWSET when they are available.

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

WSPBuilder Extensions 1.0.3 - Visual Studio Addin

13.12.2008 10:14:00 | Ozgur Aytekin

A new version of WSPBuilder Extensions 1.0.3 for Visual Studio has been released on codeplex.

- Now uses the WSPBuilder 0.9.8.0408 version.
- The Addin has been totally rewritten and should now work properly. A number of bugs fixed.
- The WSPBuilder menu is now available from the Tools menu.
- The shortcut key bug now fixed.
- A new command "Copy to GAC" Added.
- You are now able to use “Copy to 12 hive” on project, selected folder or files under the 12 hive folder.
- The WebPart Item template has been updated.

http://keutmann.blogspot.com/2008/07/wspbuilder-extensions-103-visual-studio.html

Using Page Level Restore as a Disaster Recovery Procedure in SQL Server 2005

13.12.2008 10:11:00 | Ozgur Aytekin

Using Page Level Restore as a Disaster Recovery Procedure in SQL Server 2005

Let's have a look at how to use page-level restores on a corrupted database. I will still be using the Northwind database for this tip - except that the database version that I will be using is corrupted. Note that it is not that easy to generate a corrupt database in your production environment so you would have to create one on your own to test these procedures. What I did was to use a hex editor to modify the values of the database file. This would introduce inconsistencies in the database file causing it to be corrupt. You would need to do some trial-and-error to get a specific page corrupted. In my case, I have chosen to corrupt a data page affecting the Orders table as it would be easy to find the text values of the records inside this table (as compared to the Order Details table that I have been using in the previous examples which contains mostly numerical data) from the hex editor.

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

Jahresrueckblick 2008: MSDN in Zahlen: 1120

12.12.2008 20:38:38 | Kay Giza

Zehnte Station beim MSDN-Jahresrückblick: Downloads für Entwickler. [...mehr]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Kostenfreie MSDN Service-Hotline für Entwickler
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

BDD dein MVC

12.12.2008 00:08:00 | Sebastian Jancke

Vor ca. zwei Wochen habe ich mit dem ASP.NET MVC Framework im Rahmen eines verteilten Architektur-Prototypen begonnen. Ich war ich natürlich gespannt, ob sich mit dem MVC Framework auch nach BDD entwickeln lässt. Dies ist schließlich das Versprechen des MVC-Teams: Testbarkeit.

Ich kann sagen, dass nicht zu viel versprochen worden ist. Die Arbeit mit dem MVC Framework und die Erstellung einer Web-UI damit lässt sich problemlos mit Behavior Driven Development durchführen. Nachdem Albert schon einige seiner Erweiterungen vorgestellt hat, möchte ich mich dem anschließen. Davon abgesehen ist dies ein guter Zeitpunkt, einmal Top-Down einen Controller mittels BDD zu entwickeln und damit BDD an einem konkreten Beispiel zu demonstrieren.

Eingesetzte Frameworks

Zunächst einmal ist es wohl fast Pflicht das Projekt MvcContrib herunterzuladen, da es viele “fehlende” Erweiterungen mitbringt. Fehlend ist dabei in Anführungszeichen, weil sich das MVC Framework durch sehr gute Erweiterbarkeit auszeichnet: Factories für Controller, Routen und auch die komplette Render-Engine lassen sich austauschen. MvcContrib bringt eine Reihe von fertigen Implementierungen für IoC-Container (Castle Windsor, Spring.NET, …) und auch Render-Engines (Brails, NHaml, …) mit. Als Render-Engine setzte ich ASP.NET ein, Windsor ist mein IoC Container der Wahl.

Darüber hinaus kommt für Unit- und Integrationstests xUnit mit Björns xUnit.BDDExtensions zum Einsatz.

Entwicklung eines Controllers anhand einer Userstory

Für diesen Artikel habe ich eine Userstory gekürzt: Wenn der Anwender die Webseite “Index” aufruft, soll ihm “alle” gespeicherten Produkte auf der View “Index” angezeigt werden.

Zunächst erstellen wir also eine Specification für diese Userstory. Hier empfiehlt es sich Björns Templates für den Resharper zu installieren. Eine Specification spiegelt immer genau einen Kontext einer Userstory wieder. Diese Specification erzeugt einen ShopController (zunächst ohne weiteren Kontext). Bisher existiert der ShopController nicht. Diesen legen wir dann an. Damit haben wir in unserer Specification vorerst alles arrangiert (der Arrange-Teil von AAA). Wir können die Specification nun ausführen. Nun fügen wir Verhalten hinzu (der Act-Teil von AAA): die Aktion “Index” wird aufgerufen. Diese aufgerufene Methode des System-Under-Test fügen wir nun in die Klasse ShopController ein. Nun kompiliert die Specification wieder und wir können diese wiederum ausführen. Nun ist es an der Zeit, Beobachtungen einzufügen (der Assert-Teil von AAA). Nach der Erstellung einer Beobachtung in der Specification führen wir diese aus (Resultat: Failure, Rot), danach implementieren wir soviel, bis die Specification wieder grün wird. Anschließend fügen wir inkrementell weitere Beobachtungen ein und erfüllen diese wie beschrieben.

Im optimalen Fall beschreibt eine Userstory immer genau einen Kontext, andernfalls müsste diese noch feiner zerlegt werden. Eine Specification entspricht wie bereits gesagt genau einem Kontext, der sich im Namen der Specification samt Beschreibung der Handlung widerspiegelt. Unüblich für C# und Ähnliche ist die Verwendung von Unterstrichen anstelle von Camel Casing. Trotzdem sollte dieser Stil genutzt werden, da er die Lesbarkeit auch in den Testrunnern und Methoden-Übersichten deutlich erhöht.

Bei der Erstellung des Kontext werden auch alle Abhängigkeiten initialisiert. Dabei versteckt die Basisklasse für Specifications die Mechanik (Mocking Framework, …) zur Erzeugung von Abhängigkeiten. Speziell für das MVC Framework habe ich die Basisklasse “ControllerInstanceContextSpecification” angelegt, da diese die Testhelper von MvcContrib versteckt, um einen Controller vollständig zu initialisieren.

Als Beobachtungen sind grundsätzlich Überprüfung des Ergebnisses oder Überprüfung von Methodenaufrufen und Exceptions denkbar. Für Ergebnisse werden diese nach der Handlung in einem privaten Feld der Specification gespeichert (hier: “result”). Für die Überprüfung von Methodenaufrufen und Exceptions ist ein Mocking Framework nötig, das den AAA-Stil unterstützt (zB Rhino.Mocks). Ältere Record-Reply Varianten funktionieren damit nicht. Zur erhöhten Lesbarkeit werden Assertions auf Werten und Methodenaufrufen hinter besser lesbaren Extension-Methods versteckt. Beobachtungen erfüllen somit auch die Forderung, pro “Test” nur eine Assertion auszuführen – andernfalls sind Fehlschläge in Tests schwerer zu lokalisieren.

Der beschriebene Quelltext

Hier nun die komplette Specification:

   1: [Concern(typeof (ShopController))]
   2: public class when_a_shop_controller_handles_the_index_action :
   3:     ControllerInstanceContextSpecification<ShopController>
   4: {
   5:     private IDiscService discService;
   6:     private ActionResult result;
   7:  
   8:     protected override void EstablishContext()
   9:     {
  10:         discService = Dependency<IDiscService>();
  11:  
  12:         discService.WhenToldTo(x => x.FindDiscsForSale())
  13:             .Return(new List<Disc>
  14:                         {
  15:                             new Disc(3698, "U2 / All the best", 
  16:                                      2003,
  17:                                      "classical"),
  18:                         });
  19:     }
  20:  
  21:     protected override ShopController CreateSut()
  22:     {
  23:         return new ShopController(discService);
  24:     }
  25:  
  26:     protected override void Because()
  27:     {
  28:         result = Sut.Index();
  29:     }
  30:  
  31:     [Observation]
  32:     public void should_redirect_to_search_view()
  33:     {
  34:         result.should_be_rendered_view("Index");
  35:     }
  36:  
  37:     [Observation]
  38:     public void should_retrieve_discs_from_disc_service()
  39:     {
  40:         discService.AssertWasCalled(x => x.FindDiscsForSale());
  41:     }
  42: }

Die Implementierung des Controllers sieht dann wie folgt aus:



   1: [HandleError]
   2: public class ShopController : Controller
   3: {
   4:     private readonly IDiscService service;
   5:  
   6:     public ShopController(IDiscService service)
   7:     {
   8:         this.service = service;
   9:     }
  10:  
  11:     public ActionResult Index()
  12:     {
  13:         /* ...
  14:         */
  15:  
  16:         var model = new ShopViewModel();
  17:         model.Discs = service.FindDiscsForSale();
  18:         return View("Index", model);
  19:      }
  20: }

Zu guter letzt ist noch die neue Basisklasse für Instance-Specifications nötig. Diese ist speziell für Controller des MVC Frameworks und versteckt die Mechanik der Testhelper von MvcContrib bei der Initialisierung eines Controllers.



   1: public abstract class ControllerInstanceContextSpecification<T> : InstanceContextSpecification<T>
   2:     where T : Controller
   3: {
   4:     protected override void InitializeSystemUnderTest()
   5:     {
   6:         base.InitializeSystemUnderTest();
   7:         new TestControllerBuilder().InitializeController(Sut);
   8:     }
   9: }

Jahresrueckblick 2008: MSDN in Zahlen: 30

11.12.2008 20:32:17 | Kay Giza

Tag 9 des MSDN-Jahresrückblicks. Thema heute: Schreib’ mal wieder! [...mehr]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Kostenfreie MSDN Service-Hotline für Entwickler
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

Koblenzer .NET User Group 17.12.2008: 15 Minuten Ruhm - Erzähl dem Nikolaus deinen Vortrag

11.12.2008 16:17:41 | Andre Kraemer

15 Minuten Ruhm!
Als Kind mussten wir dem Nikolaus ein Gedicht vortragen um Nüsse, Süßigkeiten oder vielleicht sogar ein Geschenk zu bekommen. Wer jetzt feuchte Augen bei dem Gedanken an die "gute alte Zeit" bekommt, ist bei der .NET User Group Koblenz im Dezember genau richtig! Denn auch uns wird der Nikolaus besuchen. Ein Gedicht will er allerdings nicht hören. Ein kleiner Vortrag von maximal 15 Minuten (auch gerne weniger) sollte es schon sein. Als Belohnung winken, passend zur Jahreszeit, unter anderem Bücher von MS Press und Entwickler Press oder Software Lizenzen von Artiso, DevExpress, Infragistics und voraussichtlich auch Jetbrains. Weitere Sponsoren sind aktuell in Verhandlung!


Das Thema darfst du übrigens selber aussuchen. Es könnte aber z. B. folgendes sein:

Vorstellung einer Komponente oder einer Library

  • Ein Architektur Tipp
  • Die Einführung in ein Cooles Tool
  • Dein Lieblings .NET Snipped
  • Ein Stück Code, was du dieses Jahr geschrieben hast und auf das du besonders stolz bist
  • Ein cooler Visual Studio Hack
  • Weisheiten zum Projektmanagement
  • Das Rezept deines Lieblingsessens
  • ...


Deiner Kreativität sind keine Grenzen gesetzt! Maile dein Thema einfach an info@dnug-koblenz.de. Wir werden es anschließend auf die Homepage packen um so zu verhindern, dass wir 20 Vorträge über den Geheim-ShortCut "F1" im Visual Studio hören ;-) Und nur keine falsche Scheu! Wirklich jeder Vortrag ist willkommen. Aufwändige Folien und Samples sind auch nicht unbedingt notwendig. Wer gerne etwas mit Powerpoint vorbereiten möchte, findet im Mitgliedsbereich unserer Homepage unter den Downloads übrigens eine entsprechende Vorlage.
Im Anschluss an die Vorträge hat jeder Teilnehmer die Chance in geheimer Abstimmung Punkte für die Vorträge zu geben. Anschließend dürfen die Referenten in absteigende Reihenfolge Ihrer Punkte in den Sack des Nikolauses greifen. Und nur keine Scheu! Bei den Geschenken is jeder der mitmacht ist ein Gewinner, unabhängig von der Plazierung! Verlierer gibt es nur für die, die nicht vortragen wollen. Zu jenen kommt nämlich Knecht-Ruprecht mit Eclipse ... ähhh ... der Rute ;-)
Wenn du also schon immer mal ein Star sein wolltest, freuen wir uns auf deine Themenvorschläge an info@dnug-koblenz.de Wir freuen uns!

Anmeldung unter:https://www.xing.com/app/events?op=detail;id=285168

 

dnugnikolaus



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

Video-Archiv: Rückblick auf Xtopia und Technical Summit

11.12.2008 13:47:43 | Oliver Scheer

Knapp drei Wochen nach Ende der beiden Microsoft-Konferenzen „Xtopia 08“ und „Technical Summit 2008“ sind jetzt im MSDN Event-Archiv die Video-Aufzeichnungen aller in Berlin gehaltenen Vorträge abrufbar; außerdem die Vortragsfolien zahlreicher Referate. Insgesamt stehen fast 100 Präsentationen wahlweise als Download oder Video-Stream zu Verfügung.

Hier liegen die Videos

Silverlight Ad Publishing and Serving Guide veröffentlicht (Technische Infos zur Integration von Silverlight in AdServer-Systeme)

11.12.2008 09:03:00 | Steffen Ritter

Der “Silverlight Ad Publishing and Serving Guide” richtet sich an Anzeigennetzwerke, Anbieter von (Werbe-) Analysen und Firmen die Silverlight-basierte Anzeigen ausliefern und ist simpel gesagt eine umfangreiche Anleitung in der ausführlich beschrieben wird, wie Silverlight-Anzeigen in die entsprechenden Werbesysteme integriert werden können bzw. sollten, wie sie am besten ausgeliefert und veröffentlicht werden, und natürlich wie der Erfolg gemessen werden kann.

Es handelt sich dabei um die Integration, Auslieferung und Analyse fertiger Anzeigen in gängige AdServer – das Dokument geht nicht darauf ein, wie Silverlight-Anzeigen gestalten bzw. designed werden. Das ist ein anderes Thema zu dem in Kürze ebenfalls ein vergleichbares Dokument vorliegen sollte.  

Zum Download des Silverlight Ad Publishing and Serving Guide

Jahresrueckblick 2008: MSDN in Zahlen: 10340

10.12.2008 20:25:29 | Kay Giza

Der MSDN-Jahresrückblick, Episode 8: heute geht's um Veranstaltungen für Entwickler. [...mehr]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Kostenfreie MSDN Service-Hotline für Entwickler
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

Neue Version des kostenlosen Open Source Silverlight Toolkits veröffentlicht

10.12.2008 17:58:00 | Steffen Ritter

Ich schreibe ja wirklich ungern zwei Einträge am selben Tag aber das muss ich noch loswerden: Die neueste Version des Silverlight Toolkits steht ab sofort auf der Microsoft Open Source Site Codeplex zum Download bereit.

Das Silverlight Toolkit besteht u.a. aus einer Sammlung Controls, Komponenten und Tools die außerhalb des offiziellen Release-Zyklus (der Zeitplan in dem wir neue Updates und Versionen veröffentlichen) erscheinen. Das Silverlight Toolkit bringt damit neue Funktionalität schneller „unters Volk“ bzw. an die zahlreichen Silverlight RIA-Designer und –Entwickler. Dieser erste Release enthält den kompletten Sourcecode (!), Unit Tests, Beispiele und Dokumentation der zwölf neuen Controls aus den Bereichen Charting, Styling, Layout und User Input. 

Videos der Xtopia sind online; starring: Oliver Scheer, Florian Krüsch, Dirk Primbs, Sascha Wolter, Lori Grosland und viele mehr...

10.12.2008 15:28:00 | Steffen Ritter

Die Xtopia ist mittlerweile knapp einen Monat her und für alle die das Pech hatten, nicht dort sein zu können (sowie für alle die dort waren und sich zwangsläufig für eine Session pro Zeitfenster entscheiden mussten und dadurch eine andere tolle Session verpasst haben), und für alle anderen, die auch nur halbwegs an RIA- und Webtechnologien interessiert sind und… STOP! Nicht wieder zu viel reden: Hier die Links zu den Videos der vier Sessions die ich persönlich angestoßen habe:

  • Information Design: Intelligente Visualisierungen in interaktiven Medien
    Mit den Augen denken: Informationsdesign und interaktive Visualisierung machen abstrakte Daten sinnlich begreifbar. In dieser Sitzung werden aktuelle Strömungen und Zukunftstrends anhand von Anwendungsbeispielen diskutiert. Referentin: Moritz Stefaner
  • Typisch Designer: Klischees oder Wirklichkeit
    Sie tragen schwarze Brillen, sind nikotin- und koffeinabhängig, kreativ, jung und dynamisch. Soweit die Klischees, aber wie sind sie wirklich? Was geht in ihren Köpfen vor und wie sehen ihre Schreibtische aus? Haben sie ein Leben neben der Arbeit, und wenn ja, was fangen sie damit an? Referentin: Viola Möller
  • Silverlight 2: Der Design-Workflow in der Praxis
    Am Beispiel eines Silverlight-Projekts wird der komplette Workflow vom Design bis zur Implementierung dargestellt (übrigens die Session mit den meisten Besuchern auf der gesamten Xtopia08). Referent: Sascha Wolter
  • Design and Crowdsourcing: "Kreative Kompetenz" oder "Mittelmaß der Masse"?
    Mit Crowdsourcing lässt sich die “Kreativität der Vielen” zum Vorteil für Unternehmen, Organisationen und Selbständige nutzen. Auf Basis bestehender Markenführungstrategien entwickeln Menschen zielgenaue / erfolgreiche / marktrelevante Ideen, Designs, Produkte oder Kampagnen, deren (Konzeption und) Umsetzung wir (durchgängig) begleiten. Das bewusste Anregen von Gesprächen (Mundpropaganda) unterstützt zudem die Etablierung von Marken. Referent: Matias Roskos

Und weitere Videos die ich persönlich empfehlen möchte (was nicht heißt, dass die anderen Sessions schlecht waren, sondern nur dass ich die entsprechenden Sessions oder Videos noch nicht gesehen habe):

  • Silverlight und Web 2.0 auf Windows Mobile
    Benutzer mobiler Endgeräte erwarten heute zunehmend, dass Web-Inhalte auch auf diesen ohne größere Einschränkungen zur Verfügung stehen. RIA- und Web-2.0-Technologien bieten hier neue Möglichkeiten, aber auch spezielle Herausforderungen. Dieser Vortrag erläutert, was beim Einsatz von AJAX und Microsoft Silverlight auf Windows Mobile zu beachten ist. Referenten: Frank Prengel, Oliver Scheer
  • Silverlight 2: Rich Internet Applications
    Ein Rundumschlag zu Silverlight 2. Referent: Oliver Scheer
  • Popfly: Programmieren wie es sein sollte
    Wie lange braucht man heute für moderne mehrschichtige, dienstorientierte Webapplikation? Monate? Wochen? Falsch: Mit Popfly ist es eine Frage von Minuten! Grund genug, sich anzusehen wie es funktioniert, Popfly um eigene Building-Blocks zu erweitern. Referentin: Lori Grosland
  • WPF: Performance Optimierung von Anwendungen
    Die Windows Presentation Foundation ist ein sehr mächtiges Werkzeug, mit dem oft viele Wege ans Ziel führen. Dieser Vortrag geht der Frage nach, welche Herangehensweisen in WPF empfehlenswert sind und welche nicht. Ein Blick auf die Architektur, Best Practices und viele praktische Beispiele rund um das Design und technologische Ausgestalten moderner Applikationen helfen, noch effizienter mit den neuen Möglichkeiten dieser Technologie umzugehen. Referent: Dirk Primbs
  • Der lange Weg vom gedruckten Buchstaben zu Rich Internet Applications Teil 1
    Der lange Weg vom gedruckten Buchstaben zu Rich Internet Applications Teil 2
    Dank Rich Internet Applications (RIA) können die kreativen und visionären Ideen rund um Visualisierung und Interaktion endlich realisiert werden. Für die DPA als Marktführer in Visualisierung und Interaktion schon lange ein Thema, um gedruckte Inhalte und Mediencontent an spezifische Kundengruppen zielgruppengerecht zu vertreiben. Lernen Sie anhand der DPA Produktfamilie Möglichkeiten von RIAs kennen und machen Sie erste Erfahrungen mit Silverlight 2. Referenten: Meinolf Ellers, Florian Krüsch, Kalle Tewes

Die komplette Liste aller Videos der Xtopia-Sessions gibt es hier: http://www.microsoft.com/germany/msdn/events/archiv/xtopia08/videos.mspx 

MSDN Hotline macht Weihnachts-Pause

10.12.2008 13:00:47 | Kay Giza

Während der Weihnachtsfeiertage verabschiedet sich die MSDN Hotline für ein paar Tage in den verdienten Kurzurlaub.

Wenn’s also Dinge rund um MSDN gibt, die Sie schon immer wissen wollten, aber nie zu fragen wagten: entweder gleich zum Hörer bzw. zur Tastatur greifen oder gut merken – ab 7. Januar 2009 sind die Kollegen telefonisch oder per Windows-Messenger wieder für Sie da.
Bis zur Weihnachtspause steht Ihnen die Hotline noch bis einschließlich 23. Dezember 2008 in gewohntem Umfang kostenlos zur Verfügung.

Link: MSDN Hotline – Hilfe per Telefon und Windows Live Messenger Chat

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Kostenfreie MSDN Service-Hotline für Entwickler
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

Facade Pattern und ein Anwendungsbeispiel: SessionFacade

09.12.2008 21:50:00 | Peter Bucher

Vor einiger Zeit habe ich über das Strategy-Pattern und Singleton-Pattern geschrieben, dort sind auch Links zu der Definition und den Grundlagen von Designpatterns enthalten.

Die Definition des Facade Patterns (Oder Fassade Musters) liest sich wie folgt:

Das Facade-Muster bietet eine vereinheitlichte Schnittstelle für einen Satz von Schnittstellen eines Basis-
systems. Die Fassade definiert eine hochstufigere Schnittstelle, die die Verwendung des Basissystems vereinfacht.

Mit anderen Worten geht es darum den Zugriff auf ein System innerhalb einer Klasse zu kapseln und anhand einer neuen (vereinfachten / erweiterten) Schnittstelle zur Verfügung zu stellen.
Der SessionState wird im Arbeitsspeicher des Servers gehalten, darum lässt sich jeder - noch so komplexe - Typ darin speichern.
Über den Sinn und Unsinn der Verwendung des SessionStates, sowie dessen Funktionsweise habe ich schon einmal geschrieben.

Der SessionState ist nicht...

  • ...typsicher -> Allle Objekte werden von einer Auflistung von Objekten gehalten und zurückgegeben (Typ: object)
  • ...sicher gegen Tippfehler-> Beim Speichern kann der Name für eine Session bspw. "UserId" lauten und beim Aufrufen "UsrId".
  • ...kontextsicher -> Es gibt keine Garantie das beim Hinzufügen eines Objektes der Name irgendwo im Code noch nie verwendet wurd

Ein erster Schritt zur Besserung wäre die Einführung von Konstanten, die beim Abrufen der Session-Variablen benutzt werden, bspw.:



private const string _user = "User";

... (Irgendwo weiter im Code)

User user = Session[_user];
Session[_user] = <Wert>;

Wenn diese Konstanten global gehalten werden, ist man schon mal das Tippfehler-Problem los.
Jedoch ist die Vorgehensweise immer noch nicht typsicher und bietet auch keine anderen Vorteile.

Keine Typsicherheit bedeutet unter anderem, dass beim setzen der Variable bspw. ein String übergeben wird und beim auslesen versucht wird, diesen in ein DateTime zu casten - was einen Laufzeitfehler zur Folge hätte.

Für diese Situation ist das Facade-Pattern bestens geeignet.
Das Basissystem und dessen Schnittstellen stellt in diesem Fall die HttpSessionState-Klasse von ASP.NET dar.
Die Facade implementiert alles um die oben genannten Nachteile des direkten Zugriffs über die HttpSessionState-Klasse nach aussen hin zu beseitigen.

Folgend eine Implementation des SessionFacade bei der eine Session-Variable typisiert zur Verfügung gestellt wird:



/// <summary>
/// Stellt eine Fassade für den typsicheren Zugriff auf den HttpSessionState dar.
/// </summary>
public static class SessionFacade
{
    #region Private Constants

    private const string _user = "User";

    #endregion

    #region Private Helpermethods

    /// <summary>
    /// Gibt einen typisierten Sessionwert zurück
    /// </summary>
    /// <typeparam name="T">Typ des Sessionwertes</typeparam>
    /// <param name="name">Der Schlüsselname des Sessionwertes</param>
    /// <returns></returns>
    private static T GetSessionValue<T>(string name) {
        object value = HttpContext.Current.Session[name];
        if (value != null)
            return (T)value;

        return default(T);
    }

    /// <summary>
    /// Setzt einen Sessionwert
    /// </summary>
    /// <param name="name">Der Schlüsselname des Sessionwertes</param>
    /// <param name="value">Zu speicherndes Objekt</param>
    private static void SetSessionValue(string name, object value) {
        if (value == null)
            HttpContext.Current.Session.Remove(name);

        HttpContext.Current.Session[name] = value;
    }

    #endregion

    #region Public Properties

    /// <summary>
    /// Setzt den aktuellen Benutzer oder gibt in zurück
    /// </summary>
    public static User User {
        get {
            return GetSessionValue<User>(_user);
        }

        set {
            SetSessionValue(_user, value);
        }
    }

    #endregion
}

Benutzt werden kann die Facaden-Klasse z.B. so:



// Abrufen
User currentUser = SessionFacade.User;
if(currentUser != null)
    // Mach was mit dem User

// Setzen
SessionFacade.User = user;

Die Facade-Klasse und dessen Methoden sind statisch gehalten um einen einfachen Zugriff zu ermöglichen.
Durch die Eigenschaft "HttpContext.Current.Session" ist sichergestellt dass das SessionState-Objekt auch threadsicher ist.

Die Hilfsmethoden GetSessionValue und SetSessionValue kapseln den Zugriff auf den SessionState, geben bei Nichtvorhandensein eines Wertes jeweils Standardwerte zurück (DateTime.MinValue, Guid.Empty, 0, ...), ersparen Schreibarbeit und Casting in den Eigenschaften.
Die Eigenschaften können auch noch weitere Logik enthalten um bspw. auf leere oder ungültige Werte anders zu reagieren.

Im Normalfall gibt es einige Session-Variablen die nach aussen zur Verfügung gestellt werden, im Beispiel habe ich es bei einer belassen.
Das Hinzufügen von weiteren Zugriffsmöglichkeiten auf Session-Variablen erfolgt durch die Deklaration einer Konstante und
einer korrespondierenden Eigenschaft dazu.

Die Vorteile liegen klar auf der Hand:

  • Starke Typisierung beim Ein- und Auslesen mithilfe der Facade
  • Dadurch ist kein Casting mehr nötig
  • Schreibfehler beim Namen für die Session-Variablen sind - bei sorgfältiger Erstellung der Facade - praktisch ausgeschlossen
  • Der Zugriff erfolgt durch eine einzelne Klasse
  • Die konkrete Implementation wird durch die Facade vor dem Cientcode (Bspw. Codebehind einer Seite) versteckt und...
  • ...kann intern verändert und erweitert werden, ohne den Clientcode zwingend anpassen zu müssen

Viele von euch werden jetzt vielleicht denken:

  • Wozu der ganze Aufwand?
  • Für jede Session-Variable muss ich die SessionFacade-Klasse ändern?!

Nun, der Aufwand ist im Vergleich zum Nutzen und Komfort (Siehe Vorteile) extrem klein.
Ausserdem animiert eine solche Facade auch zur sinnvollen Nutzung des SessionStates, da immer zweimal überlegt wird, ob eine Session-Variable verwendet werden soll oder nicht.

Microsoft Sicherheitsupdates Dezember 2008

09.12.2008 20:35:16 | Kay Giza

Zu Ihrer Sicherheit bitte umgehend installieren!
Am 09. Dezember 2008 hat Microsoft acht neue Sicherheitsupdates veröffentlicht.

Dies sind im folgenden die Sicherheitsupdates:

Informieren Sie sich über die verfügbaren Updates. Laden Sie jetzt die Updates für Ihren Computer oder Laptop von der Microsoft Update-Website herunter.  

Wir möchten an dieser Stelle noch einmal ausdrücklich darauf hinweisen, dass Microsoft niemals Softwareupdates als Anhang von Sicherheitsbenachrichtigungen verschickt, sondern Sie auf diesem Weg lediglich auf ihre Verfügbarkeit hinweist. Sollten Sie also E-Mails erhalten, die vermeintlich von Microsoft stammen und als Anhang angebliche Sicherheitsupdates beinhalten, löschen Sie diese bitte ungelesen!



This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Kostenfreie MSDN Service-Hotline für Entwickler
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

Jahresrueckblick 2008: MSDN in Zahlen: 12

09.12.2008 20:20:37 | Kay Giza

Im siebten Teil der Jahresrückschau werfen wir einen Blick auf MSDN-Angebote für verschiedene Zielgruppen. [...mehr]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Kostenfreie MSDN Service-Hotline für Entwickler
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

Nachlese: Xtopia 08 und Technical Summit 2008 Videos sind online

09.12.2008 18:15:19 | Kay Giza

Es ist mir eine Freude hier ankündigen zu können, dass wir sozusagen mit dem Feierabend heute die Konferenz-Nachlesen von Xtopia 08 und Technical Summit 2008 online gestellt haben. Mehr als zwei Dutzend Gigabyte an Downloads und Video-Live-Streams warten auf Sie... [...mehr Informationen in diesem Blogposting auf Giza-Blog.de]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Kostenfreie MSDN Service-Hotline für Entwickler
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

Mehrere Monitore und wie bin ich nur ohne zusätzliche Unterstützung ausgekommen

09.12.2008 17:16:53 | Albert Weinert

Ich bin ja schon seit Jahren ein Verfechter davon mit mehreren Monitoren zu arbeiten. So gab es ein paar Dinge die mich störten, nur Kleinigkeiten, aber nervig. Was jedoch an Windows liegt und nicht an den mehreren Monitoren ;)

Habe dann vor einigen Wochen (erst!) UltraMon entdeckt. Doch ich habe es dann sofort in mein Herz geschlossen. Es ist nicht alles Perfekt, aber das was ich davon nutze gefällt mir.

TaskBar auf den anderen Monitoren

Windows zeigt die TaskBar nur auf dem primären Monitor an, was nervt wenn man auf einen anderen Monitor fokussiert ist und dann der Blick nach unten schweift um in der TaskBar was auszuwählen und es ist nicht da. Mit UltraMon hat jeder Monitor eine eigenen TaskBar, entweder nur mit den Fenster die auf dem Monitor sind, oder auf jeder  Taskbar denselben Inhalt.

Ich bevorzuge die erste Variante. Jedoch kommt es bei mir vor dass ich hier und da ein Programm wie Notepad++ oder so doppelt starte weil es nicht auf der im Fokus befindlichen TaskBar angezeigt wird. Dies kommt aber selten vor. Schade finde ich auch dass ich den Task-Manager nicht über die UltraMon-TaskBars anzeigen lassen kann.

Verschieben von Fenstern auf den anderen Monitor

Wenn man ein Fenster auf einem anderen Monitor zieht, dann passt Windows nicht die Größe an wenn die Monitore unterschiedliche Auflösungen haben. Ärgerlich. Mit UltraMon verschiebe ich auf Mausklick bzw. Tastendruck ein Fenster von A nach B und die Proportionen des Fensters werden beibehalten. Sehr schön.

Dies sind so ziemlich die einzigen Features von UltraMon die ich bewusst einsetze. UltraMon kann noch mehr, so “Kleinkram” wie Desktop-Hintergründe für mehrere Monitore eintragen, merken von Icon Positionen etc.

Anpassbar

UltraMon ist sehr granular anpassbar, so kann man entscheiden wo Buttons hinkommen, Menü erweitertet werden und ob überhaupt. Für problematische Anwendungen gibt es wohl auch spezielle Einstellungen, jedoch habe ich keine Probleme ausmachen können die auf UltraMon zu führen waren. Die TaskBar und die Fenster-Buttons fügen sich schön dem Vista-Aero-Look. Auch hält es sich direkt im Hintergrund wenn man plötzlich keinen zweiten Monitor mehr am System hat (was bei mir des öfteren vorkommt, da ich nur noch am Laptop arbeite).

Missen möchte UltraMon nicht mehr, ob es einem 40 Dollar wert ist muss man für sich selbst entscheiden. Es gibt eine mir bekannte alternative MultiMonitor Taskbar, die passt sich in der kostenlosen Version jedoch nicht dem Look & Feel des System an.

Technorati-Tags: ,,

Typkonvertierung vereinfacht, oder: .ToOrDefault();

08.12.2008 21:29:00 | Peter Bucher

*Update

Im Zuge meiner Arbeit an der SessionFacade ging mir das Licht auf, dass wir es im Optimalfall mit relativ wenigen Session-Variablen zu tun haben und über eine SessionFacade auch einen einfachen typisierten Zugriff gewähren können.
Zudem finden wir in der Session im Normalfall nur geboxte Typen, die mit einem einfachen Cast zu ihrem Urprungstyp gewandelt werden können.
Da die .To-Methoden nur für das Parsen vom Typ String in einen anderen Typen gedacht ist, bringt es nichts bspw. ein geboxter int zu einem String zu wandeln um diesen nochmals zu parsen, wenn ein Cast reicht.

Zudem ist die Angabe von "object" als Zieltyp für eine Extensionmethode nicht sehr gut gewählt, da sie dann bei allen Typen erscheint. Vorallem dann natürlich nicht, wenn es relativ unsinnig ist.

Im Zuge dieser Erkenntnis habe ich den Zieltyp auf "string" geändert.
Zusätzlich gibt es auch noch die Anforderung bei einem nicht erfolgreifen Parsing auf einen anderen Typen, einen Startwert zu setzen, der vom Standardwert des Typen abweicht.

Ich habe das Beispiel unten geändert und die Erläuterung plus ein Beispiel für die zweite Überladung mit dem Standardwert hinzugefügt. Viel Spass!

Insbesondere bei der Webentwicklung mit .NET haben wir viel mit Eingaben als Strings zu tun.
Diese müssen dann in int, DateTime, double, Guid, etc... konvertiert werden.

.NET bietet dabei <Type>.Parse()- / <Type>.TryParse()- oder ConvertTo<Type>-Methoden an.

Hierbei gilt die Empfehlung <Type>.TryParse() zu verwenden um auf eine nicht mögliche Konvertierung aufgrund von Nullwerten oder ungültigen Werten zu reagieren.

Die ganze Geschichte gibt aber viel sich immer wiederholende Schreibarbeit, ein Extrembeispiel der Konvertierung eines Strings (Oder null-Literal!) aus einer GET-Parameter Abfrage zu einem int könnte mit <Type>.TryParse() so aussehen:



string value = Request.QueryString["index"]; // Kann auch das Literal "null" darstellen 
int typedValue;

if(int.TryParse(value, out typedValue) && typedValue == 4) {
    lblStatus.Text = string.Format("Wert gültig: {0}", typedValue);
}

Für eine Konvertierung, die so häufig vorkommt ist das mir - auch aufgrund von anderen Überlegungen - viel zu viel Schreibarbeit.
Ich stelle mir sowas vor:



int typedValue = Request.QueryString["index"].ToOrDefault<int>();

if(typedValue == 4) {
    lblStatus.Text = string.Format("Wert gültig: {0}", typedValue);
}

Zuerst meine Überlegungen:
Ob eine Konvertierung erfolgreich war, brauche ich nur den Wert zu überprüfen, einen Boolean ob die Konvertierung erfolgreich war, brauche ich nicht.
Bei int reicht mir eine Prüfung auf den Stardardwert 0, bei Guid die Prüfung auf Guid.Empty, bei DateTime entweder DateTime.MinValue.
Sind es boolsche Werte oder kann man / möchte man .MinValue von DateTime nicht benutzen, nimmt man sich Nullable Types zur Hilfe.

Mehr braucht es meines Erachtens nicht um primitive Typen sowie erweiterte Strukturen zu konvertieren und festzustellen was angekommen ist.

Ich habe mir dazu eine Methode geschrieben, die nach Wunsch entweder als Extension Method oder als statische Hilfsmethode in einer Tools-Klasse genutzt werden kann. (Das Original ist hier zu finden)

Die Implementierung:



public static partial class Common
{
    /// <summary>
    /// Gibt ein typisiertes Objekt aus einem String zurück.
    /// Falls die Umwandlung nicht erfolgreich ist, wird stattdessen
    /// der Standardwert des Zieltypen zurückgegeben.
    /// </summary>
    /// <typeparam name="T">Zieltyp</typeparam>
    /// <param name="value">Zu typisierenden String</param>
    /// <param name="defaultValue">Standardwert (Wird bei Fehlschlag zurückgegeben)</param>
    /// <returns>Typisiertes Objekt</returns>
    public static T ToOrDefault<T>(this string value, T defaultValue)
    {
      T result = defaultValue;

      if (value == null)
        return result;

      TypeConverter converter = TypeDescriptor.GetConverter(typeof(T));
      if (converter.CanConvertFrom(typeof(string)))
      {
        try
        {
          result = (T)converter.ConvertFrom(value);
        } catch (Exception) {}
      }

      return result;
    }




    /// <summary>
    /// Gibt ein typisiertes Objekt aus einem String zurück.
    /// Falls die Umwandlung nicht erfolgreich ist, wird stattdessen
    /// der Standardwert des Zieltypen zurückgegeben.
    /// </summary>
    /// <typeparam name="T">Zieltyp</typeparam>
    /// <param name="value">Zu typisierenden String</param>
    /// <returns>Typisiertes Objekt</returns>
    public static T ToOrDefault<T>(this string value) {
        return value.ToOrDefault<T>(default(T));
    }
}

Die Nutzung sieht dann bspw. so aus:



// Nullable
DateTime? date = Request.QueryString["date"].ToOrDefault<DateTime?>();
if(date.HasValue) {
    <meinObjekt>.Date = date.Value;
}

// Kein Nullable
Guid guid = Request.Form["userGuid"].ToOrDefault<Guid>();
if(guid != Guid.Empty)
    currentUser = User.Load(guid);
// Standardwert
int width = Request.QueryString["width"].ToOrDefault<int>(1024);
// width == 1024 bei erfolglosem Parsing (Wenn bspw. der Parameter null zurückgibt)
// width == 4 bei erfolgreiem Parsing bei einem Eingangsstring von "4"
// Oder ohne Angabe des Typparameters (Typ wird implizit durch die Angabe des Standardwertes ermittelt)
int height = Request.QueryString["height"].ToOrDefault(768);

Diese Methode ist dafür gedacht um Strings oder geboxte Strings (Bspw. ein object das von Session[<Index>] zurückkommt aber ein String enhält in die typisierte Version zu konvertieren.
Double zu int oder eigene Objekte funktionieren nicht, dafür gibt es Casts oder man schreibt sich eigene Typekonverter dafür.
Bei normalen Typen (int, string, double, ...) wird bei der Eingabe von null oder ungültigen Strings jeweils der .NET-Standardwert (int = 0, Guid = Guid.Empty, ...) geliefert, bei der Verwendung von Nullable Types kann dann eine Prüfung gegen null benutzt werden.

Was denkt ihr?
Benutzt die Kommentarfunktion!

Bearbeitung / Korrekturen:
17.12.08 - Möglichkeit zur Angabe eines Standardwertes hinzugefügt (Inspiriert durch Golo Roden)
19.12.08 - Die .To-Methode vereinfacht (Danke an Golo Roden)
19.12.08 - Die Methode von "To()" nach "ToOrDefault()" umbenannt.

Jahresrueckblick 2008: MSDN in Zahlen: 279

08.12.2008 18:51:10 | Kay Giza

Folge 6 unseres Rückblicks auf MSDN-Aktivitäten im Jahr 2008. Diesmal geht es um Lösungsmittel, die Ihren Horizont erweitern. [...mehr]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Kostenfreie MSDN Service-Hotline für Entwickler
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

Die Bestandteile von Visual Studio 2008 SP1 anpassen funktioniert nicht

08.12.2008 18:18:02 | Albert Weinert

Warum?

Hat man wie ich nur 64 Gigabyte als Hauptfestplatte (dafür SSD) im Laptop eingebaut. So ist man darauf bedacht diese nicht auch irgendwie nicht zum überlaufen zu bringen. Somit räume ich hier und da mal auf und lösche & deinstalliere was ich nicht mehr brauche.

Was ich schon ewig nicht mehr brauche, aber immer wieder auf meiner Festplatte landet ist die native C++ Entwicklung. So aus lauter Tradition.

Somit dachte ich mir einfach mal ich passe die Installation von Visual Studio 2008 an und entferne die nicht benötigen Bestandteile einfach.

Fehlverhalten

confusedAlso das Setup von Visual Studio gestartet, alles was ich nicht mehr brauchte abgewählt und dann kam es zur einer Fehlermeldung. Die ich leider aus dem Kopf nicht mehr zusammen bekomme. Irgendwas dass ein Pfad oder so nicht stimmte.

Na super, was für ein Pfad dachte ich mir, probierte einiges aus, fragte die Suchmaschine meine Vertrauens und in den tiefen des Internets habe ich was gefunden.

Deinstallieren des ServicePack 1

Die Verhinderung der Anpassung lag im ServicePack 1, sobald dies installiert ist kann man die Bestandteile von Visual Studio 2008 nicht mehr anpassen. Dumm gelaufen.

Lösungsweg

  1. Visual Studio 2008 Service Pack 1 deinstallieren
  2. Konfiguration von Visual Studio anpassen
  3. Service Pack 1 wieder installieren
  4. eventuell nun fehlerhafte AddIns/Packages installieren (bei mir machten nur die Silverlight Tools Probleme).

Das ganze dauerte zwar ein wenig, aber wenigstens dauert die Installation des 2008er ServicePacks ja nicht mehr so lange wie dass vom Visual Studio 2005.

Technorati-Tags: ,,,

Unterstriche im Namen von Unit-Tests; Berichte und einfache Eingabe

08.12.2008 13:07:33 | Albert Weinert

Wie man in den letzten Beiträgen gesehen hat verwende nutze ich für Namensgebung von Unit-Test Sätze und trenne die Worte mit einen Unterstrich und mache da kein PascalCasing.

Der Grund ist einfach die Lesbarkeit und erzeugen von Dokumentation.

When_the_user_request_the_Newsletter_on_the_AddNew_page_and_enters_a_password  ist einfacher zu lesen als WhenTheUserRequestTheNewsletterOnTheAddNewPageAndEntersAPassword.

image_thumbBDDDoc

Bei Normalen Klassen und Methodennamen klappt es meistens mit der Lesbarkeit mit PascalCasing jedoch bei natürlichen Sätzen die eine Spezifikation beschreiben passt es halt nicht so.

Desweiteren gibt es ein nettes Tool names BDDDoc. Welches aus BDD-Style Tests Berichte generiert die man zur Dokumentation verwenden kann.

http://blog.jpboodhoo.com/UpdateToBDDDoc.aspx

Unterstriche eingeben

Nicht ganz so optimal bei der Eingabe von Sätzen mit Unterstrichen ist natürlich die Eingabe der Unterstriche, diese hemmen ein wenig den Schreibfluss.

Schon wäre es wenn man während dem Schreiben des Satzes einfach alle Leerzeichen durch Unterstriche ersetzt würden.

In der deutschsprachigen ALT.NET Mailingliste wurde dafür eine nette Lösung gepostet. Man nehme einfach AutoHotKey, ein kleines Open-Source-Utility.

AutoHotKey ist mit Skripten anpassbar so das bei Tastendrücken Tastatur- und Mausmakros ablaufen. Mit einem speziellen Skript ist es möglich Leerzeichen durch Unterstriche während der Eingabe zu ersetzen.

Download AutoHotKey

Skript für das ersetzen der Leerzeichen

Dieses Skript in AutoHotKey einbinden und nachdem man Strg+Shift+U gedrückt hat werden alle Leerzeichen durch Unterstriche ersetzt. Nach der Eingabe- oder Esc-Taste schreibt man automatisch wieder Leerzeichen.

Technorati-Tags: ,,

Verknüpfen von Architektur Artifacts und Workitems mit VSTS2010

08.12.2008 10:10:21 | Christian Binder

Kleiner Nachtrag von meinem VSTS 2010 Talk auf dem Tech Summit, da ich diese Frage nun doch schon zum N-mal via Email bekommen habe, was mich sehr freut :-) Im aktuellen CTP ist die Möglichkeit Model Artifacts aus den UML Diagrams wie z.B. ein Class Diagram oder dessen Elemente mit einem Workitems zu verknüpfen noch nicht implementiert. Selbstverständlich werden wir Elemente des Models mit Workitems verknüpfen können. Hier schon mal ein Blick wie das ganze aussehen wird:

image

 

Im Detail kann ein jedes Element mit einem Workitem aus dem Diagram verknüpft werden, also nicht nur das ganze Diagram.
z.B: Classes, Attributes, Operations, Associations…….

Aus dem Context heraus kann dann die Verknüpfung erstellt werden:

image

In den Properties wir dann die Verknüpfung gespeichert:

Über das Workitem kann dann auf das entsprechende Element wieder zugregriffen werden. Der Kreis schliesst sich :-)

Wer noch mehr Details möchte, sollte sich Cameron’s Eintrag anschauen. 

 

Chris

Neue Version des kostenlosen Deep Zoom Composer mit Seadragon AJAX, neuer API und mehr...

07.12.2008 13:10:39 | Steffen Ritter

Die Kollegen in den USA waren fleißig und haben still und leise eine neue Version des Deep Zoom Composers veröffentlicht, dem kostenlosen Editor zum Erzeugen von riesigen Deep Zoom-Kompositionen (Deep Zooms sind dynamische, extrem hoch aufgelöste Bilder und Collagen).

Wichtiger Hinweis: Eventuell vorhandene ältere Versionen von Deep Zoom Composer vor Installation der neuen Version deinstallieren.

Zum Download des neuen Deep Zoom Composers:

Deep Zoom Composer

Highlights dieser Version:

Seadragon AJAX: Die größte Neuerung ist mit Sicherheit die Unterstützung für Seadragon AJAX. Seadragon AJAX ist eine JavaScript-basierte Implementation der Deep Zoom-Funktionalität aus Silverlight (simpel gesamt: Deep Zoom ohne Silverlight – allerdings mit eingeschränkten Möglichkeiten, da reines AJAX von der Performance mit dem kompilierten Code einer Silverlight-Anwendung bei Weitem nicht mithalten kann. Die wissenswerten Details zu den Unterschieden zwischen Seadragon AJAX und „echtem Deep Zoom mit Silverlight“ beschreibt Deep Zoom-Entwickler Lutz Gerhard in seinem Blog.) Mehr zu Seadragon AJAX hier: http://livelabs.com/seadragon-ajax.

Neue, verbesserte API: Zur einfacheren Integration der Deep Zoom-Funktionalität in eigene Anwendungen wurde die API überarbeitet. Neben dem bisherigen Zugriff über die Kommandozeilenwerkzeuge gibt es nun eine .NET/managed DLL welche die Integration deutlich vereinfacht.

Neue Projektvorlagen (Templates): Die neue Version enthält diverse überarbeitete und neue Projektvorlagen sowohl für Silverlight als auch für Seadragon AJAX.

Und natürlich diverse Bugfixes :-)

Using SQL Server meta data to list tables that make up views

07.12.2008 12:43:00 | Ozgur Aytekin

One of the issues I often face is the need to find views that are already established for certain tables. This maybe for other developers, end users or even for myself. I could search the system tables to find this or explore each view, but are there other ways to easily find a list of all tables that are used for a view or even a list of all views that a table is tied to?

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

SQL Server 2008 Sparse Columns Identifying Columns For Conversion

07.12.2008 12:40:00 | Ozgur Aytekin

SQL Server 2008 has introduced a new way to store data for columns that contain excessive NULL values called Sparse Columns. What this means is that when you declare a column as Sparse and any time a NULL value is entered in the column it will not use any space. Is there a way to identify what columns would make a good candidate for this without having to analyze each column individually?

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

What every SharePoint administrator needs to know about Alternate Access Mappings (Part 1 of 3)

07.12.2008 12:16:00 | Ozgur Aytekin

SharePoint is compatible with a variety of reverse proxy servers, but for this example we'll take a look at a publishing rule from Microsoft's reverse proxy software - Internet Security and Acceleration Server 2006. ISA Server 2006 includes a SharePoint publishing wizard that walks you through creating a publishing rule for SharePoint. Once the rule is created, you can modify it at any time. (The following images show a slightly modified publishing rule where the "Forward the original host header" option is turned off to help demonstrate the flexibility of AAM. If we left the "Forward the original host header" option turned on, the public hostname would also serve as the internal hostname when configuring AAM.) The first two dialogs show the "listener" and "public name" properties of the rule, which define what URL users will use to access your SharePoint site. Remember that this URL is really the URL of your reverse proxy server, which will forward the request to your SharePoint server.

http://blogs.msdn.com/sharepoint/archive/2007/03/06/what-every-sharepoint-administrator-needs-to-know-about-alternate-access-mappings-part-1.aspx#9163002

FIX: An incorrect result is generated when you use the optimization option in floating-point code in Visual C++ 2005 SP1

07.12.2008 11:11:00 | Ozgur Aytekin

When you use Microsoft Visual C++ 2005 Service Pack 1 (SP1), an incorrect result is generated. This problem occurs when the following conditions are true:
The project has floating-point code.
The C/C++ /O2 (Maximize Speed) optimization option or the /Ox (Full Optimization) optimization option is turned on.

Note The problem only occurs on the x86 platform.

Microsoft Visual Studio 2005 Service Pack 1

http://support.microsoft.com/kb/958831

MenuStrip may expand the first ToolStripMenuItem for any Access Key

07.12.2008 11:08:00 | Ozgur Aytekin

You have a MenuStrip Control on a Windows Form. You run the application to display the Windows Form and press the ALT key to Activate the Menu.

To reproduce the problem:

1) Open Visual Studio and create a new Windows Forms Application.
2) From the Toolbox, select MenuStrip and drop it on the designer
3) Add a few ToolStripMenuItems to the MenuStrip so that the menu looks like this: &File->&New, &File->&Save, &Edit->&Cut, &Edit->&Paste
4) Run the application.
5) Use the ALT + F access key to expand the File Menu.
6) Now click elsewhere on the form to dismiss the menu.
7) Now press the ALT key, the File Menu should Expand. Simillarly using any unassigned access key for example ALT + X, ALT + Y etc will expand the file menu.

Microsoft .NET Framework 2.0
Microsoft Visual Studio 2008 Standard Edition
Microsoft Visual Studio 2008 Professional Edition
Microsoft Visual Studio Team System 2008 Team Suite
Microsoft Visual Studio 2005 Standard Edition
Microsoft Visual Studio 2005 Professional Edition
Microsoft Visual Studio 2005 Team Suite

http://support.microsoft.com/kb/960880

Extension-Methods für ASP.NET MVC Unit-Tests

06.12.2008 12:57:00 | Albert Weinert

Ich habe ein paar Extension-Methods für schönere Unit-Tests vorgestellt. Nun stelle ich wieder zwei vor. Diese sind speziell für das ASP.NET MVC Framework mit der ASP.NET MVC Futures (Microsoft.Web.Mvc.Dll) Erweiterung.

public static class MvcBDDExtension
{
    public static void should_link_to<T>(this Expression<Action<T>> expected, Expression<Action<T>> action) where T : Controller
    public static void should_route_to<T>(this ActionResult actionResult, Expression<Action<T>> action) where T : Controller
}

Damit kann man überprüfen ob ein typisierter Link zu einer bestimmten Controller-Action gesetzt ist und ob ein RedirectRouteResult zu einer bestimmte Controller-Action zurückgegeben worden ist. Den Quelltext gibt es am Ende.

Erst einmal ein paar erklärende Worte vorneweg.

Typisierte Links sind mit den ASP.NET MVC Futures möglich. Diese haben den Vorteil dass ich die Controller als auch die Actions per Refactoring umbenennen kann ohne das mir die Anwendung kaputt geht. Man kann die Textuelle Verlinkung zwar mit Unit-Tests überprüfen, jedoch sollte ein Umbenennen einer Klasse oder Methode kein Anpassung von Unit-Tests zur Folge haben.

So sieht die Erstellung von typisierten Links innerhalb eines Views aus, am konkreten Beispiel einer MasterPage.

<div id="menucontainer">
    <ul id="menu">
        <li>
            <%=Html.ActionLink(Model.LinkToHome, @"Startseite")%></li>
        <li>
            <%=Html.ActionLink(Model.LinkToAboutUs, @"Impressum")%></li>
    </ul>
</div>

Das ViewModel sieht in diesem Fall so aus.

using System;
using System.Linq.Expressions;

namespace Newsletter.Web.Controllers.ModelViewData
{
    public class ViewDataBase
    {
        public Expression<Action<AccountController>> LinkToLogout;
        public Expression<Action<AdminController>> LinkToAdmin;
        public Expression<Action<AccountController>> LinkToRegister;
        public Expression<Action<HomeController>> LinkToHome;
        public Expression<Action<HomeController>> LinkToAboutUs;
        public string Title { get; set; }
        public string Username { get; set; }
    }
}

Der View ist entsprechend typisiert und bietet eine Model-Property zum einfacheren Zugriff auf das ViewModel.

using System;
using System.Web.Mvc;

using Newsletter.Web.Controllers.ModelViewData;

namespace Newsletter.Web.Views.Shared
{
    public partial class Site : ViewMasterPage<ViewDataBase>
    {
        protected ViewDataBase Model
        {
            get { return ViewData.Model; }
        }
    }
}

Die Controller-Actions werden dann folgendermaßen Eingetragen. Es sind verschiedene Controller mit entsprechenden Actions.

public static class ViewDataExtensions
{
    public static void SetMasterPageData(this ViewDataBase viewData)
    {
        viewData.LinkToAdmin = ac => ac.Index();
        viewData.LinkToRegister = ac => ac.Register(string.Empty, string.Empty, string.Empty, string.Empty);
        viewData.LinkToLogout = ac => ac.Logout();
        viewData.LinkToHome = hc => hc.Index();
        viewData.LinkToAboutUs = hc => hc.About();
    }
}

Damit sind typisierte Links auf Controller-Actions gesetzt und ich brauche mir keine Gedanken zu machen was passiert wenn ich diese umbenenne.

Es ist jedoch erforderlich in einem Unit-Test zu überprüfen ob auch wirklich bei jedem View die entsprechenden Links im ViewModel gesetzt sind.

Hier schlägt nun die Stunde für die should_link_to<T>() Extension-Method.

[Observation]
public void the_MasterPageLinks_should_be_set_if_a_ViewResult_is_given_back()
{
    if (result is ViewResult)
    {
        var model = GetViewModel<ViewDataBase>();

        model.LinkToAboutUs.should_link_to(homeController => homeController.About());
        model.LinkToHome.should_link_to(homeController => homeController.Index());

        model.LinkToAdmin.should_link_to(adminController => adminController.Index());
        model.LinkToLogout.should_link_to(accountController => accountController.Logout());
        model.LinkToRegister.should_link_to(accountController => accountController.Register(string.Empty, string.Empty, string.Empty, string.Empty));
    }
}

Durch einfaches Lesen des Quelltextes kann man nun schnell erkennen was dazu führen muss um den Test zum funktionieren zu bringen.

result ist ein field innerhalb der Test-Klasse welchen den ActionResult der zu testenden Controller-Action beinhaltet und GetViewModel<T>() holte das aktuelle ViewModel aus dem result.

Möchte man jedoch Testen ob eine Weiterleitung zu einer bestimmten Controller-Action vorgenommen wurde. So ist dies mit should_route_to<T>() möglich.

using System;
using System.Web.Mvc;

using DerAlbert.UnitTest.Base.BDD;

using Newsletter.Manager;
using Newsletter.Web.Controllers;
using Newsletter.Web.Controllers.ModelViewData;

namespace Newsletter.Controllers.Tests.SpecsSubscriberController.AddNewSubscriber
{
    [Concern(typeof (SubscriberController))]
    public class When_the_user_request_the_newsletter_on_the_addnew_page : concern_of_SubscriberController
    {
        // einiges an Setup und Observations für das Beispiel weggelassen, 
        // da es sonst zu unübersichtlich als Beispiel wird.

        private AddNewSubscriberViewData viewData;

        protected override void establish_context()
        {
            base.establish_context();

            viewData = new AddNewSubscriberViewData
                           {
                               SubscriberName = @"Hubert",
                               EMail = @"hello@world.de",
                               EMailVerify = @"hello@world.de",
                               Result = @"an Answer"
                           };

            subscriberManager.when_told_to(sm => sm.ValidateCaptcha(viewData)).Return(true);
        }

        protected override void because()
        {
            result = sut.AddNewSubscriber(viewData);
        }
    
        [Observation]
        public void the_page_should_be_redirected_to_SubscriberController_SubscriberAdded()
        {
            result.should_route_to<SubscriberController>(sc => sc.SubscriberAdded());
        }
    }
}

Dies ist ein Real-World BDD-Style Test und hier etwas abgespeckt dargestellt. Hier sieht man im Quelltext was passiert muss damit eine Spezifikation erfüllt ist.

Jetzt ist es soweit der Quelltext der Methoden. Diese brauchen die ASP.NET MVC Future und die vorhandenen BDD Extensions.

Happy Testing mit den Extension-Methods.

using System;
using System.Linq.Expressions;
using System.Web.Routing;

using Microsoft.Web.Mvc.Internal;

using System.Web.Mvc;

namespace DerAlbert.UnitTest.Base.BDD
{
    public static class MvcBDDExtension
    {
        public static void should_link_to<T>(this Expression<Action<T>> expected, Expression<Action<T>> action) where T : Controller
        {
            RouteValueDictionary expectedDictionary = ExpressionHelper.GetRouteValuesFromExpression(expected);
            RouteValueDictionary actionDictionary = ExpressionHelper.GetRouteValuesFromExpression(action);
            actionDictionary.should_only_contain(expectedDictionary);
        }

        public static void should_route_to<T>(this ActionResult actionResult, Expression<Action<T>> action) where T : Controller
        {

            var redirectResult = (RedirectToRouteResult)actionResult;
            RouteValueDictionary actionDictionary = ExpressionHelper.GetRouteValuesFromExpression(action);
            actionDictionary.should_only_contain(redirectResult.Values);
        }
    }
}

Habt Ihr eigene Extension-Methods für Test? Her damit!
Wie haltet Ihr dass mit dem Testen?
Ist dies hier alles Mumpitz und Assert.IsXYZ() is viel besser?

Verehrte Leser, nutzt die Kommentarfunktion.

Technorati-Tags: ,,

Extension-Methods für schöneres Unit-Testing

06.12.2008 12:29:50 | Albert Weinert

Schönes Unit-Testing? Was soll denn dies sein.

Ok, schön ist Relativ. Ich finde dass die Lesbarkeit von Quelltexten sehr wichtig ist, auch die von Unit-Tests. Ich definiere dies dann als schön ;)

Die Assert-Syntax der Unit-Testing Frameworks war für mich nie so sonderlich einleuchtend. Da es ist einfach nicht so prickelnd liest.

[Test]
public void Fehlerhafte_EMail_mit_zwei_at_Zeichen()
{
    var validator =  new EMailValidator();

    Assert.IsFalse(validator.Validate("a@@bd.cd"));
    Assert.IsFalse(validator.Validate("a@.@bd.cd"));
}

Ich bin ein von Links-nach-Rechts Leser, mein ganzes Leben schon und hier muss ich mehr oder weniger umdenken. Klar, es geht, jedoch gibt es da Verbesserungspotential.

Mit Behavior-Driven-Development (BDD) erhalten die Unit-Tests eine neue Syntax. Es steht nicht der Test im Mittelpunkt, sondern die Spezifikation. Dazu gibt es auch eine verbesserte Schreibweise der Tests. Die jedoch hier nicht Thema ist, dazu später einmal mehr. In der Zwischenzeit verweise ich auf einen Blog-Eintrag von Stefan Lieser der dazu nächstes Jahr einige Vorträge halten wird. Jetzt nur die Empfehlung sich BDD näher anzusehen, da es die Denkweise für Unit-Tests verändert und leichter Zugänglich macht.

Jedoch kann man Teile des BDD-Style auch im klassischen Unit-Test verwenden. Wenn z.B. BDD nicht auf die zu testende Unit passt und man dort lieber Old School testet.

[Test]
public void Fehlerhafte_EMail_mit_zwei_at_Zeichen()
{
    var validator =  new EMailValidator();

    validator.Validate("a@@bd.cd").should_be_false();
    validator.Validate("aa@.@bd.cd").should_be_false();
}

In dieser Form ist der Test besser zu verstehen (für uns Links-nach-Rechts Leser). should_be_false() ist eine Extension-Method die auch nur einen Assert macht.

Diese Extension-Method habe ich von JP Boodhoo, auf einem Vortrag in Bonn hat er diese vorgestellt. Ich war sofort Feuer und Flamme und ich sagte zur mir; so einfach und nicht selbst darauf gekommen. Es wurde auch kein spezielles BDD-Test-Framework (wie MSpec oder NBhave) verwendet, sondern klassisches MbUnit.

Mittlerweile sind auch eigene dazu gekommen und vorhandene verbessert worden.

public static class BDDExtensions
{
    public static void force_traversal<T>(this IEnumerable<T> items)
    public static void should_be_null(this object item)
    public static void should_be_equal_to(this object item, object other)
    public static void should_contain<T>(this IEnumerable<T> items, T item)
    public static void should_be_greater_than<T>(this T item, T other) where T : IComparable<T>
    public static void should_not_be_equal_to<T>(this T item, T other)
    public static void should_be_equal_ignoring_case(this string item, string other)
    public static void should_contain<T>(this IEnumerable<T> items, IEnumerable<T> itemsToFind)
    public static void should_only_contain<T>(this IEnumerable<T> items, IEnumerable<T> itemsToFind)
    public static void should_only_contain_in_order<T>(this IEnumerable<T> items, IEnumerable<T> itemsToFind)
    public static void should_be_true(this bool item)
    public static void should_be_false(this bool item)
    public static void should_be_equal_to<T>(this T actual, T expected)
    public static ExceptionType should_throw_an<ExceptionType>(this Action workToPerform)
    public static void should_not_throw_any_exceptions(this Action workToPerform)
    public static void should_be_an_instance_of<Type>(this object item)
    public static void should_not_be_null(this object item)
    public static void should_not_be_null_or_empty(this string item)
    public static void should_be_null_or_empty(this string item)
    public static void should_be_empty<T>(this IEnumerable<T> items)
    public static void should_not_be_empty<T>(this IEnumerable<T> items)
}

Dies ist der aktuelle Stand von Basis-Extension-Methods die ich in Unit-Test und BDD-Tests verwende. Den kompletten Quelltext gibt es am Ende des Artikels.

Ich erweitere diese immer sobald es mir Sinnvoll erscheint. Auch mache mir spezielle Extension-Methods z.B. für ASP.NET MVC (dazu später mehr).

Hier noch ein kleines Beispiel um zu überprüfen ob in einer Liste bestimmte Elemente vorhanden sind.

[Test]
public void Wird_eine_Liste_mit_Namen_zurueckgeben()
{
    List<string> names = FooBar.GetNames();    
    names.should_only_contain(new List<string>{"Albert","Peter","Weinert"});
}

Der Einsatz von Extension-Methods anstelle von Assert.IsXYZ() führt zu einer besseren Lesbarkeit von Tests und somit zu schöneren Unit-Tests.

Hier nun der komplette Quelltext der Extension-Methods in Verbindung mit MbUnit, jedoch können diese einfach an andere Unit-Test-Frameworks angepasst werden.

/*
 * based on the BDD Extensions of Jean-Paul Boodhoo http://jpboodhoo.com
 * 
 */
using System;
using System.Collections.Generic;
using System.Linq;

using MbUnit.Framework;

namespace DerAlbert.UnitTest.Base.BDD
{
    public static class The
    {
        public static Action action(Action action)
        {
            return action;
        }
    }

    public static class BDDExtensions
    {
        public static void force_traversal<T>(this IEnumerable<T> items)
        {
            items.Count();
        }

        public static void should_be_null(this object item)
        {
            Assert.IsNull(item);
        }

        public static void should_be_equal_to(this object item, object other)
        {
            Assert.AreEqual(other, item);
        }

        public static void should_contain<T>(this IEnumerable<T> items, T item)
        {
            Assert.IsTrue(new List<T>(items).Contains(item));
        }

        public static void should_be_greater_than<T>(this T item, T other) where T : IComparable<T>
        {
            (item.CompareTo(other) > 0).should_be_true();
        }

        public static void should_not_be_equal_to<T>(this T item, T other)
        {
            Assert.AreNotEqual(other, item);
        }

        public static void should_be_equal_ignoring_case(this string item, string other)
        {
            StringAssert.AreEqualIgnoreCase(item, other);
        }

        public static void should_contain<T>(this IEnumerable<T> items, IEnumerable<T> itemsToFind)
        {
            var results = new List<T>(items);
            foreach (T itemToFind in itemsToFind)
            {
                results.Contains(itemToFind).should_be_true();
            }
        }

        public static void should_only_contain<T>(this IEnumerable<T> items, IEnumerable<T> itemsToFind)
        {
            itemsToFind.Count().should_be_equal_to(itemsToFind.Count());
            items.should_contain(itemsToFind);
        }

        public static void should_only_contain_in_order<T>(this IEnumerable<T> items, IEnumerable<T> itemsToFind)
        {
            itemsToFind.Count().should_be_equal_to(itemsToFind.Count());
            var results = new List<T>(items);
            var resultsToFind = new List<T>(itemsToFind);
            for (int i = 0; i < itemsToFind.Count(); i++)
            {
                resultsToFind[i].should_be_equal_to(results[i]);
            }
        }

        public static void should_be_true(this bool item)
        {
            item.should_be_equal_to(true);
        }

        public static void should_be_false(this bool item)
        {
            item.should_be_equal_to(false);
        }

        public static void should_be_equal_to<T>(this T actual, T expected)
        {
            Assert.AreEqual(expected, actual);
        }


        public static ExceptionType should_throw_an<ExceptionType>(this Action workToPerform)
            where ExceptionType : Exception
        {
            Exception resulting_exception = get_exception_from_performing(workToPerform);
            resulting_exception.should_not_be_null();
            resulting_exception.should_be_an_instance_of<ExceptionType>();
            return (ExceptionType) resulting_exception;
        }

        public static void should_not_throw_any_exceptions(this Action workToPerform)
        {
            workToPerform();
        }

        public static void should_be_an_instance_of<Type>(this object item)
        {
            Assert.IsInstanceOfType(typeof (Type), item);
        }

        public static void should_not_be_null(this object item)
        {
            Assert.IsNotNull(item);
        }

        public static void should_not_be_null_or_empty(this string item)
        {
            Assert.IsFalse(string.IsNullOrEmpty(item));
        }

        public static void should_be_null_or_empty(this string item)
        {
            Assert.IsTrue(string.IsNullOrEmpty(item));
        }

        public static void should_be_empty<T>(this IEnumerable<T> items)
        {
            Assert.IsTrue(items.Count() == 0);
        }

        public static void should_not_be_empty<T>(this IEnumerable<T> items)
        {
            Assert.IsFalse(items.Count() == 0);
        }

        private static Exception get_exception_from_performing(Action work)
        {
            try
            {
                work();
                return null;
            }
            catch (Exception e)
            {
                return e;
            }
        }
    }
}
Technorati-Tags: ,,

Es hat mich erwischt, ein neues Design

06.12.2008 00:56:28 | Albert Weinert

Es ist Nikolaus 2008 und ich habe mir heute ein neues Design für mein Blog gegönnt.

Gut das war auch nicht schwierig, vorher war ein Design ja auch nicht existent.

Da ich jedoch immer noch Entwickler und kein Designer bin habe ich mich bei www.free-css-templates.com bedient.

Beim Umstellung habe ich dann auch noch einen Syntax-Highlighter eingebaut, so das die Quelltext die nun wieder reichhaltiger gepostet werden auch besser aussehen.

Auch habe ich mich mal um den XHTML Output gekümmert und geschaut das er (soweit es mir möglich war anzupassen) valide ist.

Dies ist also der kleine Relaunch von Der-Albert.com in Zukunft gibt es hier wieder mehr zu lesen. Versprochen!

Jahresrueckblick 2008: MSDN in Zahlen: 27

05.12.2008 18:47:19 | Kay Giza

Fünfte Runde des MSDN-Jahresrückblicks. Thema heute: Wir geben Ihrem Durchblick ein Zuhause. [...mehr]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Kostenfreie MSDN Service-Hotline für Entwickler
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

Microsoft Community

05.12.2008 17:33:28 | Jens Häupel

Suchen Sie eine User Groups in Ihrer Nähe, um sich mit Gleichgesinnten auszutauschen? Die Landkarte von Microsoft Virtual Earth zeigt Ihnen, wo sich welche User Group trifft.

Desweiteren gibt es jetzt eine Liste von WebAdressen, unter denen sich Anwender oder Vereinigungen um Microsoft-Technologiethemen kümmern. Das reicht von Web-Magazinen über Anwenderforen bis zu Tutorials zu bestimmten Themen.

Eine Liste der derzeitigen MVPs finden Sie hier und viele Infos zu den Microsoft Student Partners gibt es hier.

Und last but not least die Regional Directors.

Die Community ist gut aufgestellt. Vielleicht haben auch Sie Lust, aktiv daran teilzunehmen.

 

Alle Jahre wieder: MSDN Weihnachts-Webcast

05.12.2008 17:14:27 | Kay Giza

Ich freue mich richtig, ich glaube letztes Jahr hatten wir knapp 200 Live-Teilnehmer, bin gespannt wie viele es dieses Jahr werden.

Nach einem ganzen Jahr der Abstinenz ist es wieder soweit: Am
22. Dezember um 18 Uhr startet hier bei MSDN der fast schon traditionelle Weihnachts-Webcast! Damit es auch dieses Mal richtig spannend wird, werden wir unser berühmtes Gewinnspiel online spielen. D.h., wir stellen Fragen und Sie können darauf direkt live über den Fragenmanager von Windows Live Meeting reagieren - wenn’s geht, gleich mit der richtigen Antwort. Zu gewinnen gibt’s Bücher, nützliche Software und andere schöne Preise.

Weitersagen &
jetzt anmelden!


This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Kostenfreie MSDN Service-Hotline für Entwickler
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

Empower fuer ISVs - Infos

05.12.2008 16:59:43 | Kay Giza

Obwohl wir es bereits seit Jahren anbieten, sind auch heute noch Entwickler erstaunt wenn ich von der „Empower für ISVs“-Initiative spreche. Gestern habe ich erst mit einem Microsoft Partner darüber am Telefon gesprochen.

Die Initiative "Empower für ISVs" ist für Softwarehersteller (ISV) die Alternative zum ActionPack, ein kostengünstiges Jahresabonnement an Softwarelizenzen für Registered Member. Neben einem Packet an Softwarelizenzen inkl. Visual Studio 2008 Professional, gibt es kostenlosen Telefon- und Onlinesupport sowie die MSDN Premium Subscription. Die Teilnahme kostet von 320 EUR zzgl. MwSt. für ein Jahr und kann um ein weiteres Jahr verlängert werden. Alle Infos gibt es für registrierte Microsoft Partner unter www.microsoft.de/empower.

Leider habe ich keine Seite gefunden, die die Initative beschreibt, ohne dass man angemeldet sein muss als Microsoft Partner - aber da die Initative für Microsoft Partner gedacht ist, sollte dies ja kein Problem sein.

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Kostenfreie MSDN Service-Hotline für Entwickler
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

Gedanken zu "Re: Perfekte Software" von Alexander Zeitler

05.12.2008 16:07:54 | Rainer Schuster

Ergänzend auch noch ein paar Worte zum Artikel von Alex. Ich selbst habe ja, wie auch in meinem vorherigen Artikel erwähnt, 10 Jahre Erfahrung in C++ (von der Ausbildung bis zur Vollzeit unter enormem Zeitstress gearbeitet) und weiß worum es hier geht. Ich kann jeden nur beherzigen, der auf der Höhe der Zeit bleiben will sich die Themen, die Alex in seinem Blog über BDD, DDD und die ganzen Grundprinzipien schreibt durchzulesen, ein Vorteil: Er schreibt es leicht verständlich, da er den Prozess durchmacht und so sieht man die Stufenweise Entwicklung die sich ergibt.

Ich arbeite mich auch wie er in diese ganze Struktur seit einem halben Jahre mehr oder weniger ein, weil es in der Ausbildung/ im Studium so nicht gelehrt wird. Und das beste daran ist, nach nicht einaml drei Monaten macht all das einen Sinn, wo früher viele Fragezeichen standen.

Wo sich früher jemand gefragt hat, wie löse ich das Problem am besten, steht auf einmal eine Antwort. Nur muss diesen Schritt jeder mindestens einmal praktisch durchlaufen haben. Ich finde solche Themen sollten Teil der Ausbildung, sei es Lehre oder Studium sein, wenn es um Softwareentwicklung/Architektur geht.

Perfektion ist meiner Meinung nach an dieser Stelle nicht wichtig. Aber wie Norbert es geschrieben hat, immer in dem Prozess der Verbesserung zu sein.

Die Quintessenz für mich ist daher meinen Code, in dem Wissen er ändert sich später, so zu gestalten, ihn dann mühelos ändern zu können (Seiteneffektfrei).

Der moderne "Programmierer"

05.12.2008 13:23:33 | Rainer Schuster

Einführung

Die Aritkel von Norbert Eder, Peter Bucher und Alexander Zeitler und ihre Folge-Artikel haben mich auch zum Nachdenken angeregt. Zum Nachdenken über meine aktuelle Situation als Softwareentwickler/-architekt. Was macht mich als Entwickler aus. Wo liegen meine Stärken und Schwächen. Was ist für mich erstrebenswert und warum will ich genau diese Ziele verfolgen?

Codetyping als Sport

Softwareentwicklung wird von vielen als eine Sportart angesehen. Je mehr Code ich schreibe, desto besser! Bewußt wird mir das durch die ständig neuen Releases auf Hostingplattformen wie Google Code, Codeplex, Sourceforge oder Artikelseiten wie Codeproject. Doch ist das wirklich so?

Das kann pauschal nicht beantwortet werden. Nun will ich das mal genauer unter die Lupe nehmen. Was unterscheidet den Code hinsichtlich der Quantität und der Qualität. Für mich als ambitionierten und engagierten Softwareentwickler mit starkem Drang zur Architektur stellt sich immer wieder die Frage: Wie verbessere ich meine Fähigkeiten guten Code zu schreiben? Was macht guten Code überhaupt aus? Und brauche ist das denn unbedingt? Es soll doch Spaß machen.

Aller Anfang ist ... schön

Früher habe ich in die Tasten geklopft, so dass die Töne der Anschläge jenseits der Schallmauer lagen. Ich bin kaum mit dem Denken nachgekommen. Design und Architektur haben mich damals schlichtweg nicht interessiert. Was zählte war der lauffähige Code. Mit der Zeit erfährt aber auch jeder noch so unerfahrene Neuling, dass Code mit der Zeit verwuchert und der Pflege bedarf. Aber woher kommt das? Warum passiert es mir immer wieder, das mein Code nicht gut wartbar ist?

Die Suche nach dem Ausweg

An diesem Punkt angekommen stellt sich jeder Entwickler die Frage: "Wie zum Teufel kann ich meinen Code so strukturieren, das ich ihn leichter Pflegen kann, d.h. er offen für Neuerung ist und mir das Leben aber nicht zur Qual macht". Zweifels ohne ist der Anfang immer schöner. Er kommt mir wie meine Kindheit vor. Loslaufen und entdecken. Ahh, ein Sandkasten ... las uns buddeln und Burgen bauen. Das funktioniert Anfangs gut und die Ergebnisse sind sehr zufriedenstellend. Nach einiger Zeit stellt sich der Spieltrieb etwas ein und die Frage nach Qualität drängt sich langsam in den Vordergrund. Man hat Spaß gehabt, es hat anderen Freude bereitet dich dabei vergnügt anzuschauen wie du spielst und sie haben unter Umständen einen Nutzen gehabt. Nun wollen aber Werte hergestellt werden. Dem Kern unserer heutigen modernen Gesellschaft: Der Mehrwert oder im Fachchinesisch "Added Value".

Hin zu Organisation und Verantwortung

Die Zeit des Spielens ist nun vorbei und der Entwickler sollte sich so langsam Gedanken machen, wie er seinem Brötchengeber rechtfertigen kann, was er da zusammenbaut. Ob in einem geführten Unternehmen, oder in der Selbständigkeit: Initiative und Vorbildfunktion gehören überall dazu. Ich fing damals also an mir über strukturelle Organisation meiner Selbst und meines Codes Gedanken zu machen. Habe Wochenlang Diskussionsforen, Usergroups und Blogbeiträge studiert und mir empfohlene Fachliteratur zu Gemüte geführt - das tue ich im Übrigen noch immer. Viel habe ich auch aus Beispiel-Code gelernt - positiv wie auch negativ. Beim Durchforsten der Quellen immer und immer wieder auftauchende Muster entdeckt. Ich stellte fest, das ich meinen Code leichter verwalten kann, wenn ich es schaffe, mir diese Muster zu eigen zu machen und meine Entwicklung auf Qualität und Wiederverwendbarkeit auszulegen. Damit meine ich nicht, alles mögliche für die Zukunft in eine Klasse oder ein Programm zu stecken, sondern die entstehenden Klassen so zu entwerfen, dass sie offen für einfache Erweiterungen sind.

Patterns ...

Wer sich lange genug mit dem Thema beschäftigt wird feststellen, dass diese Gedanken schon andere Menschen beschäftigt haben. Es gibt genug Größen innerhalb der Branche, die einem vormachen wie es geht um für mich mal nur einen der wichtigsten zu nennen Martin Fowler. Und das müssen wir uns zu nutze machen. Wie fange ich an das praktisch umzusetzen? Gelernt habe ich vor allem eins: Die Technologie ist zweitrangig! Was erst einmal zählt ist das Verständnis für das Themengebiet.

...and Practices

Meine 10 Jahre lange Erfahrung im Bereich C++ kann mir keiner nehmen und diese will ich auch nicht hergeben. Vielleicht auch ein Grund warum ich vor 3 Jahren anfing mich mit C# zu beschäftigen. Der Grund: Es war einfacher Abhängigkeiten losgelöst zu entwickeln. Echte Interfaces waren nicht so umständlich zu entwerfen. Die Komponentenorientierung viel einfacher. Der große Boom der SOA Architektur schwappte auf. Aber Viele haben "Service" als zu wörtlich genommen und sind beim WebService gelandet. Das ist meiner Meinung nach zu verallgemeinert und falsch verstanden worden. Wie sehe ich das ganze denn nun?

Jetzt geht's ans Eingemachte - lasset die Architektur beginnen

Wir sind am Ziel! Wer über kurz oder lang eine Applikation von mittlerem bis großem Umfang mit einer stetig steigenden Komplexität entwickeln und pflegen muss kommt an einem Thema nicht vorbei: Dependency Injection! Warum das so ist will ich in späteren Artikeln in Beispielen erklären. Ob das über die am Markt bestehenden Container-Frameworks wie StructureMap, Unity, NInject, CastleWindsor usw. gemacht wird, oder sich andere Lösungen auszudenken sind sei einmal dahin gestellt. Wichtig ist, dass sich der Entwickler über die Komplexität und deren Beherrschbarkeit Gedanken macht. Ich lege jedem, der sich mit dem Thema noch nicht auskennt den Artikel Before you use an IoC tool, some concepts to know first vom StructureMap Entwickler Jeremy D. Miller ans Herz. Hier greift er einige der wichtigsten Themen zur Komponenten- und somit Serviceorientierten Entwicklung auf. Ralf Westphal durch seine Tätigkeit als Fachautor Trainer und Referent auf Fachmessen bekannt strebt hier auch die Vereinfachung an - ich oute mich jetzt hier mal als Fan. Er versucht Architektur, die auch skalieren kann zu vereinfachen. Auch wenn ich in Newsgroup-Diskussionen nicht immer seiner Meinung bin, schätze ich sein Wissen und seine Fähigkeiten sehr.

Was kommt demnächst

Dieses Jahr ist noch zu voll gepackt für diese Themen in der privaten Freizeit. Aber was ich hier im nächsten Jahr für mich reflektieren will (aus sicht des Entwicklers), sind Prinzipien aus OOD, DDD, BDD. Objektorientiert, Daten- und Spezifikationsgetrieben!

Fazit

Gedanken, die auch andersartig sein dürfen, sind gut, denn sie regen den Wissenstransfer an. Ein wichtiger Aspekt für mich beim Lernen: Reflektieren und sich durch Andersartigkeit inspirieren lassen. Andersartigkeit ist deswegen gut, weil sie es in Frage stellt ob der Alltag noch richtig ist. Sie lässt einen Nachdenken und die bisherigen Annahmen in Frage stellen. Sie ist für mich ein Innovationsmotor. Ein Leitspruch meiner alten Arbeitsstelle: "Nicht das Erzählte reicht, sondern das Erreichte zählt!" Erreichen kann man viel, erzählen noch viel mehr. Aber was ich am Ende meiner Bemühungen erreicht habe ist wichtig: Ich will eine saubere Architektur, in allen wichtigen Belangen!

UserControls in mehreren Anwendungen im IIS wiederverwenden

05.12.2008 13:12:00 | Peter Bucher

Clay Compton vom ASP.NET Team zeigt in seinem Blog eine Möglichkeit, um UserControls mithilfe von virtuellen Verzeichnissen im IIS zwischen mehreren Anwendungen zu teilen.
So sind die UserControls nur einmal physisch vorhanden, jedoch in allen Anwendungen benutzbar.

Die Vorteile liegen klar auf der Hand:

  • Eine Änderung: Alle Anwendungen kriegen das mit
  • Macht die Wiederverwendung von UserControls möglich

Um eine grosse Wiederverwendbar zu gewährleisten, sollte ein Control möglichst keine projektspezifische Abhängigkeiten haben.
Also am besten eine Aufgabe für ein Control und gut parameterisierbar.

Natürlich ist die beschriebene Lösung nicht die schönste, aber besser als gar keine.

Bei CustomControls gibt es dieses Problem nicht, da die kompilierten DLLs jeweils nur in den BIN-Ordner verteilt werden müssen.
Das geht automatisch per Visual Studio, wenn eine Referenz auf eine Control-Biboliothek erzeugt wird, oder manuell per XCopy.

Jahresrueckblick 2008: MSDN in Zahlen: 208

04.12.2008 18:43:01 | Kay Giza

Nächste Station beim MSDN-Jahresrückblick: Fachartikel, so weit das Auge reicht. [...mehr]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Kostenfreie MSDN Service-Hotline für Entwickler
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

Neue Artikel beim dot.net magazin: "Verteiltes Caching mit Velocity" und "Ist C# 4.0 architekturneutral?"

03.12.2008 21:46:00 | Gregor Biswanger

In der neuen Ausgabe vom dot.net magazin gibt es dieses Mal 2 neue Artikel meinerseits:

Verteiltes Caching mit Velocity

Microsoft stellt die leichtgewichtige Caching-Plattform „Velocity“ zur Verfügung. Dadurch kann das Caching auf unterschiedliche Server ausgelagert werden. Andere Clients können ebenfalls davon profitieren. Wie die Implementation für eigene Projekte vorgenommen wird, und was Microsoft mit Velocity in Zukunft beabsichtigt, erfahren Sie in diesem Artikel.

Ist C# 4.0 architekturneutral?

Die ersten Geheimnisse über C# 4.0 sind auf der diesjährigen PDC 2008 von Microsoft gelüftet worden. Doch neben den faszinierenden Neuerungen kommt auch noch ein ungeheuerliches Erschrecken dazu. Ist C# 4.0 noch architekturneutral? Geht Microsoft mit C# 4.0 überhaupt noch den richtigen Weg?

 

 

Zu lesen sind die Artikel beim dot.net magazin, Ausgabe 01/2009.

Still alive

03.12.2008 19:46:18 | Andre Loker

Yeah, it has been quite a while since my last post. Bear with me, I'm having a busy time right know. Expect some fresh content any time soon.

By the way: I appreciate your feedback like blog post comments etc. But please don't abuse the commenting function for stuff like SEO ranking competitions. I'll remove the links anyway, so save your (and my!) time.  Problem solved: I have modified the blog to simply reject those comments.

Jahresrueckblick 2008: MSDN in Zahlen: 91

03.12.2008 18:38:20 | Kay Giza

Jahresrückblick, Folge 3: ein Thema, ein Referent, ein Bildschirm, eine Stunde. Was das wohl sein mag? [...mehr]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Kostenfreie MSDN Service-Hotline für Entwickler
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

Welchen Twitter-Client nutzt ihr?

03.12.2008 15:31:39 | Rainer Schuster

Ich benutze bisher immer Thwirl, weil er meinen Erwartungen ganz gut entspricht. Was mir nicht gefällt (oder bin ich zu dumm?) ist die fehlende Historisierung von Nachrichten. Da ich aber im Moment nicht viel Zeit zum testen habe wollte ich mal in die Runde fragen, wer welchen Twitter-Client nutzt und warum?

Meine Kriterien:

  1. Sollte ähnlichen Funktionsumfang (oder mehr) von Twhirl haben.
  2. Schön wäre eine Historisierung in einer DB (z.B. SqLite)
  3. Schön wäre der Sourcecode (und wenn dann idealer weise in .NET)
  4. Ich suche zusätzlich noch einen guten Client der ähnliche Features aufweist für meinen HTC Touch Diamond (Windows Mobile 6)

Wer kann mir eine Empfehlung geben?

Willkommen im Internet

03.12.2008 14:41:08 | Robert Mühsig

Gerade bin ich doch auf ein Video gestoßen, dass das Internet doch ganz gut darstellt (komischer Weise sind mir einige Stellen doch sehr bekannt vorgekommen ;) )

ShareThis

User Group-Kompass: wo finde ich eine User Group in meiner Naehe?

03.12.2008 11:17:30 | Kay Giza

User Groups in Ihrer Nähe: die Landkarte von Microsoft Virtual Earth zeigt Ihnen, wo sich welche Anwender-Vereinigungen in der Regel vor Ort treffen.
Alle Infos ab heute im Community Guide bei Microsoft Deutschland: User Group-Kompass

Screenshot:
User Groups in Ihrer Nähe: die Landkarte von Microsoft Virtual Earth zeigt Ihnen, wo sich welche Anwender-Vereinigungen in der Regel vor Ort treffen.


This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Kostenfreie MSDN Service-Hotline für Entwickler
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

Gewinnspiel bei .NET Gui

03.12.2008 10:23:09 | Lars Keller

Bei .NET Gui gibt es eine BASTA! Spring 2009 Karte zu gewinnen. Man muss folgende Aufgabe erfüllen, dann kann man am Gewinnspiel teilnehmen:

Die Aufgabe

Unter unseren Tutorials findet sich seit einiger Zeit auch ein How To-Bereich. In diesem Bereich werden Hilfestellungen zu häufigen Problemen geboten. Dabei werden die Informationen nicht in einem Artikel aufbereitet, sondern möglichst kurz und knackig dargestellt.

Erstelle How To's und gewinne! Beschreibe in kurzen Sätzen wofür das How To gedacht ist und poste entsprechenden Sourcecode zum Probieren. Alle Themengebiete die in die Kategorie Grafische Benutzeroberflächen unter .NET fallen sind möglich. Dies inkludiert:

  • Windows Presentation Foundation
  • Silverlight
  • Windows Forms
  • Etc.

Unter allen Einsendungen wird ein Ticket für die BASTA! Spring 2009 Hauptkonferenz verlost. Je mehr Beiträge du schreibst, desto höher ist die Wahrscheinlichkeit, dass du als Gewinner gezogen wirst.

Der Einsendeschluss

Der Einsendeschluss ist der 16. Januar 2009. Es bleibt also genügend Zeit, jede Menge Einträge zu verfassen. Beiträge werden ab dem heutigen Tag gezählt. .NET-GUI-Team-Mitglieder sind von diesem Gewinnspiel ausgenommen. Der Gewinn ist ein Sachpreis und kann nicht ausbezahlt werden. Der Rechtsweg ist ausgeschlossen.

Viel Glück! :)

Link:



This weblog is sponsored by netcreate OHG.

Outlook 2007 und Acess 2007: visuelle, interaktive Referenzanleitung

03.12.2008 10:04:01 | Kay Giza

In meinem Blogposting 'Interaktive Befehlsreferenzanleitungen für Office 2007 zu Office 2003' hatte ich ja bereits auf bestehende interaktive Befehlsrefenzen hingewiesen.
Neu hinzugekommen sind jetzt interaktive Befehlsreferenzanleitung zu Outlook und Access. Daher hier noch mal die vollständige Liste.

Finden Sie die häufig verwendeten Befehle von nicht mehr auf der Benutzeroberfläche von Office 2007? Oder möchten Sie das neue funktionsreiche Design mit einer kleinen Hilfe kennen lernen? Kein Problem. Microsoft hat jetzt eine visuelle, interaktive Referenzanleitung entwickelt, mit der Sie sich schnell orientieren können:

Wobei ich wirklich sagen muss, das ich persönlich gar nicht wieder zurück möchte, mit den neuen Ribbons komme ich viel besser zurecht. Gut am Anfang ist es eine Umstellung, aber dann...



This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Kostenfreie MSDN Service-Hotline für Entwickler
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

heise Developer: Neuer Online-Channel fuer Softwareentwickler

03.12.2008 09:56:29 | Kay Giza

Mit einem Anfang Dezember gestarteten Online-Channel für Entwickler rückt der Heise-Verlag (Hannover) jetzt auch im Web das Thema „Softwareentwicklung“ in den Fokus. „heise Developer“ liefert täglich aktuelle News, Fachartikel, Hintergrund-Infos, Interviews und Rezensionen zu wichtigen Büchern. Das Portal will bei seiner Berichterstattung neue Entwicklungen und Standards bekannter Programmiersprachen berücksichtigen sowie wichtige Entwickler-Tools und die Arbeit mit diesen vorstellen. Themen sind auch die Softwarearchitektur und Methoden rund um die Softwareentwicklung wie agile Entwicklungsprozesse oder Design Patterns.

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Kostenfreie MSDN Service-Hotline für Entwickler
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

MSDN Magazine (Deutsch) im November: Fokus Sicherheit

03.12.2008 09:50:01 | Kay Giza

Ganz im Zeichen des Themas „Security“ steht die letzte „MSDN Magazine“-Ausgabe, die jetzt online abrufbar ist. Das als „Special Security Issue“ erschienene Heft bietet diesmal 16 Fachartikel plus die zugehörigen Code-Beispiele – nachzulesen wie immer kostenlos und exklusiv in deutscher Übersetzung hier auf MSDN Online: MSDN Magazine im November: Fokus Sicherheit
Weiterhin habe ich einen sehr interessanten Artikel gefunden, vielleicht auch für die eine oder den anderen interessant: 12 Schritte zu schnelleren Webseiten mit Visual Round Trip Analyzer

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Kostenfreie MSDN Service-Hotline für Entwickler
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

Gewinnspiel bei .NET Gui

03.12.2008 09:23:09 | Lars Keller

Bei .NET Gui gibt es eine BASTA! Spring 2009 Karte zu gewinnen. Man muss folgende Aufgabe erfüllen, dann kann man am Gewinnspiel teilnehmen:

Die Aufgabe

Unter unseren Tutorials findet sich seit einiger Zeit auch ein How To-Bereich. In diesem Bereich werden Hilfestellungen zu häufigen Problemen geboten. Dabei werden die Informationen nicht in einem Artikel aufbereitet, sondern möglichst kurz und knackig dargestellt.

Erstelle How To's und gewinne! Beschreibe in kurzen Sätzen wofür das How To gedacht ist und poste entsprechenden Sourcecode zum Probieren. Alle Themengebiete die in die Kategorie Grafische Benutzeroberflächen unter .NET fallen sind möglich. Dies inkludiert:

  • Windows Presentation Foundation
  • Silverlight
  • Windows Forms
  • Etc.

Unter allen Einsendungen wird ein Ticket für die BASTA! Spring 2009 Hauptkonferenz verlost. Je mehr Beiträge du schreibst, desto höher ist die Wahrscheinlichkeit, dass du als Gewinner gezogen wirst.

Der Einsendeschluss

Der Einsendeschluss ist der 16. Januar 2009. Es bleibt also genügend Zeit, jede Menge Einträge zu verfassen. Beiträge werden ab dem heutigen Tag gezählt. .NET-GUI-Team-Mitglieder sind von diesem Gewinnspiel ausgenommen. Der Gewinn ist ein Sachpreis und kann nicht ausbezahlt werden. Der Rechtsweg ist ausgeschlossen.

Viel Glück! :)

Link:

Gewinnspiel bei .NET Gui

03.12.2008 00:23:00 | Lars Keller

Bei .NET Gui gibt es eine BASTA! Spring 2009 Karte zu gewinnen. Man muss folgende Aufgabe erfüllen, dann kann man am Gewinnspiel teilnehmen:

Die Aufgabe

Unter unseren Tutorials findet sich seit einiger Zeit auch ein How To-Bereich. In diesem Bereich werden Hilfestellungen zu häufigen Problemen geboten. Dabei werden die Informationen nicht in einem Artikel aufbereitet, sondern möglichst kurz und knackig dargestellt.

Erstelle How To's und gewinne! Beschreibe in kurzen Sätzen wofür das How To gedacht ist und poste entsprechenden Sourcecode zum Probieren. Alle Themengebiete die in die Kategorie Grafische Benutzeroberflächen unter .NET fallen sind möglich. Dies inkludiert:

  • Windows Presentation Foundation
  • Silverlight
  • Windows Forms
  • Etc.

Unter allen Einsendungen wird ein Ticket für die BASTA! Spring 2009 Hauptkonferenz verlost. Je mehr Beiträge du schreibst, desto höher ist die Wahrscheinlichkeit, dass du als Gewinner gezogen wirst.

Der Einsendeschluss

Der Einsendeschluss ist der 16. Januar 2009. Es bleibt also genügend Zeit, jede Menge Einträge zu verfassen. Beiträge werden ab dem heutigen Tag gezählt. .NET-GUI-Team-Mitglieder sind von diesem Gewinnspiel ausgenommen. Der Gewinn ist ein Sachpreis und kann nicht ausbezahlt werden. Der Rechtsweg ist ausgeschlossen.

Viel Glück! :)

Link:

Es gibt kein perfektes Design, oder doch?

02.12.2008 21:45:00 | Peter Bucher

Die einzige Konstante der Software-Entwicklung ist die Veränderung.

Das Wunschdenken geht bei vielen Entwicklern in Richtung "Perfektes Design" oder "Wie kann ich das besser lösen".
Soweit, sogut...

Dieses Denken fördert natürlich die Schönheit, Klarheit und folglich auch die Lesbarkeit vom Resultat: Dem Code.

Jedoch ist das Resultat im kommerziellen Sinne primär nicht der Code, sondern die Funktionalitäten die sich aus den Anforderungen ergeben, egal wie der Code dahinter schliesslich aussieht.
Der Code steht vielfach, vorallem bei laufenden Projekten die schon viele Altlasten mit sich tragen, an zweiter Priorität.

Dem Gedanken "Ich könnte dies oder jenes doch besser / sauberer / flexibler lösen" stehen dann Projekteinschränkungen wie beispielsweise die Deathline entgegen.

Ich zitiere zwei Sätze aus dem Blogpost There Is No Perfect Design von Phil Haack.

If a project doesn't have a time constraint, it will never get finished.

Irgendwie logisch, oder?
Wenn es keinen Zeitplan / Deathline gibt, wird immer nach dem perfekten Design gestrebt.
Genau so logisch wie die daraus folgende Aussage (Die mich an meine privaten Projekte erinnert :-)):

That explains why I never finish my personal projects.

Ich denke es ist sinnvoll, sich auch im privaten Rahmen Ziele und eine gewisse Zeitspanne dafür abzustecken.

Bei privaten sowohl auch kommerziellen Projekten bleibt in zweiter Priorität - also wenn mal ein bisschen Luft ist / oder aber die Notwendigkeit wirklich besteht - immer noch Zeit das Design und den Code anzupassen, ob das Ergebnis dann gleich bleibt (kurzsichtig gesehen) oder nicht.

Wie sind eure Gedanken und Erfahrungen zu diesem Thema?

Update:
Ist ja sehr nett das ich eine (bzw. zwei) Diskussionen angeregt habe, allerdings möchte ich nicht falsch verstanden werden
und veröffentliche daher meinen Kommentar bei Alex auch noch hier:

Hoi Alex

> Peters Ansichten hätte ich vermutlich mit den Worten “wenn man will, geht es auch mit gutem Design von Beginn an” widersprochen.

Öhm sorry Alex, das will ich aber nicht ;-)
Dann hast du mich wohl falsch verstanden, ich habe mich allgemein ausgedrückt und eher in Hinsicht auf bestehende Projekte mit Altlasten, sowie dem Druck von den Chefs, die dann "irgendwann" mal Zeit einplanen um was "richtg" zu machen.

Ich selber bin genau deiner Ansicht und mein Bestreben ist es natürlich auch, wenne es geht von Anfang an, an solchen Prinzipien und Vorgehen festzuhalten.

Wenn das allerdings nicht geht, bleibt es wohl erzwungenermassen zweite Priorität.

Also meine revidierte Aussage, da ich wohl falsch verstanden wurde:

--
1. Wenn man was perfekt machen möchte, muss man sich auch mal eingestehen das es bis zum Moment perfekt genug ist, da man sonst zu keinem grünen Zweig kommt.

2. Bei kommerziellen Projekten mit Altlasten muss ein solches Wunschenken vom schönen Design bwz. solider Architektur im Moment vielfach erzwungenermassen im Hintergrund gelassen werden, sollte jedoch schnellstmöglich aufgefasst werden da sonst der Aufwand bei einem Redesign / Erweiterung dann erheblich steigt.
--


Gruss Peter

Jahresrueckblick 2008: MSDN in Zahlen: 884

02.12.2008 18:33:25 | Kay Giza

Folge 2 unserer Jahresrückschau wirft einen Blick auf die MSDN-Aktivitäten, die dafür sorgen, dass Sie stets auf dem Laufenden bleiben: MSDN Aktuell.

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Kostenfreie MSDN Service-Hotline für Entwickler
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

MSDN Office Developer Center: neue Inhalte

02.12.2008 09:52:07 | Kay Giza

Microsoft Office SystemVor einiger Zeit haben wir das MSDN Office Developer Center aufgeräumt, neu strukturiert, neue Inhalte hinzugefügt.
Insbesondere auf zwei Punkte haben wir uns fokussiert: 1. Produkt- und Technologie-Übersichten sowie 2. Erste Schritte
Dies resultierte aus vielen Dialogen und Feedbacks der Office Developer bzw. Ihnen. Dafür vielen Dank! :)


Somit kann ich folgendes grob skizzieren:

Lassen Sie mich nun auf einige Seiten hinweisen:

  • Office-Entwicklung mit Visual Studio
    Mit Visual Studio können Sie Anwendungen für die Microsoft Office-Systeme 2003 und 2007 mithilfe von Visual Basic und Visual C# erweitern. Zu den Tools gehören Visual Studio-Projekte, mit denen Office Business Application-Lösungen erstellt werden können.
    Auch hier finden Sie eine Rubrik namens "Erste Schritte" oder "aktuelle Code-Beispiele".
  • SharePoint Server 2007-Entwicklerportal
    Hier finden Sie Informationen zum Planen, Codieren, Erstellen, Bereitstellen und Migrieren von Lösungen für SharePoint Server.
  • Access-Entwicklerportal
    In diesem Abschnitt finden Sie Artikel und Codebeispiele, die verdeutlichen, wie Sie mit Access komplexe Lösungen erstellen, Daten für das Web erweitern und schneller Datenbanklösungen erstellen können.
  • Lernen Sie Office kennen!
    U.a. empfand ich persönlich diese Seite mit am wertvollsten, unabhängig davon, ob Sie Anfänger oder Experte sind, beginnt die Informationssuche hier - wenn Sie schnell einen Überblick bekommen wollen. Wenn Sie jedoch Informationen zu ersten Schritten bei der Office-Entwicklung benötigen, finden Sie diese unter Erste Schritte und Erläuterungen zur Office-Entwicklung.
  • Microsoft Office System: Produkte und Technologien auf einen Blick
    Auch hier für mich persönlich eine der interessantesten Übersichtsseiten. Ich habe hier Produkte bzw. Technologien kennengelernt, darf man ja gar nicht laut sagen, die entweder aus meinem Gedächtnis verdrängt wurden oder ... ;-). Alle Produkte und Technologien in der Übersicht - einfach aufbereitet, jeweils mit Hyperlinks zu den jeweiligen Unterseiten.
  • Haben Sie noch nie für Office entwickelt?
    Microsoft Office System stellt eine Gruppe von leistungsstarken integrierten Programmen, Servern, Diensten, Tools und Technologien bereit, mit denen Entwickler robuste Unternehmenslösungen erstellen können, um Prozesse zu optimieren und Mitarbeiter miteinander zu vernetzen und ihnen Informationen zugänglich zu machen. Falls Sie noch nie für Office entwickelt haben und mehr über die Möglichkeiten erfahren möchten, die Microsoft Office System zum Entwickeln von Lösungen bereitstellt, finden Sie Erste Schritte bei der Office-Entwicklung die benötigten Infos für den ersten Schritt!
  • Videos und Webcasts für Office-Entwickler
    Möchten Sie Einblicke hinter die Kulissen von Office erhalten? In diesen Videos werden die Neuigkeiten in 2007 Microsoft Office System vorgestellt.


This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Kostenfreie MSDN Service-Hotline für Entwickler
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

Jahresrueckblick: MSDN in Zahlen

01.12.2008 17:08:00 | Kay Giza

Abgerechnet wird immer am Schluss: Zum Jahresende zieht das MSDN Online-Team seine eigene kleine Bilanz und präsentiert Ihnen im Dezember mit „MSDN in Zahlen“ einen Jahresrückblick der etwas anderen Art. An allen Werktagen gibt’s hier eine „Zahl des Tages“, die den Blick mal auf wichtige, mal auf weniger wichtige MSDN-Ereignisse im Verlauf der letzten zwölf Monate richtet. Mal schauen, wie Ihnen unserer Jahresrückblick gefällt, wir haben versucht eine gute Balance zwischen bekannten und bekannten Inhalten zu legen. Den Anfang macht die „140“.

140
140 Im Februar erschienen ist die 2. Ausgabe der Microsoft Webcast-DVD. Wie ihr Vorgänger bietet sie eine umfangreiche Sammlung von Vorträgen, die in den vergangenen Monaten auf den deutschsprachigen Webportalen von Office Online, MSDN und TechNet veröffentlicht wurden – insgesamt rund 140 Webcasts für Office-Anwender, Führungskräfte, Entwickler und IT-Professionals. Die nächste Folge der Webcast-DVD erscheint Anfang 2009.
Mehr Informationen zu MSDN Webcasts finden Sie im MSDN Webcast-Finder.



This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Kostenfreie MSDN Service-Hotline für Entwickler
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

Silverlight 2 on Tour im Januar: Die Silverlight/RIA-TechTalks mit Oliver Scheer

01.12.2008 11:15:00 | Steffen Ritter

Silverlight-Experte Oliver Scheer ist im Januar im Rahmen der Microsoft TechTalks auf Tour und hält jeweils einen ganzen Abend lang einen Vortrag rund um das Thema Silverlight 2 - viele spannende Entwickler- und Designer-Demonstrationen inklusive. Teilnahme an den TechTalks ist natürlich wie immer kostenlos, eine Anmeldung ist allerdings notwendig.

Die Termine:

  • 13. Januar 2009, Berlin
  • 14. Januar 2009 Hamburg
  • 19. Januar 2009 Köln
  • 21. Januar 2009 München
  • 27. Januar 2009 Karlsruhe

Zur Anmeldung geht es hier entlang: http://www.microsoft.com/germany/msdn/techtalk/default.mspx
Zum Blog von Oliver Scheer: http://blogs.msdn.com/olivers

Dynamic Language Runtime - .NET, quo vadis?

01.12.2008 09:37:00 | Peter Bucher

Golo Roden und ich haben am 13. Oktober angekündigt, jeweils zum ersten eines Monats jeweils ein Beitrag zu einem vorher festgelegten Thema zu veröffentlichen.
Die Überraschung bei diesen Veröffentlichungen ist beidseitig, da die Themen den Lesern zum Vornherein nicht bekannt sind und Golo sowie ich auch nicht wissen, was wir jeweils dazu geschrieben haben.

Heute ist es soweit und das Thema heisst: "Dynamic Language Runtime - .NET, quo vadis?"
Das Gegenstück zu diesem Beitrag findet sich auf dem Blog von Golo.

Die Laufzeitumgebung von .NET, CLR (Common Language Runtime) sollte jeder .NET-Entwickler zumindest mal gehört haben.
Unter anderem stellt die CLR für die auf ihr aufbauenden Sprachen gemeinsame Dienste bereit (Garbage Collection, JIT-Kompilierung, Sandbox-Sicherheitsmodell, ...).

Dies ergibt zwei wesentliche Vorteile:

  • Neue Sprachen lassen sich aufgrund von gegebenen Gemeinsamkeiten in der Basis (CLR) leichter implementieren
    Sprachen die auf der CLR aufbauen können jeweils auf anderen Sprachen aufbauen bzw. mit ihnen zusammenarbeiten (Bibliotheken in einer anderen Sprache wiederverwenden)
  • Es gibt inzwischen dutzende von von Sprachen für .NET, eine Liste davon: http://dotnetpowered.com/languages.aspx, dabei sind nicht nur strukturierte, sondern auch funktionale Sprachen vorhanden.

Microsoft arbeitet schon länger an IronPhyton (http://www.codeplex.com/IronPython).
Im Rahmen dieses Projekts haben die Arbeiten an einer Dynamic Language Runtime begonnen, die jetzt als eigenständiges Projekt auf Codeplex verfügbar ist.

Die DLR stellt gemeinsame Services für alle Sprachen zur Verfügung, unter anderem ein dynamisches Typsystem und Services zur dynamischen Ausführung und Generierung von Code.

Die DLR wurde aufbauend zur CLR entwickelt, nutzt also dessen Implementation und wird dazu benutzt dynamische Programmiersprachen zu implementieren.

Ein grosser Unterschied stellt das dynamische Typsystem vs. dem statischen Typsystem (Bspw. C# / VB.NET) dar:

Dynamisches Typsystem (Typüberprüfung und Zuweisung zur Laufzeit)

  • Langsamere Ausführung / dagegen schnellere Kompilierung, d.h. unter anderem das sich die Zeit des Bearbeiten / Testen / Debugging-Zyklus verringert
  • Typen werden zur Laufzeit bei ihrer Benutzung überpprüft
  • Absicherung gegen Fehler zur Entwicklungszeit mit der Nutzung von Unit Tests

Statisches Typsystem (Typüberprüfung und Zuweisung zur Kompilezeit)

  • Schneller da die Typen zur Kompilezeit getestet werden
  • Absicherung gegen Fehler zur Kompilezeit (Optional Unit Tests) und Laufzeitüberprüfung (Debugging)

Die Nutzung von dynamischen Programmiersprachen wird vielerorts im Bereich von Scripting und Plug- / AddIn-Systemen erläutert.
Auch stellt das Austauschen von Daten in Formaten die sich schnell ändern können (Bspw. XML-Formate) ein Nachteil für die statisch typisierten Sprachen dar und wiederum ein Vorteil für die dynamisch typisierten Sprachen (Parsen vs. dynamische Interpretierung bzw. Ausführung).

Bisher habe ich dieses Thema immer mit ein wenig Abstand beobachtet und ich konnte mir keinen richtigen Reim daraus machen. Im Laufe meiner Nachforschungen ist mir aber klar geworden, dass dieser Entwicklung Beachtung geschenkt werden muss.
Über kurz oder lang muss sich jeder wohl damit ein wenig auseinandersetzen, jedoch stellt die Entwicklung eine Erweiterung der Möglichkeiten dar und nicht die Verdrängung alter Möglichkeiten.

Für Interessierte, ein paar Links um sich weiter damit auseinanderzusetzen:

Regeln | Impressum