.
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

Zeit für ein zeitloses Posting

28.12.2008 08:25:34 | Gordon Breuer

Es ist in letzter Zeit ein wenig ruhiger hier in meinem Blog geworden. Nur ein kleiner Artikel im Dezember bisher, das ist etwas wenig wenn man die zwei bis drei Artikel pro Woche in der Zeit davor betrachtet. Gab es nichts zu berichten? Keine Zeit das berichtenswerte auch schriftlich festzuhalten? Warum dann aber auch so wenig aktuelle Twitter-Nachrichten?

(c) Photocase.com Zunächst die gute Nachricht: Ich habe weder “nichts” zu berichten noch habe ich das Interesse am Blog oder an der Community verloren. In letzter Zeit habe ich mich mit vielen interessanten Dingen beschäftigt, viel neues ausprobiert und auf meiner ToDo-Liste, die der Windows Live Writer liebevoll “Drafts” nennt, stehen einige Themen zu denen ich Artikel vorbereitet oder angefangen habe. Allerdings bin ich kein Freund von “Notiz-Postings” mit 3 Sätzen und einem Link. Und ein Gebirge, in dem nur das Echo anderer Blog-Artikel widerhallt, ist meine Seite auch nicht. Wenn ich über ein interessantes Thema bereits in einigen einschlägigen Blogs gelesen habe, dann muss ich das ganze nicht etwas anders dekorieren und meinen Lesern als aufgewärmtes Essen erneut servieren. Etwas anderes ist es, wenn ich denke einen differenzierten Blickwinkel zu haben oder auch einen bisher unerwähnten Aspekt stärker hervorheben zu müssen. Aber ein solcher Artikel benötigt zweierlei Dinge: Zeit für die Recherche und das Schreiben, aber auch – und das ist wichtig – ein wenig Lust es zu formulieren und zu veröffentlichen.

(c) Photocase.com Der erste Punkt, die Zeit für das Recherchieren und Schreiben, ist natürlich immer so eine Sache. Wenn man viele Stunden am Tag im Büro verbringt möchte man in seiner Freizeit oft etwas anderes machen. Viele haben ihre Familie und Freunde als Ausgleich oder ein Hobby, dass möglichst wenig mit der Arbeit zu tun hat. Hat man sich aber die Zeit genommen, ist der Artikel meist vorbereitet schon im Kopf. Fehlt der wichtige zweite Punkt: Das Formulieren und Veröffentlichen. Ich schreibe gerne und viele sagen auch, dass ihnen meine Texte gefallen; etwas das ich natürlich wie jeder andere auch gerne höre. Allerdings steckt dahinter mehr Arbeit als einfach nur seine Gedanken schriftlich festzuhalten: Man macht sich Gedanken über Formulierungen, stilistische Mittel, lockert den Text für seine Leser möglichst soweit auf das diese auch bei längeren Absätzen noch gerne weiterlesen. Doch ist das keine reine Fleißarbeit sondern vor allem auch eine kreative Tätigkeit. Man muss dafür den Kopf frei haben um nicht mit allen möglichen anderen Dingen abgelenkt zu sein. Und hier liegt bei mir im Moment der sprichwörtliche Hund begraben. Nein, ich habe kein Haustier zu Grabe getragen, ich kann Hunde nicht einmal besonders leiden – aber gerade in der Vorweihnachtszeit denkt man an soviele andere Dinge, dass mir für das Schreiben einfach kein Elan mehr blieb.

Gar keiner? Nunja, das stimmt nicht ganz. In den letzten Monaten habe ich für den Newsletter der Firma bei der ich arbeite einige Artikel geschrieben. Neben einer Kolumne zum Thema “Sicherheit” kamen dann noch viele kleine Artikel dazu. Auch für den Ultima Online Freeshard “Land of Dreams: The Renaissance”, den ich zusammen mit einem Arbeitskollegen betreibe, habe ich wieder vermehrt an der Programmierung gearbeitet. Da es hier auch um “Questen” ging, mussten auch zahlreiche Texte geschrieben werden – und die mittelalterliche Sprache der Fantasywelt machen die Sache nicht unbedingt einfacher. Aber das habe ich alles gerne gemacht und es deshalb um so mehr bedauert, dass ich mein eigenes Blog vernachlässigt habe.

(c) Photocase.com Einige mögen sich auch fragen, wieso ich nicht wenigstens ein Posting á la “Frohe Weihnachten all’ meinen Lesern” geschrieben habe. Natürlich wünsche ich allen eine besinnliche Weihnachtszeit, aber für die meisten ist das ehemalige “Fest der (Nächsten-)Liebe” doch sowieso nur noch ein Konsumkampf geworden: Parkplatzsuche, überfüllte Geschäfte, Weihnachtsmärkte mit 90% “Fressbuden”-Anteil und die alljährliche Frage “Was schenke ich nur?”. Das, was wir alle am meisten gebrauchen könnten, mehr Zeit und Ausgeglichenheit, kann man schlußendlich von niemandem geschenkt bekommen außer von uns selbst. Warum sollen wir also eine Floskel wie “Frohe Weihnachten” überhaupt in die Welt schrei(h|b)en wenn wir uns selber auch nicht daran halten? Ich bekam soviele E-Mails und Postkarten mit Weihnachtsgrüßen wie noch nie, doch als Absender waren es fast immer irgendwelche Versandhäuser oder andere Firmen, die in Wirklichkeit sich selbst mit steigenden Umsätzen gratulieren möchten. Gute Vorsätze? Um es mit den Worten von Bernhard Hoëcker zu sagen: “Wer sich etwas fürs neue Jahr vornimmt hat es nur wieder verschoben.

(c) Aboutpixel.de Ich möchte mich deshalb an dieser Stelle bei allen Besuchern und (regelmäßigen) Lesern meines Blogs bedanken; für ihre Treue und ihre Meinung in Form von Kommentaren und E-Mails. Auch im neuen Jahr werde ich hoffentlich noch viele neue Leser dazugewinnen können und verspreche an dieser Stelle schon einmal zahlreiche interessante Artikel zu den verschiedensten Themen so dass hoffentlich für jeden etwas lesenswertes dabei ist. Vorschläge für Themen sind natürlich ebenso gerne gesehen – wenn es mein Interesse weckt werde ich darauf auch sehr gerne eingehen.

Ich wünsche allen meinen Lesern deshalb jetzt schon ein erfolgreiches neues Jahr mit dem Wunsch, dass jeder mit sich selbst ein wenig zufriedener wird!

Projekte, Projekte, Projekte ...

27.12.2008 18:15:48 | Norbert Eder

... was fehlt ist die Zeit dazu. Aber die muss man sich bekanntlich ja nehmen! Die Feiertage nach Weihnachten und rum um Silvester eignen sich wunderbar, neben Familie und Co. an Projekten zu arbeiten bzw. an bestehenden bzw. zukünftigen Projekten zu planen. Schließlich nähert sich 2009 auch mit großen Schritten und bekanntlich sollte man sich...

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

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

Live-Update + Silverlight

22.12.2008 17:38:43 | Norbert Eder

Leider habe ich keinen Screenshot gemacht, was mir jedoch beim Update der Live-Produkte aufgefallen ist: Es findet auch eine Überprüfung der installierten Silverlight-Version statt - vermutlich also wohl auch ein Update, wenn notwendig.

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

Hilfe! Ich werde verändert!

22.12.2008 09:13:35 | Norbert Eder

Im Artikel Ich werde beklaut! habe ich darüber geschrieben, wie einfach Ressourcen aus einer WPF-Anwendung entwendet werden können und warum es sich - aus meiner Sicht - nicht lohnt, diese Inhalte mit hohem Aufwand zu schützen. Nun ist das Stehlen von Ressourcen (Layouts, Styles, Grafiken, etc.) wohl eine der häufigsten Arten, aber nicht die...

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

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.  

Docking wie Visual Studio

19.12.2008 12:55:23 | Norbert Eder

Wer ein richtiges Docking abseits des DockPanels benötigt, der sei auf AvalonDock hingewiesen. Damit lassen sich innerhalb kürzester Zeit Docking-Szenarien á la Visual Studio realisieren. Hier ein XAML-Markup zur Demonstration: <Grid> <ad:DockingManager x:Name="dockManager"> <ad:ResizingPanel...

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

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

Ich werde beklaut!

18.12.2008 22:34:11 | Norbert Eder

Das trifft wohl nicht oft zu. Aber sehr viele Softwareunternehmen haben Angst, beklaut zu werden. Beklaut hinsichtlich Ideen, Sourcecode oder Ähnlichem. Fast täglich werde ich von unterschiedlichsten Personen darauf angesprochen - meist hinsichtlich WPF - wie man sich effektiv davor schützen kann. Sind erst mal die grundlegenden Informationen...

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

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

UPDATE: WPF-Blogger

17.12.2008 18:25:06 | Norbert Eder

Wie bereits angekündigt wird WPF-Blogger in der nächsten Zeit um zusätzliche Features erweitert. Seit gestern Abend steht die RSS-Feed-Funktionalität zur Verfügung. Je nach Geschmack kann der gesamte Feed bezogen werden (dieser inkludiert die Feeds aus allen Sprachen) und/oder die jeweiligen Sprach-Feeds. Weitere Features und Verbesserungen...

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

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

CustomAttributeFormatException bei fehlendem .NET 3.5 SP1

16.12.2008 17:46:56 | Mathias Raacke

Ich hatte heute einen Fehler nach dem ich länger (naja “länger” ist relativ) suchen musste, weil es dazu weder auf Live noch auf Google passende Ergebnisse gab. Deshalb hier die Lösung:

Falls man versucht, eine .NET 3.5 SP1 Anwendung, die einen WCF Dienst aufruft, auf einem System ohne SP1 laufen zu lassen, kann es zu folgender Exception kommen:

System.Reflection.CustomAttributeFormatException: 'IsReference' property specified was not found. ---> System.NullReferenceException: Object reference not set to an instance of an object.

   at System.Reflection.CustomAttribute.GetCustomAttributes(Module decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes)

   --- End of inner exception stack trace ---

   at System.Reflection.CustomAttribute.GetCustomAttributes(Module decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes)

   at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeType type, RuntimeType caType, Boolean inherit)

   at System.Runtime.Serialization.DataContract.TryGetDCAttribute(Type type, DataContractAttribute& dataContractAttribute)

   at System.Runtime.Serialization.DataContract.GetStableName(Type type, Boolean& hasDataContract)

   at System.Runtime.Serialization.ClassDataContract.ClassDataContractCriticalHelper..ctor(Type type)

   at System.Runtime.Serialization.ClassDataContract..ctor(Type type)

   at System.Runtime.Serialization.DataContract.DataContractCriticalHelper.CreateDataContract(Int32 id, RuntimeTypeHandle typeHandle, Type type)

   at System.Runtime.Serialization.DataContract.GetDataContractSkipValidation(Int32 id, RuntimeTypeHandle typeHandle, Type type)

   at System.Runtime.Serialization.XsdDataContractExporter.GetSchemaTypeName(Type type)

   at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.ValidateDataContractType(Type type)

   at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.CreatePartInfo(MessagePartDescription part, OperationFormatStyle style, DataContractSerializerOperationBehavior serializerFactory)

   at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.CreateMessageInfo(DataContractFormatAttribute dataContractFormatAttribute, MessageDescription messageDescription, DataContractSerializerOperationBehavior serializerFactory)

   at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter..ctor(OperationDescription description, DataContractFormatAttribute dataContractFormatAttribute, DataContractSerializerOperationBehavior serializerFactory)

   at System.ServiceModel.Description.DataContractSerializerOperationBehavior.GetFormatter(OperationDescription operation, Boolean& formatRequest, Boolean& formatReply, Boolean isProxy)

   at System.ServiceModel.Description.DataContractSerializerOperationBehavior.System.ServiceModel.Description.IOperationBehavior.ApplyClientBehavior(OperationDescription description, ClientOperation proxy)

   at System.ServiceModel.Description.DispatcherBuilder.BindOperations(ContractDescription contract, ClientRuntime proxy, DispatchRuntime dispatch)

   at System.ServiceModel.Description.DispatcherBuilder.BuildProxyBehavior(ServiceEndpoint serviceEndpoint, BindingParameterCollection& parameters)

   at System.ServiceModel.Channels.ServiceChannelFactory.BuildChannelFactory(ServiceEndpoint serviceEndpoint)

   at System.ServiceModel.ChannelFactory.CreateFactory()

   at System.ServiceModel.ChannelFactory.OnOpening()

   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)

   at System.ServiceModel.ChannelFactory.EnsureOpened()

   at System.ServiceModel.ChannelFactory`1.CreateChannel(EndpointAddress address, Uri via)

   at System.ServiceModel.ChannelFactory`1.CreateChannel()

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.

ToDos

16.12.2008 14:27:26 | Mathias Raacke

Nachdem mein letztes Projekt nun quasi abgeschlossen ist, habe ich endlich wieder Zeit für viele viele Dinge, die in letzter Zeit liegen geblieben sind:

1. Ein Review zu NDepend schreiben

2. Mit Björn absprechen, wie ich meine Erweiterungen in sein xUnit BDD Extensions Projekt integrieren kann (einer meiner Kollegen und ich haben beim Schreiben der Unit Tests in unserem Projekt einige neue Methoden für die BDD Extensions geschrieben) (als ich gerade auf Live mit “björn rochel blog” den Link auf sein Blog gesucht hatte kam sein Blog auf Platz 2 hinter meinem *g*).

3. Schon länger geplante 2. Teile zu verschiedenen Blogeinträgen schreiben (insbesondere zum MVP-Pattern mit ASP.NET, da wurde ich schon per Mail nach dem 2. Teil gefragt)

4. Eine neue Web Seite für dotnet-paderborn.de schreiben. Leider hat sich in der User Group niemand für diese Aufgabe gefunden, dabei hätten wir dafür sogar eine Visual Studio Lizenz vergeben. Naja, jetzt muss ich die Seite halt selbst schreiben, eine gute Gelegenheit, mich endlich mit ASP.NET MVC zu beschäftigen.

5. Mal wieder einen Artikel für eine Zeitschrift schreiben. Vielleicht auch eine Serie. Ideen habe ich aus dem letzten Projekt mehr als genug. Vielleicht auch mal für eine Zeitschrift, für die ich bisher noch nicht geschrieben habe.

6. Mehr bloggen und aktiver an Mailinglisten beteiligen (ALT.NET z.B.).

7. Das erste Agile-NRW Treffen organisieren (mehr dazu später).

8. Vorträge für die BASTA! vorbereiten. Insbesondere den zum Thema ASP.NET + Entity Framework. Den hatte ich ursprünglich mit LINQ to SQL eingereicht, aber das ist nicht mehr erwünscht seitdem Microsoft offiziell bestätigt hat, dass es nicht mehr weiter entwickelt wird. Finde ich sehr schade, denn meiner Meinung nach ist  LINQ to SQL für viele Anwendugnsfälle im Moment deutlich besser geeignet als das Entity Framework. Das EF wird voraussichtlich erst ab der nächsten Version wirklich brauchbar.

9. Weihnachtsgeschenke kaufen. Aber da habe ich ja noch über eine Woche Zeit ;-).

10. Eine Schulung im Januar vorbereiten.

11. Meine Diplomarbeit anfangen (“Internationalisierung von WPF Anwendungen”)

12. Die vielen Bücher lesen, die ich mir in den letzten Wochen bestellt habe (hört auf Bücher in euren Blogs oder auf der ALT.NET Mailingliste zu empfehlen, mir geht langsam der Platz dafür aus! ;-) ).

13. Endlich entscheiden, ob ich über Silvester verreise oder nicht, und wohin.

14. Mal wieder ins Fitness-Studio gehen. Ich war seit Monaten nicht mehr da. Das nächste Mal sollte ich mir eins suchen, das auch Nachts geöffnet hat.

15. Die letzte Prüfung zum MCSE 2003 bestehen, solange das noch möglich ist, anschließend vielleicht noch das Upgrade auf MCITP für Server 2008.

Bestimmt habe ich auch noch irgendetwas in dieser Liste vergessen. Also langweilig wird mir wohl in nächster Zeit nicht, auch ohne Projekt.

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.

Neues Service für WPF- und Silverlight-Entwickler

15.12.2008 18:37:39 | Norbert Eder

Die erste Phase ist geschafft. WPF-Blogger.com ist online. Dabei handelt es sich im ersten Schritt um ein Aggregat aus bekannten Blogs mit den Themenschwerpunkten WPF und Silverlight. Sinn und Zweck ist es, allen WPF- und Silverlight-Entwicklern und -Interessieren eine Anlaufstelle zur Informationsbeschaffung und zum Zugang zu Experten auf...

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

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

Silverlight 2 VantagePoint Silverlight Controls von Mobiform

13.12.2008 13:00:00 | Jens Peter Kleinau

Wenn man die Werbeankündigungen der Hersteller liest, so sind die Finanzkrise und andere (Un)worte des Jahres 2008 sicher allein schon damit zu lösen, dass man die richtigen GUI-Controls nimmt. Ich erhielt gerade die folgende Meldung: Mobiform is excited to announce VantagePoint Silverlight Controls, a suite of UI controls that will take your RIA development to the next level. Für die weniger...

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

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

Playstation 3: Home in wenigen Stunden für alle verfügbar

10.12.2008 19:57:37 | Norbert Eder

Laut Sony Entertainment ist Home in wenigen Stunden (11.12.2008) für weltweit verfügbar. Zwar bleibt Home noch immer im Beta-Stadium, nichts desto trotz kann es nun von jedem Playstation3-Benutzer verwendet werden. Das Warten hat also ein Ende (zumindest für diejenigen, die nicht an der closed Beta teilnehmen konnten). Infos, Screenshots und...

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

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

Alt, aber gut!

10.12.2008 12:33:54 | Norbert Eder

© David Vignoni Die Zeit vergeht! Voriges Jahr hatte ich den Geburtstag übersehen und auch dieses Jahr erging es mir nicht anders (mit zunehmendem Alter werden Geburtstage wohl zunehmend verdrängt). Unabhängig dessen, es gilt zu feiern! Mein Blog Living .NET ist nun bereits drei Jahre alt. Wie alles begann und vor allem, wann denn nun...

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

Silverlight Toolkit Dezember 2008 veröffentlicht

10.12.2008 11:33:19 | Norbert Eder

Gestern wurde das Silverlight Toolkit December 2008 veröffentlicht. Hier ein Auszug, was sich verändert hat: More than 80 improvements and bug fixes AutoCompleteBox and NumericUpDown have been moved into the Stable Quality Band. Three new themes have been added: Bureau Black, Bureau Blue and Whistler Blue. The sample application has been...

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

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).

Aktualisierte Vortragsthemen

05.12.2008 15:59:39 | Thomas Schissler

In den letzten Wochen war ich recht viel mit Vorträgen auf Tour. Inzwischen hat sich eine stattliche Anzahl von Vortragsthemen angesammelt. Unten sieht man eine Übersicht. Wer Interesse hat, dass ich einen Vortrag halte, darf sich gerne bei mir melden. Über das INEATA Speaker Bureau bin ich für INEATA UserGroups auch kostenlos zu buchen. Ansonsten würde ich mich auch über Feedback freuen. Sollte ich noch ein Thema mit aufnehmen, wer hat schon einen Vortrag von mir gehört und wie hat er gefallen etc.

Titel Dauer Abstract
Qualitätsmanagement mit VSTS und TFS 1 Std - 3 Std. Qualität spielt bei Software eine immer stärkere Rolle. Gleichzeitig werden immer effizientere  Entwicklungsprozesse angestrebt. Dies lässt sich nur mit geeigneter Tool-Unterstützung und passenden Lösungen zu Prozessen und Software-Architektur erzielen. Mit Visual Studio Team System und Team Foundation Server stehen Tools zur Verfügung, die nicht nur eine entsprechende Testunterstützung bietet, sondern auch komplette Qualitätsprozesse unterstützt. Der Vortrag zeigt, wie Qualitätsprozesse durch TFS unterstützt werden. Anschließend werden verschiedene Testmethoden vorgestellt und einige Praxis-Tipp für deren Einsatz gegeben.
Agile Development Process - Ein Architekturbasierter Entwicklungsprozess 1 Std Vortrag,
1 Std. Demo
Moderne Software-Anwendungen werden immer komplexer. Dadurch gewinnt auch die Software-Architektur immer mehr an Bedeutung. Wartbarkeit, Testbarkeit, Erweiterbarkeit und Teamentwicklung sind nur einige Aspekte, die eine gute Architektur unterstützen soll. Doch diese Aspekte können nicht durch ein einzelnes Architekturkonzept abgedeckt werden. Dieser Vortrag stellt verschiedene Architektur-Patterns wie Komponentenorientierung, Contract First Design, Service-Orientierung und UI Driven Development vor. Und vor allem wird gezeigt, wie diese Konzepte zu einem praxiserprobten Entwicklungsprozess verbunden werden können. 
Mehrschichtige Architekturen mit .Net 1 Std. Mehrschichtige Architekturen sind heute eigentlich oft Standard, vor allem bei verteilten Anwendungen. Allerdings wird diese Architektur oftmals zu sehr an technischen Belangen ausgerichtet. Die Session zeigt, wie man mehrschichtige Architekturen plant und diese flexibel und leitungsfähig aufbaut. Es werden verschiedene praxiserprobte Patterns vorgestellt.
Build-Management mit Team Foundation Server 1 Std. Mit Team Foundation Server steht ein leistungsfähiges integriertes Buildsystem zur Verfügung. Wie man dieses im Rahmen der Projekte nutzt und welche Vorteile sich daraus ergeen zeigt diese Session. Darüber hinaus wird der Einsatz verschiedener Buildsteps zum Deployment, Versionierung etc. vorgestellt.
Testing Practices mit VSTS und TFS 1 Std. - 3 Std. VSTS bringt eine ganze Reihe von Testmethoden. Insbesondere die Edition für Tester bietet verschiedene Testarten. Die Implementierung der unterschiedlichen Testarten ist inzwischen hinlänglich beschrieben. Wie diese Tests in Real-World-Projekte eingesetzt werden, um tatsächlich die Qualität zu verbessern, beschreibt der Vortrag ebenso wie die Lösung von Real-World-Problemen. Dabei werden Themen wie die Bereitstellung von Testumgebungen, Testplanung und Testdurchführung sowie Testdokumentation ebenso beleuchtet wie die Frage, in welchen Fällen eine Edition für Tester notwendig ist, wo es mögliche Alternativen gibt und wie verschiedene Akteure innerhalb des Projekts wie z.B. Fachabteilungen eingebunden werden.
UI-Testing mit UI Automation 1 Std. - 1,5 Std. Unit-Testing und Web-Testing verbreiten sich mit VSTS und anderen Testing-Tools immer mehr. Was diese Testmethoden jedoch nicht abdecken, ist quasi die „letzte Meile“, die Oberfläche der Anwendungen. Um diese in Tests einzubinden sind entweder teure Tools erforderlich, oder man nutzt das weitgehend unbekannte UI Automation Framework, das Bestandteil des .NET 3.0 Frameworks ist. Der Vortrag erläutert zunächst, wie man mit Hilfe des UI Automation Frameworks Windows- und WPF-Anwendungen kontrollieren kann. Anschließend werden diese Methoden in Unit-Tests integriert, um damit automatisierte UI-Tests aufzubauen. Als krönender Abschluss wird ein UI-Test-Recorder implementiert, mit dem UI-Aktionen aufgezeichnet und automatisiert in Unit-Test überführt werden können. Der Vortrag beschreibt neben den Möglichkeiten auch Grenzen des UI Automation Frameworks und mögliche Lösungen.
Closing Tool-Gaps in your Development Process with the TFS API 1 Std. The efficiency of development processes is based on a powerful and integrated tool support. But development processes are individual and no standard software can fulfill this integration 100%. With the Team Foundation Server API we have a powerful technology to extend the standard functionality for our needs. As an example in this session we will live code a tool to organize workitems in a hierarchical way and you will learn how this can improve your development process. Also you will get some additional visions about how you can use TFS Extensibility to make real cool things with your TFS.
Lücken in der Tool-Unterstützung für IhrenEntwicklungsprozess mit der TFS API schließen 1 Std. Die Effizienz eines Entwicklungsprozesses hängt stark von einer leistungsfähigen und integrierten Entwicklungsplattform ab. Aber Entwicklungsprozesse sind individuell an keien Standardsoftware kann eine 100%ige Integration gewährleisten. Mit der Team Foundation Server API steht eine leistungsfähige Technologie zur Verfügung, die es erlaubt, die Standard-Funktionen des Team Foundation Servers bedarfsgerecht zu erweitern. Als Beispiel wird in dieser Session ein live ein Tool erstellt, das eine hierarchische Organisation von Workitems ermöglicht. Und es wird erläutert, wie damit Entwicklungsprozesse verbessert werden können. Darüber hinaus werden verschiedene Visionen aufgezeigt wie man mit Hilfe der TFS Extensibility richtig coole Sachen für den TFS machen kann.
Durchgängige Entwicklungsprozesse mit Visual Studio Team System 1 Std. Mit Visual Studio Team System bietet Microsoft eine leistungsfähige Entwicklungsplattform die den gesamten Lebenszyklus eines Entwicklungsprojektes vom Requirement Management bis zum Systembetrieb abbilden kann. Der Vorteil dabei ist, dass alle wichtigen Elemente des Prozesses in einem System integriert und so Verbindungen zwischen den einzelnen Prozessartefakten hergestellt werden können. Der Vortrag zeigt wie ein kompletter Entwicklungsprozess mit VSTS abgebildet werden kann. Als Beispiel wurde hierzu bewusst ein agiler Prozess gewählt der vor allem auch für kleinere Entwicklungsteams geeignet ist. Dabei werden die wesentlichen Funktionselemente von Visual Studio Team System und Team Foundation vorgestellt und deren Nutzung im Prozess gezeigt.
Reporting mit dem TFS 1 Std. Der Team Foundation Server bietet umfangreiche Projekt-Kennzahlen. Neben Prozess- und Qualitätskennzahlen sowie verschiendenen Planungskenngrößen können auch weitere Daten wie z.B. zum Build-Prozess oder aus der Quellcode-Verwaltung ausgewertet werden. Hierbei stehen mit den SQL Server Reporting Services und Excel zwei leistungsfähige Tool zur Verfügung, diese Daten zu visualisieren. Der Vortrag zeigt anhand verschiedenen Beispielen auf, wie individuelle Auswertungen erstellt werden können und welche Möglichkeiten sich damit eröffnen.
UI Driven Development - Von der UI zur Anwendung 0,5 Std. - 1 Std. Missverständnisse und unterschiedliche Interpretation von Spezifikationen sind in Software-Projekten heute an der Tagesordnung. Was also tun, um dieses zu vermeiden? Die Spezifikation noch detaillierter formulieren? Einen anderen Ansatz geht UI Driven Development. Hierbei wird die Oberfläche einer Anwendung als Spezifikationsbestandteil aufgefasst. Der Clou dabei ist, das bei diesem Vorgehensmodell nicht irgendwelche Prototypen entstehen, die die spätere Funktionalität und Aufbau nur vage wiedergeben, sondern "erlebbare" Oberflächen. Und diese Oberflächen können in das Finale Projekt 1:1 übernommen werden, so dass der Investierte Aufwand direkt dem Projekt zugute kommt. Der Vortrag erläutert Architekturkonzepte und Vorgehensmodelle die UI Driven development ermöglichen.
Organisation von Entwickler-Teams 0,5 Std. - 1,5 Std. Dieser Vortrag ist als Interactive Session konzipiert. Die Teilnehmer können in einer moderierten Diskussionsrunde sich austauschen über verschiedene Erfahrungen mit unterschiedlichen Modellen der Team-Organisation. Der Moderator stellt dabei im Laufe der Veranstaltung verschiedene Aspekte der Team-Organisation und mögliche Vorgehensweisen vor und stellt diese zur Diskussion. Dabei werden Themen wie Generalisten vs Spezialisten, Kommunikation im Team, Mitarbeitermotivation und vieles mehr ausführlich diskutiert.
Automatisierte Generierung von Unit-Tests mit PEX 0,5 Std.  PEX - ein Tool von Microsoft Research verspricht nichts weniger als die automatisierte Generierung von Unit-Tests und zwar mit dem Ziel einer möglichst vollständigen Code-Abdeckung. Wie PEX funktioniert und inwieweit dieses Versprechen eingehalten werden kann, zeigt dieser Vortrag. Darüber hinaus wird auch beleuchtet, in welchen Szenarien PEX eine wirklich sinnvolle Unterstützung bei Real-Projekten sein kann und wie man es einsetzen kann.
10 Gründe warum Software-Projekte fehlschlagen können – und was hilft ALM? 1 Std. Für Probleme in Software-Projekten gibt es vielfältige Gründe. Viele dieser Gründe können jedoch auf suboptimale oder gar nicht vorhandene Prozesse zurückgeführt werden. Der Vortrag analysiert die häufigsten Ursachen für fehlgeschlagene Projekte und zeigt mögliche Lösungen auf. Dabei wird auch beleuchtet wie Application Lifecycle Management organisiert sein muss um hier zu unterstützen.
TDD Quick Start 0,5 Std. Test Driven Development - Eines der häufigsten Buzz-Wörter wenn es um das Thema Software-Testing geht. Umso erstaunlicher, dass es in der Praxis aber relativ selten zum Einsatz kommt. Häufig liegt es auch daran, dass TDD an gewisse Vorbedingungen in Bezug auf Architektur, Prozesse etc. gebunden ist. Der Vortrag versucht einen Schnelleinstieg in TDD zu geben, wobei versucht wird diese Vorbedingungen weitgehend auszublenden um dem Zuhörer einen möglichst schnellen und unkomplizierten Einstieg zu bieten. Die hierzu erforderlichen Kompromisse werden jedoch am Ende des Vortrages aufgezeigt und ein Ausblick auf optimierte Lösungen gegeben.

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.

Telekom setzt als erstes Unternehmen in Europa auf Multimedia-Beratungstische

05.12.2008 11:27:00 | Jens Peter Kleinau

Ich gebe hier mal einfach (auch wenn es sonst nicht meine Art ist) eine Pressemitteilung weiter. Bonn / Hof / Dessau (ots) - So etwas kennt man bis dato nur aus Hollywood-Produktionen: Handys nehmen Kontakt mit Tischen auf, deren Glasflächen wiederum Riesendisplays sind. Mit den Händen können Produkte multimedial erforscht, Klingeltöne komponiert oder Videos und Bilder per Fingerzeig in...

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

Perfektion als Maßstab?

05.12.2008 09:52:57 | Norbert Eder

Schön langsam wird es schwierig, alle Themen unter einen Hut zu bekommen. Ich versuche daher hiermit auf einige Punkte aus den unterschiedlichen Themenbereichen einzugehen, um hoffentlich alles ein wenig zu kanalisieren. Alex hat ja bereits meine Aussagen zum Thema Der perfekte Softwareentwickler kommentiert. Nun hat sich auch noch Sven zu...

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

User Group-Kompass

05.12.2008 09:33:16 | Thomas Schissler

Wo finde ich eine User-Group in meiner Nähe? Diese Frage beantwortet der Usergroup-Kompass. Eine wirglich schöne Idee wie ich finde.

image 

User Group-Kompass

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

Installations-Probleme der Enterprise Library 4.1

04.12.2008 12:36:17 | Gordon Breuer

Visual Studio Schon vor einer ganzen Weile, am 27. Oktober 2008, wurde die Version 4.1 der Microsoft Enterprise Library in der aktualisierten Version 4.1 veröffentlicht. Neben dem Support für Visual Studio 2008 und Visual Studio 2008 SP1 kamen unter anderem ein paar Performance-Verbesserungen dazu und die Bedienung des Konfigurations-Tools wurde verbessert.

Gut und schön, aber jeder Versuch die neue Version zu installieren scheiterte mit der Fehlermeldung, dass ich zunächst die Version 4.0 deinstallieren müsste. Jetzt könnte man meinen, dass das ja schnell erledigt wäre über die Systemsteuerung. Aber zumindest bei mir ging es danach dennoch nicht.

Nach einigem Suchen jetzt endlich – über fünf Wochen nach der Veröffentlichung – die Lösung des Rätsels: Bei der Deinstallation der alten Version ist eine Leiche in der Registrierung übrig geblieben, an der sich das Setup-Programm der 4.1er Version jedoch störte. Nach dem Löschen dieses Registry-Keys ging die Installation dann ohne weitere Probleme anstandslos von statten.

Unter 32 Bit:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Enterprise Library v4

Unter 64 Bit:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Enterprise Library v4

Vielleicht kann ja dieser kleine Tipp noch wem anders helfen ein paar Nerven und Haare zu behalten. Hier auch noch der Download-Link für die 4.1er Version…

Enterprise Library 4.1 - Oktober 2008

Gedanken zum perfekten Softwareentwickler

04.12.2008 09:38:42 | Norbert Eder

Nach meiner Antwort zu Peter, hat sich nun auch Alex zu Wort gemeldet. Dem kann ich mich inhaltlich auch voll und ganz anschließen (ein Hoch auf mein Notizbuch). Was ich jedoch aussagen wollte, war etwas anderes. Wir sprechen hier von Themenbereichen, die für manche täglich Brot sind und worüber oft nicht mehr nachgedacht werden muss. Bei...

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

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.

Prozessoptimierung par excellence

03.12.2008 18:41:56 | Norbert Eder

Nahezu jeder Prozess kann optimiert werden. Was aber passiert, wenn einer absolut getuned wurde?

Mir gerade passiert:
  • Ich gehe in mein "Spiel-Zimmer".
  • Schalte die PS3 ein
  • Schalte den Fernseher ein
  • Nehme den Stromverteiler
  • Stecke den Verteiler an
  • Setze mich auf die Couch
  • *wart*
  • *wart*

Tja, da ist man ein wenig umweltbewußt und steckt schön brav alles aus, vergisst aber, dass man den Geräten zuerst Strom geben sollte, bevor man sie einschalten kann und wundert sich dann, warum sie zwar alle auf Standby gehen, aber nicht vor Freude losstarten.

Der Prozess wurde wohl zu sehr optimiert ... also doch wieder ein, zwei Schritte mehr machen.

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

Gedanken zum perfekten Software-Design

03.12.2008 10:34:10 | Norbert Eder

Peter Bucher hat in seiner Blogpost Es gibt kein perfektes Design, oder doch über die Qualität des Sourcecodes in Projekten geschrieben. Einige der Punkte möchte ich so aber nicht stehen lassen.

Entwickler und Wunschdenken


Im Gegensatz zum zugrunde liegenden Artikel bin ich nicht der Meinung, dass das Wunschdenken bei vielen Entwicklern in Richtung "Perfektes Design" geht. Vielmehr ist es den meisten Entwicklern wichtig, dass die umzusetzenden Punkte in der veranschlagten Zeit umgesetzt werden. Die Qualität wird daher oft außen vor gelassen. Dies resultiert darin, dass sich viele Entwickler kaum Zeit nehmen zu prüfen, wie ein Algorithmus etc. entwickelt werden kann, so dass er performant und zukunftssicher ist.

Das heißt, das Wunschdenken vieler Entwickler geht meist in Richtung "Hoffentlich bin ich bald fertig mit meinem Task". Natürlich gibt es auch Ausnahmen. Keine Frage. Aber sie sind nicht in der Mehrheit.

Debugging-based Development


Ein wichtiger Punkt hierbei ist - und diesen habe ich schon sehr sehr oft erlebt - das Entwickeln per Debugging. Was bedeutet das? Es werden ein paar Codezeilen geschrieben, dann wird gleich der Debugger angeworfen um zu sehen ob es funktioniert. Wenn nicht, dann gibt der Debugger ohnehin Bescheid an welcher Stelle es knackt. Dort wird eine Änderung durchgeführt und der nächste Debug-Durchlauf startet.

Vielmehr sollte sich der Entwickler zuvor Gedanken darüber machen, was denn da wirklich gefordert wird. Daraus ergeben sich Anforderungen an den zu schreibenden Code. Hier ist es oft sinnvoll, sich vielleicht doch ein paar Minuten mit dem MSDN auseinander zu setzen. Eventuell gibt es dann doch einen Hinweis, der mich das Problem wesentlich eleganter lösen lässt. Zusätzlich ist es immer von Vorteil, sich den Ablauf des Problems aufzumalen. Ob dies nun via UML-Tool passiert, per Visio (ja, kann auch UML) oder einfach am Blatt Papier hängt von der Komplexität und der Anzahl der notwendigen Klassen ab. Aber es fängt schon bei Methoden an, die drauflos entwickelt werden.

Das Hauptproblem bei Machen wir einfach mal schnell ist, dass irgendwann der Punkt kommt, der eine Änderung erfordert. Es funktioniert nicht so, wie man sich das gedacht hat. Und hier fängt es an: Der Code wird mit Gewalt so zurechtgerückt, dass er schlussendlich funktioniert. Im Schönwetter-Fall.

Streben nach Perfektion


Der eine hat's, der andere nicht. Es wäre eine Verallgemeinerung zu behaupten, dass jeder Entwickler nach Perfektion strebt. Viele wollen das Produkt fertig stellen, damit Geld herein kommt. Andere reden sich auf den Zeitdruck aus. Andere wollen wieder eine vergoldete Glaskuppel bauen und können ihr Projekt nie abschließen. Es muss also ein Mittelweg gefunden werden. Dieser sollte sowohl in sauberen Code (wie sieht sauberer Code aus?), Einfachheit und Zukunftssicherheit resultieren. Ebenso wenig sollte die Testbarkeit vergessen werden.

Fazit


Es gibt zwar kein perfektes Design, es gibt auch keinen perfekten Sourcecode. Aber jeder Entwickler sollte sich zumindest Mühe geben, Coding-Standards einzuhalten, sich mit seiner Programmiersprache als Werkzeug zu beschäftigen und diese auch entsprechend einzusetzen wissen. Ebenso gehört dazu, auch einmal die eine oder andere Minute mit dem Lesen der Dokumentation zu verbringen und grundsätzlich analytischer an die Problemstellung heran zu gehen.

Sehr gut funktioniert es, sich zuvor zu überlegen, wie denn der neue Code verwendet werden soll. Ein Zeilen wie die neuen Klassen und/oder Methoden verwendet werden sollen und schon erkennt man frühzeitig Probleme und kann diese noch vor dem Start der Implementierung bereinigen. So kleine Dinge können so viel verbessern.

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

Praxisbericht: Samsung Omnia SGH-i900

02.12.2008 10:23:56 | Norbert Eder

Seit einigen Tagen habe ich nun das Samsung Omnia im täglichen Gebrauch. Das sollte ausreichend sein, um ein erstes Statement abzugeben.

Verarbeitung


Das Handy macht einen sehr stabilen Eindruck. Keine Knöpfe wachkeln, die Tasten sind gut zu bewegen, besitzen einen guten Druckpunkt. Lediglich die hintere Abdeckung gefällt mir nicht sehr gut. Diese wirkt etwas filigran. Bei häufigem Abdecken derselben könnte ich mir gut vorstellen, dass sie nicht lange überlebt.

Technische Ausstattung


Die technische Ausstattung ist für meinen Fall genau richtig. Ob es nun HSDPA, HSUPA, WLAN, Blootooth oder GPS ist. Es ist alles dabei. Der interne Speicher von 8 GB sollte für die meisten Anwendungen ausreichend sein. Wer mehr benötigt, kann ihn um weitere 8 bzw. 16 GB erweitern. Hier fällt jedoch negativ auf, dass der Einschub für die microSD-Karte bei der SIM-Karte angesiedelt ist. Ein Öffnen der hinteren Abdeckung läßt sich dadurch nicht umgehen. Wer also häufiger die Speicherkarte wechseln möchte, der sollte dies tunlichst vorsichtig machen.

Die 5MP-Kamera liefert für ein Handy ganz gute Bilder, wenn auch der Auslöser ein wenig auf sich warten läßt. Für das eine oder andere Foto sollte das durchaus reichen. In meinem Fall greife ich ohnehin lieber zu einem Fotoapparat.

Handhabung


Durch das große Touch-Display und mit Hilfe der mitgelieferten Anpassungen ist die Handhabung gut. Das Touch-Display reagiert in den meisten Fällen schnell und unproblematisch. An Randzonen ist die Empfindlichkeit nicht ganz so hoch. Das 1A-Erlebnis wird lediglich durch Windows Mobile getrübt, welches trotz der verpassten UI-Anpassungen bei Einstellungen durchkommt. Das erste Einrichten sollte daher mit dem Stylus durchgeführt werden. Ist das Handy konfiguriert kommt man nur mehr kaum in das Vergnügen, den Stylus verwenden zu müssen.

Durch den Kauf von SPB-Shell kann die Oberfläche weiter verbessert werden. Dadurch erhält man schon fast iPhone-Niveau, wenn auch nicht ganz.

Synchronisierung


Diese läuft gewohnt gut. An den Rechner angeschlossen, ActiveSync 4.5 aktiviert und schon waren alle Daten meines Outlooks (Anbindung an Exchange) auf meinem mobilen Gerät. Wunderbar. Kein Stress, keine Probleme. So soll es sein.

Standby-Zeiten


Ein wichtiges Kriterium sind auch die Standby-Zeiten. Bei mir läuft alle 2 Stunden eine Synchronisierung mit meinen Email-Servern via HSDPA. GPS, WLAN und Bluetooth sind deaktiviert und werden nur bei Bedarf aktiviert. Da ich nicht der Viel-Telefonierer bin (max. 30-40 Minuten pro Tag) hält der Akku an die vier Tage, eher knapp mehr. Das ist für mich ausreichend. Mein altes HTC TyTN wollte jeden 2. Tag aufgeladen werden.

Fazit


Das Samsung Omnia SGH-i900 macht auf mich einen sehr soliden Eindruck. Größtes Manko ist sicherlich die fehlende Intuitivität des Betriebssystems. Dafür kann Samsung aber nichts. Hier muss hinzugefügt werden, dass Windows Mobile jedoch viele Funktionalitäten mit bringt (vor allem im Business-Bereich), die man auf einem iPhone kläglich vermisst.

Wer also ein stylisches Handy mit vielen Funktionen, einem guten Akku und jeglichen technischen Schnick-Schnack haben möchte, der ist mit dem Omnia sehr gut beraten.

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

Intels i7 Core mit TLB Error - ärgerlich oder doch nicht?

01.12.2008 23:16:00 | Jens Peter Kleinau

Es ist Weihnachten, da will ich mir doch gerne einen der neuen Intel Renner kaufen, den Intel Core i7 940 4x2.93GHz. Doch was muss ich in Fudzilla lesen? We were told that Intel's Nehalem, the CPU that we know as Core i7 has TLB [bugs]. Wenn man Intels Spezifikation auf Seite 37 AAJ1 liest, dann steht da klein und unauffällig: AAJ1. Clarification of TRANSLATION LOOKASIDE...

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

Vista SP2 steht in den Startlöchern

01.12.2008 19:20:37 | Norbert Eder

Das bedeutet, dass ab Morgen, 2. Dezember, für alle Technet bzw. MSDN-Abonennten die Windows Vista SP 2 Beta als Download bereit steht.

Ab 4. Dezember steht sie dann öffentlich bereit. Für diejenigen unter Euch, die noch immer auf XP setzen könnte SP2 doch eventuell einen Umstieg wert sein, wenn es denn schlussendlich final zu haben ist.

Für diejenigen, die sich die Beta ansehen wollen oder überhaupt einen Überblick erhalten möchten, was denn auf uns Vista-Benutzer zu kommt, hier ein ganz kleiner Auszug:

Verbesserter Hardware-Support


  • Windows Connect Now (WCN) WIFI-Konfiguration
  • Recording auf Blu-Ray
  • Bluetooth 2.1
  • Unterstützung für neue VIA 64bit-CPU

Sicherheit


  • Alle bisher veröffentlichten Sicherheits-Updates
  • Verbesserte Zuverlässigkeit

Performance


  • Verbesserungen im WIFI-Umfeld
  • Integration von Windows Search 4
  • Verbessertes RSS-Sidebar-Gadget

Sonstiges


  • Verbesserte System-Administration
  • Verbesserungen bezgl. Kompatiblität
  • Service Pack Clean-Up Tool
  • Single Installer für Vista und Server 2008
  • Usw.

Das ist bei weitem keine vollständige Liste. Detaillierte Informationen werden bei Veröffentlichung in den Release Notes zu finden sein.

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:

Architektur-Vortrag bei User-Groups

01.12.2008 08:03:58 | Thomas Schissler

In der vergangenen Woche war ich bei gleich 3 User-Groups in Bonn, Stuttgart und bei uns in Ulm und habe dort meinen Vortrag zu architekturbasierten Entwicklungsprozessen gehalten. Dabei ging es im Kern darum, dass moderne Software.Projekte bestimmte Anforderungen an Prozesse haben. Der Vortrag zeigte hier zunächst verschiedene dieser Anforderungen an Testbarkeit, Team-Arbeit und die Definition von Spezifikationen. Anschließend wurden verschiedene Architekturkonzepte vorgestellt um dann aufzuzeigen, wie diese Konzepte die Prozessanforderungen erfüllen können. Zum Abschluss wurde dann das Ganze mit einem Demo-Projekt anschaulicher dargestellt.

Die Folien und das Demo kann hier heruntergeladen werden:

WPF Forum | ASP.NET Forum | ASP.NET MVC Forum | Silverlight Forum | Windows Phone 7 Forum | SharePoint Forum | Dotnet Jobs | Dotnet Termine | Developer Blogs | Dotnet News

Das Team | Regeln | Impressum