Alex, Marcel und
ich waren gestern beim Mediencampus zu Besuch.
Der Mediencampus ist ein Projekt der Medienstiftung der Sparkasse Leipzig und wahrscheinlich
mir schon aus diesem Grund symphytisch; ich bin ja u. a. ein gelernter Bankkaufmann.
Als wir gestern zu Besuch waren, wurde das positive Gefühl bestätigt. Alle
Mitarbeiter dort sind wirklich sehr angenehm und wir haben eine Kooperation zwischen
dem Mediencampus und der .NET User Group Leipzig vereinbart.
Die .NET User Group Leipzig darf am Mediencampus ihre Veranstaltungen durchführen
und ist damit in einer wirklich sehr eleganten Umgebung. Der Mediencampus liegt in
einer hervorragenden Umgebung, ist z. B. mit einem eigenen Tonstudio, Dolmetscher-Plätzen
in Sälen, einem Roundtable-Computerpool, einem Mac-Pool ;), einem Restaurant
/ Cafe bis hin zu Appartements für Dozenten ideal ausgestattet.
Derzeit nehmen wir nach der gründlichen Überarbeitung unserer Webseite¹
die Gründung eines Vereins in den Angriff. Diese Kooperation passt perfekt in
unser Konzept, in Leipzig und Umgebung der .NET Community weiter zu einem beständigen
Wachstum zu verhelfen. Und das ist erst der Anfang...
¹ Danke noch mal an Alex!
zumindest wenn es nach Amazon geht. Als ich heute mal wieder beim Internet Gemischtwarenladen vorbeischaute war ich erstaunt amüsiert was mir am neuen Produkten empfohlen wurde. Das solche automatischen Produktvorschläge fast nie sinnvolle ergebnisse liefern ist ja bekannt, bei Amazon kann man sich sogar anschauen warum der Artikel vorgeschlagen wurde:

Weil ich einen iPod + Tasche erstanden habe könnte mir der 80 GB iPod auch gefallen - tut er auch, kaufen werde ich ihn aber nicht.
Im Blog von marc hoffman gibt es einen kurzen Ausblick auf “RemObjects SDK for Mac OS X” (Arbeitstitel), eine 100%ige Objective-C Cocoa Applikation mit Xcode 3 entwickelt. Und mehr oder weniger deutlich hat er einen iPhone-/iPod-Touch-Client angekündigt.
Der entsprechende Server ließ sich ja schon immer als .NET-Applikation auch gegen Mono linken und läuft somit unter Windows, [...]
Anläßlich einer Diskussion gestern auf der fmx:
Monsters Inc - Pixar!
Shrek - Dreamworks
Ice Age - 20th century fox
Und mal ganz ehrlich: Ist ja wohl klar, wer in dieser Liste gottgleichen Status hat, oder? :)
Das Office 2007 Security Modell erlaubt es nicht, unter HKLM registrierte Managed Add-Ins zu verwenden. Was nicht heißt, dass mit einem Trick das Ganze dennoch erreicht werden kann. Misha Shneerson, Senior Software Design Engineer im Microsoft BizApps Team, hat die notwendigen Aspekte in seinem Blog (Teil 1, Teil 2, Teil 3) beschrieben. Ich will mir hier die Zeit nehmen und das Ganze etwas erläutern.
Die Basis ist ein Registry-Replikations-Mechanismus von Office, durch welchen bestimmte Einträge von HKLM nach HKCU repliziert werden, wenn eine der Office Anwendungen gestartet wird.
Definiert werden diese Einträge unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings mittels eines Create bzw. Delete Keys.
Ein Beispiel:
Ein Add-In für Excel 2007 wird hier registriert (ich gehe davon aus, dass die Manifests digital signiert wurden und eine Trust Chain auf der Zielmaschine existiert (siehe hier):
HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins\MyAddIn
Die erforderlichen Einträge wären:
| Name | Type | Value |
| Description | REG_SZ | Ein Add-In für Excel ... |
| FriendlyName | REG_SZ | MyAddIn |
| LoadBehavior | DWORD | 3 |
| Manifest | REG_SZ | C:\\Program Files\\MyCompany\\MyAddin.vsto|vstolocal |
Um jeden an der Maschine angemeldeten Benutzer in den Genuß des Add-Ins kommen zu lassen, wird dieser Pfad im Prinzip auf die UserSettings von Office 2007 in HKLM "kopiert". Der gesamte Pfad würde dann so aussehen:
HKEY_LOCAL_MACHINE
SOFTWARE
Microsoft
Office
12.0
User Settings
MyCompany.MyAddIn
Create
Software
Microsoft
Office
Excel
Addins
MyAddIn
Unter MyAddIn stehen dann die in der o.g. Tabelle angegebenen Werte.
Nicht genug
Das reicht aber noch nicht. Repliziert wird der Pfad nur, wenn eine vorhandene Count Property (DWORD) auf dem im obigen Pfad fett formatierten Key (MyCompany.MyAddIn) gefunden wird und deren Wert vom Wert derselben am Zielort (HKCU\Software\Microsoft\Office\Excel\Addins\MyAddIn) abweicht.
Der Wert am Zielort wird unter HKCU\Software\Microsoft\Office\12.0\User Settings\MyAddIn geführt. Das wird getan, um nicht bei jedem Start die Replikation durchzuführen, sondern nur bei Änderungen. Deshalb muß auch diese Count Property nach dem Deinstallieren erhalten bleiben. Am besten. man zählt bei jeder Änderung per Custom Action den Wert um eins hoch. Der Wertebereich eines DWords sollte für einige Zeit ausreichen.
Da die Installation mittels MSI stattfinden sollte, müssen einige Dinge beachtet werden:
- Der unter Manifest angegebene Pfad muß so aussehen: [TARGETDIR]MyAddin.vsto|vstolocal
Der MSI setzt den ausgewählten Zielpfad automatisch ein. - Der Create Key muß mit dem Flag DeleteAtUninstall versehen sein, damit er wieder entfernt wird.
- Beim Deinstallieren muß ein Delete Subkey geschrieben werden, der dafür sorgt, daß beim nächsten Start der Hostapplikation die Registrierung des Add-Ins aufgehoben wird. Der sieht vom Aufbau her genauso aus wie der Create Key. Allerdings - da dieser in der Registry verbleibt - muß beim erneuten Installieren ein evtl. vorhandener Delete Key gelöscht werden.
- Und natürlich muß beim Installieren wie auch beim Deinstallieren die Count Property erzeugt bzw. hochgezählt werden.
Im anfangs referenzierten Blog findet sich der Code für diese Aktionen. Das klingt kompliziert, aber man muß sich vor Augen halten, daß hier per User und per Machine Aktionen koodiniert werden müssen und der Sicherheitsmechanismus von VSTO der von ClickOnce ist - einer Technologie, die per User funktioniert.
Natürlich kann man das auch auf Basis der Inclusion List tun, Misha Shneerson erklärt das in Teil 3. Das sollte aber nur bei nichtverwalteten Netzwerken getan werden, da die zu erwartende Sicherheit geringer ist.
wer einen Überblick zu den Erweiterungsmöglichkeiten von Visual Studio sucht, sollte sich dieses Event nicht entgehen lassen. Bauen Sie z.B. Ihre Application auf Basis der Visual Studio Shell.
Inhaltlich werden folgende Themen von Ken Levy, Program Manager Visual Studio, behandelt:
Visual Studio Shell Visual Studio SDK Erweiterung von Visual Studio wie - Packages,
- Add-Ins,
- Makros und
- Visualizer
Anmeldung hier
Hinweis: Die Veranstalltung ist in Englischer Sprache und es gibt maximal 20 Plätze.
Chris
In this 15 minutes video blog I will show you how you can scroll through large resultsets using the SL DataGrid and LINQ to SQL.
I will show:
- paging server side using .Skip and .Take methods in LINQ to SQL
- templating the DataGrid for adding the paging vertical scrollbar
You should watch first this video blog that teach you the basics how to get data from SQL in to SL: http://blogs.msdn.com/swiss_dpe_team/archive/2008/03/17/silverlight-2-beta1-wcf-linq-to-sql-a-powerfull-combination.aspx
Attached the sample solution
Have fun
Ronnie Saurenmann
double click the player to play in fullscreen
Peter Kirchner hat mich auf diese Veranstaltung aufmerksam gemacht. Sicherlich für jeden interessant der sich schon mal mit den Erweiterungsmöglichkeiten von Visual Studio beschäftigt hat und hier auch das ein oder andere Fragen möchte.
Daniel Walzenbach and myself are demoing Windows Live with all its possibilities. In this scenario we have a mom, missing her son, but she always knows where he is! How this magic works, see and guess who is playing Daniel's mom? Enjoy!
Kürzlich diskutierte ich mit einem "emailphilen" Mitstreiter darüber wieviel Remote User man eigentlich auf einen Exchange 2003 Front End Server per RPC/HTTPS lassen kann. Entgegen erster Vermutungen kamen wir zu dem Schluß, dass hier nicht die CPU sondern das RAM ein Nadelöhr darstellt.
Aufgrund der begrenzten RAM Möglichkeiten von 32 Bit Systemen (max. 4 GB ohne Tricks) empfiehlt Microsoft pro Front End Server nämlich nur maximal 2.000 simultane User. Das hängt damit zusammen, dass der IIS (über den nunmal HTTPS Connections gehen) nicht mehr Kernel Memory allokieren kann. Genauer kann man das hier nachlesen:
http://technet.microsoft.com/en-us/library/bb124771(EXCHG.65).aspx
Um also mehr User pro "Front End" zu ermöglichen brauchen wir also eine 64bit Version von Exchange und die gibt es bekanntlich erst mit Exchange 2007 und heisst dann Client Access Server.
Wie man die Auslastung eines Exchange 2007 Servers in Sachen Outlook Anywhere (RPC/HTTPS) auslotet wird hier beschrieben:
http://technet.microsoft.com/en-us/library/cc540453(EXCHG.80).aspx
Download
KB Artikel
Für Microsoft Silverlight v1.0 Beta gab es das JavaScript Helper File "Silverlight.js", welches im Zusammenhang mit der Javascript Datei "createSilverlight.js" verwendet werden sollte. Leider haben zu wenig Entwickler die Remarks gelesen. Ich habe den wichtigen Teil davon mal rot markiert.
// Silverlight.js version 0.9
//
// This file is...
[[ This is a content summary only. Visit my website for full links, other content, and more! ]]

Für alle die, die sich für “Spieleentwicklung” interessieren gibt es nun ein neu Version (CTP) vom XNA Game Studio:
Es integriert sich in Visual Studio 2008 - von der Express bis zu den Prof. und bietet .NET 3.5 Unterstützung.
Hier die komplette Ankündigung von Microsoft und der Download Link.
TDD, Unit-Tests & XNA \o/
Unter diesem Titel bietet Microsoft eine interaktive Führung an, wo Umsteigern (Office
2003 -> Office 2007) geholfen wird, die alten Menüpunkte aus Office 2003 wiederzufinden.
If you want to explore the rich, new design with some guidance, try the interactive
guides to help you quickly learn where things are. You can run the guides right
here, or you can download them to your own computer for use any time you like.
If you prefer to see just a list of all Office 2003 menu and toolbar commands and
their locations in the 2007 Office system, open one of the Microsoft Office Excel mapping
workbooks, which you can browse, customize, print, and save on your computer.
Instructions on the first tab of each workbook provide tips for customizing, finding,
and printing the lists.
Link:
This weblog is sponsored by netcreate OHG.
Eric Carter hat in seinem Post einige MSDN Links zusammengetragen, welche die Änderungen
im Object Model von Outlook 2003 und Outlook 2007 aufzeigen. Des Weiteren hat er sich
die Mühe gemacht und zwei Interface
Definition Language (IDL) Files für die beiden Outlook Versionen erstellt. Ein
"must have" für alle VSTO Outlook-Entwickler! :-)
Link:
This weblog is sponsored by netcreate OHG.
Paul Yao präsentierte gestern bei der WE-DIG session
() die Neuerungen des .NET Compact
Frameworks 3.5. Die Session ist als Onlinevideo bei Channel
9 abrufbar.
- English Version -
Paul Yao presented yesterday the news on the .NET Compact Framework 3.5 at the WE-DIG session.
The session can be viewed on Channel
9.
This posting is provided "AS IS" with no warranties, and confers no rights.
Treten Sie mit Experten für Windows Mobile, Windows CE, SQL Server CE und dem .NET
Compact Framework Communities in Kontakt rund um Anwendungsentwicklung für mobile
Geräte. Diese Chats bieten eine gute Möglichkeit Fragen durch weltweite Experten beantortet
zu bekommen.
------------------------------------------------
Nehmen Sie mit uns online teil für unsere interaktive Fragen- und Antwortrunde am
Dienstag dem 13. Mai um
10 am US Pacific Time
11 am US Mountain Time
12 pm US Central Time
1 pm US Eastern Time
6 pm BST
19 Uhr deutscher Zeit
------------------------------------------------
Um am Chat teilzunehmen folgen Sie bitte dem Link:
http://www.microsoft.com/communities/chats/chatrooms/msdn.aspx
- English Version -
Please join experts from the Windows Mobile, Windows CE, SQL Server CE and .NET Compact
Framework communities in a chat around application development for smart devices.
These chats are a great opportunity to have your questions answered by experts from
around the world.
------------------------------------------------
Join us online for our live interactive developer Q&A Tuesday 13th May at
10 am US Pacific Time
11 am US Mountain Time
12 pm US Central Time
1 pm US Eastern Time
6 pm BST
To convert from GMT to your local time, use the link below:
http://www.worldtimeserver.com/current_time_in_RU-MOW.aspx
------------------------------------------------
To join the chat use the following link:
http://www.microsoft.com/communities/chats/chatrooms/msdn.aspx
This posting is provided "AS IS" with no warranties, and confers no rights.
Ein interessantes Interview zum Thema Mobile Device Manager in MP3 und WMA Format
hier(http://blogs.msdn.com/hegenderfer/archive/2008/05/06/now-live-technet-radio-get-more-security-and-control-with-mobile-device-manager.aspx).
- English Version -
an interesting interview on the Mobile Device Manager in MP3 und WMA Format can be
found here(http://blogs.msdn.com/hegenderfer/archive/2008/05/06/now-live-technet-radio-get-more-security-and-control-with-mobile-device-manager.aspx).
This posting is provided "AS IS" with no warranties, and confers no rights.
Wer in der glücklichen Lage sein sollte an der TechEd in Orlando vom 3. bis zum 6.
Juni teilnehmen zu können, der wird sich freuen eine Menge an Tracks zum Thema Mobility
zu finden. Der Grund liegt darin, daß dieses Jahr keine MEDC statt findet.
Zu den ausgewählten Speakern gehören Nickolas Landry, Rabi Satter, Loke Uei Tan, Maarten
Struys, Daniel Moth, Jim Wilson, Paul Yao und Alex Yakhnin. Eine Liste der Sessions
finden Sie hier.
- English Version -
The lucky ones, who will be beable to attend at the TechEd TechEd in Orlando June
3rd to June 6th, will be glad to hear that a lot of mobile sessions will be offered.
The reason for this is, that there will be no MEDC this year. Beside other speakers
following ones will have a session: Nickolas Landry, Rabi Satter, Loke Uei Tan, Maarten
Struys, Daniel Moth, Jim Wilson, Paul Yao and Alex Yakhnin. A list of session can
be found here.
This posting is provided "AS IS" with no warranties, and confers no rights.
Eines der rockigen Features von Silverlight 2.0 ist das so genannte DeepZoom. Auf der MVP Summit konnte ich von den Entwicklern erfahren, wie es aufgebaut ist und mich von den Beispielen begeistern lassen. Besonders gut gefallen hat mir die Memorablia Sammlung des Hard Rock Café gefallen.
Wer von den etwas älteren Menschen erinnert sich nicht an Bladerunner oder anderen moderneren Filmen. Bei...
[[ This is a content summary only. Visit my website for full links, other content, and more! ]]
Durch einfaches einbinden eines kleinen Buttons von whos.amung.us kann man sehen wer gerade den eigenen Blog durchstöbert und wo die Leute so herkommen. Zur auswahl gibts schicke Karten, z.b.


Die Aktuellen Karten für code-inside.de kann man hier finden, der Button auf code-inside ist rechts oben unter “Counter”.
Ich schreibe momentan eine kleine Anwendung und benötige hierfür eine zufällig durcheinandergeworfene Liste. Nach einigen Recherchen nach bestehenden Shuffle Methoden, habe ich mich entschieden, für mein kleines Szenario, die von Steven Smith zu nehmen. Gekapselt in einer Extension Method kann man es einfach anwenden.
Extension Method Shuffle:
1: public static class MyExtension
2: {
3: public static void Shuffle<TSource>( this IList<TSource> source )
4: {
5: Random rnd = new Random();
6:
7: for( int i = source.Count - 1; i > 0; i-- )
8: {
9: int position = rnd.Next( i + 1 );
10: TSource value = source[ i ];
11: source[ i ] = source[ position ];
12: source[ position ] = value;
13: }
14: }
15: }
Anwendung:
1: List<string> list = new List<string> { "Eins", "Zwei", "Drei", "Vier", "Fünf", "Sechs" };
2:
3: for( int i = 0; i < list.Count; i++ )
4: {
5: Console.WriteLine( list[ i ] );
6: }
7:
8: list.Shuffle();
9:
10: for( int i = 0; i < list.Count; i++ )
11: {
12: Console.WriteLine( list[ i ] );
13: }
Möchte man das ganze mit einem besseren Zufallszahlengenerator ausstatten, so kann man System.Security.Cryptography.RNGCryptoServiceProvider benutzen.
Wie immer gilt, dieser Code ist nur ein Beispiel. Bei Schäden wird keinerlei Haftung übernommen. Benutzung auf eigene Gefahr!
Die Student Technology Conference ist eine Technologie-Konferenz für alle Studierenden.
Sie findet in diesem Jahr am 15.05.2008 in der Kalkscheune in Berlin statt. Solche
Konferenzen sind sonst teuer, diese aber für Studenten kostenlos!
Neben der fetzigen Location gibt es spannende Vorträge wie zur X360-Spieleprogrammierung.
Doch es gibt auch noch etwas mehr – einen Kontakt zum HR-Recruitment von Firmen
aus dem Microsoft-Umfeld und auch natürlich zu Microsoft selber. Bei wem bald
ein Abschluss wie ein Diplom ansteht und .NET mag – unbedingt teilnehmen!
Die Anmeldung gibt es hier: www.studentconference.de.
Jade Raymond steht hinter Assassin's Creed und hat dort für Aufregung gesorgt.
Hinter dem Imagine Cup steht u. a. Henrike Röse und tut das genauso. Für
eine Teilnahme am Imagine Cup ist es zu spät, da bei der Student Technology Conference
der deutsche Gewinner gekürt wird, der dann in Frankreich zum Finale fährt. www.imaginecup.info.
Ist das schlimm? Nö, einfach dieses Jahr zuschauen, wer hinter dem Imagine Cup
steht, am besten lernen, wie man gewinnt und wie man dann auch etwas macht. ;)
Mehr Informationen zum Imagine Cup gibt es auch hier bei
Lori.
Im Service Pack 1 zu Visual Studio 2008 wird es einige Änderungen bzw. Erweiterungen zum Thema WPF geben. Eine genaue Übersicht gibt diese Veröffentlichung von Microsoft.
Hier eine Liste der neuen Funktionalitäten:
- The Properties window now contains the Events tab. The Events tab lets you create events, assign events, and review events.
- The Properties window now includes a category sort option and an alphabetical sort option to allow for faster property location.
- Code changes have been made to the XAML Refactor/Rename definition and to the Go to definition. These changes allow XAML rename operations to occur automatically. Additionally, you can navigate the XAML definition by pressing F12.
- You can now drag controls or create controls from the toolbox in XAML view or in Design view. You can do this even if you use a split view configuration.
- Snaplines are now implemented for control margins. This lets the designer control a fixed distance from other controls, from container edges, or from gridlines.
- Tab controls now support TabItem activation and TabItem design. To do this, click the tab that you want to design.
- The Expander control now expands conditionally based on what is selected. You can design the contents of the Expander control at design time with affecting the IsExpanded attribute of the runtime.
Im Paket sind also durchaus Features, die bereits zu Beginn dabei hätten sollen. Vor allem Umbenennungen waren bisher ein wahrer Graus.
Einiges dürfte mit diesem SP1 zukünftig leichter fallen, dennoch fehlen mir immer noch ein paar Punkte, die hauptsächlich nur Bug-Fixes behoben werden können. Dieses SP bietet jedoch nur Erweiterungen und Verbesserungen an, keine Bug-Fixes ...
Die vergangenen Wochen kann man aus der Sicht Microsoft's Großeinkäufer knapp zusammenfassen:
1. Microsoft will Yahoo kaufen.
2. Microsoft will Yahoo nicht kaufen.
3. Microsoft will jetzt organisch wachsen.
Aber was ist das genau? Schätzungsweise möchte man nun nicht mehr durch einen "großen Brocken" an Volumen zulegen, sondern durch "kleine Bröckchen". Wie man sie eben im Müsli findet:
http://kara.allthingsd.com/?p=1926&ak_action=printable
oder? :-)
http://www.htc.com/de/product.aspx?id=46038
Verwendet man ein DataSet mit DateTime-Werten in unterschiedlichen Zeitzonen, wird
man zu seiner Überraschung feststellen, dass das DataSet eine Umrechnung der Zeiten
vornimmt. Bei uns war das Problem konkret, dass ein DataSet per WCF zu einem Service
übertragen wurde. Der Service war aber in einer anderen Zeitzone als der Client. In
einem DateTime-Feld wurde ein Datumswert abgelegt, also z.B. 08.05.2008. Die automtische
Umrechnung hat davon jedoch eine Stunde abgezogen, so dass am Service 07.05.2008 23:00
ankam. Damit war das Datum immer um einen Tag verschoben.
Das Problem kann aber behoben werden, indem man auf dem Client und auf dem Service
den DateTime-Wert vor bzw. nach der Serialisierung konvertiert.
Auf dem Client sieht das dann z.B. so aus:
1: foreach (DataSet1.DataTable1Row
dr in ds.DataTable1.Rows)
2: {
3: dr.Date
= dr.Date.ToLocalTime();
4: }
Und dann auf dem Service das Gegenstück:
1: foreach (DataSet1.DataTable1Row
dr in ds.DataTable1.Rows)
2: {
3: dr.Date
= dr.Date.ToUniversalTime();
4: }
Damit kommt genau der Wert, der im Client eingetragen wurde auch im Service an. Zwar
gibt es wohl auch eine Möglichkeit, die Datumskonvertierung zu unterdrücken, aber
das hat bei mir nicht sauber funktioniert. Wenn also jemand eine elegantere Lösung
kenn, nur her damit ;-)
Update:
Wir habe doch noch eine elegantere Lösung gefunden. Auf dem DataSet kann man auf der
DateTime Column das Property DateTimeMode auf Unspecified umstellen. Dann wird die
Zeitzonen-Konvertierung nicht durchgeführt. Danke an Luke für den Tipp.
Seit Anfang April 2008 entsteht auf auf .NET GUI, eine .NET Community, die sich speziell mit der Entwicklung von grafischen Oberflächen auseinandersetzt.Ich zitiere mal von der Homepage:
"Gerade mit dem Aufkommen der Windows Presentation Foundation und Silverlight, haben sich viele neue Möglichkeiten ergeben. Der Gestaltung von Oberflächen wird höhere Priorität zuteil. Diese Community...
[[ This is a content summary only. Visit my website for full links, other content, and more! ]]
Wer in der Nähe von Braunschweig lebt oder arbeitet, sollte sich diesen Termin merken:
Pac-Man meets Silverlight
Datum: 17.06.2008 19:00:00
Ort: Kilian's Raffinerie
Beschreibung: Mit Version 2.0 von Silverlight geht für viele Webentwickler ein Traum in Erfüllung: Animierte Webanwendungen bauen ohne Flash und das auch noch in der eigenen .NET Lieblingssprache. Karim El Jed zeigt in...
[[ This is a content summary only. Visit my website for full links, other content, and more! ]]
Wer sich bisher aufgrund der Komplexität gegen die Verwendung von Regulären Ausdrücken gesperrt hat, sollte sich Josh Flanagan's Readable Fluent Regex Api bzw. was Roy Osherove mit LINQ to Regex daraus gemacht hat, angucken.
Damit lassen sich RegExen künftig wie folgt abbilden:
Fast jeder kennt doch mittlerweile Guitar Hero. Aber kennt ihr auch Guitar Zero?
Bei dem Spiel handelt es sich um einen freien Klon für den PC, welcher neben der Tastatur
und Joysticks auch diverse Guitar Hero Controller unterstützt.
Ob dieses Spiel auch auf die XBox360 portiert wird, da es auf dem XNA Framework basiert,
ist nicht bekannt.
In den Foren gibt es neben den Songs der Guitar Hero Serie auch jede Menge weiterer
Songs.
Danke Simon für diese Info.
Link: Guitar Zero Forums
(Quelle / Source: http://guitar-zero.en.softonic.com/)
- English Version -
Almost everybody knows already Guitar Hero. But do you know Guitar Zero?
This game is a free clone for the PC, which supports besides keyboards and joysticks
original Guitar Hero Controllers.
As the game is developed with the XNA Framework a port to XBox360 would be possible
but not known.
In the Forums all songs from the Guitar Hero series as well as tons of other songs
as well.
Thanks Simon for this info.
Link: Guitar Zero Forums
This posting is provided "AS IS" with no warranties, and confers no rights.
In der neuen Ausgabe der Visual Studio One gibt
es dieses Mal 2 neue Artikel meinerseits.
Thema: Elemente für den Heute-Bildschirm. Dieser Artikel zeigt, wie sich mit wie mit
ein wenig Hilfe Elemente für den Heute-Bildschirm in C# und VB.NET erstellen lassen.
Dieser Artikel basiert auf diesem vorherigen Post (http://blogs.compactframework.de/Peter.Nowak/2008/02/17/Elemente+Fuumlr+Den+HeuteBildschirm+Mit+C+Und+VBNET+Today+Screen+Items+With+C+And+VBNET.aspx).
Thema: Wer hat an der Uhr gedreht? - Zeitsynchronisation für die eigene Anwendung.
Da es mitunter sehr teuer werden kann, wenn eine Systemuhr nicht richtig konfiguriert
ist und wie dies in der eigenene (mobilen) Anwendung verhindert werden kann zeigt
dieser Artikel.
Zu lesen sind die Artikel in der Visual Studio
One, Ausgabe 03/2008.
- English version -
The new issue of the Visual Studio One magazine
offers 2 new articles written by myself.
Topic: Elements for the Today Screen. This article shows, how with a little bit of
help elements for the Today Screen can be created in C# and VB.NET. This article is
based on my previous post here(http://blogs.compactframework.de/Peter.Nowak/2008/02/17/Elemente+Fuumlr+Den+HeuteBildschirm+Mit+C+Und+VBNET+Today+Screen+Items+With+C+And+VBNET.aspx).
Topic: Who played around with the clock? - Sytem Time Sync for your own application.
As it can become very expensive under specific cirumstances, if a system clock is
set incorrectly this article shows how the system time can be set from your (mobile)
application.
These articles can be read in the Visual Studio
One magazine, issue 03/2008.
This posting is provided "AS IS" with no warranties, and confers no rights.
Da die Struktur des Teams für Visual Studio for Devices und des .NET Compact Framework
Teams sich geändert haben und teilweise auch zusammengefasst wurden, gibt es aus diesem
Grund auch einen neuen übergreifenden Teamblog, welcher ab sofort hier zu
finden ist.
Auch das Thema Silverlight Mobile soll an dieser Stelle Platz finden.
- English Version -
As the structuir of the Vuisual Studio for Device Team and the .NET Compact FFramework
Team has changed and partly combined, a new team blog has been created, which can
be found here.
As well the topics on Silverlight Mobile will be covered there as well.
This posting is provided "AS IS" with no warranties, and confers no rights.
Bei Verwendung des ASP.NET MVC Frameworks besteht meist die Notwendigkeit im Controller auf die HTTP Session zuzugreifen um dort den Zustand abzulegen. Eine naive Implementierung sieht z.B. so aus:
public RenderViewResult Warenkorb() {
const string key = “warenkorb”;
if (HttpContext.Session[key] == null) {
HttpContext.Session.Add(key, “”);
}
string warenkorb = (string)HttpContext.Session[key];
ViewData[key] = warenkorb;
return RenderView(“Warenkorb”, ViewData);
}
Dass diese Implementierung nicht die beste ist erkennt man (spätestens) wenn man versucht die Methode Warenkorb zu testen:
[TestFixture]
public class HomeControllerTests
{
private HomeController homeController;
[SetUp]
public void Setup() {
homeController = new HomeController();
}
[Test]
public void Action_Warenkorb() {
RenderViewResult renderViewResult = homeController.Warenkorb();
Assert.That(renderViewResult.ViewName, Is.EqualTo(“Warenkorb”));
}
}
Ergebnis bei Testausführung: System.NullReferenceException beim Zugriff auf den HttpContext. Dieser wird vom ASP.NET MVC Framework zur Laufzeit bereitgestellt, nicht jedoch wenn wir nur den Controller per Konstruktor instanziieren.
Nun kann man natürlich hingehen und mit Hilfe eines Mock Frameworks die Infrastruktur des Controllers bereitstellen. Die Tests sind dann jedoch sehr aufwendig, schlecht lesbar und dazu noch sehr zerbrechlich:
[SetUp]
public void Setup() {
homeController = new HomeController();
mocks = new MockRepository();
HttpContextBase httpContext = mocks.DynamicMock<HttpContextBase>();
session = mocks.DynamicMock<HttpSessionStateBase>();
SetupResult.For(httpContext.Session).Return(session);
ControllerContext controllerContext = new ControllerContext(
httpContext, new RouteData(), homeController);
homeController.ControllerContext = controllerContext;
}
[Test]
public void Action_Warenkorb() {
using (mocks.Record()) {
Expect.Call(session[“warenkorb”]).Return(“5 Äpfel”);
}
using (mocks.Playback()) {
RenderViewResult renderViewResult = homeController.Warenkorb();
Assert.That(renderViewResult.ViewName, Is.EqualTo(“Warenkorb”));
}
}
Viel eleganter lässt sich das Problem lösen in dem wir dem Controller im Konstruktor ein IStateProvider Objekt übergeben mit dessen Hilfe der Controller auf die Session zugreift. Der State Provider lässt sich im Test leicht durch ein Mock Objekt ersetzen:
public interface IStateProvider<T>
{
T GetState(Controller controller);
void SetState(Controller controller, T state);
}
Eine Implementierung des IStateProvider Interface könnte dann z.B. so aussehen:
public class StateProvider<T> : IStateProvider<T> where T : new()
{
private const string StateKey = “state”;
public T GetState(Controller controller) {
if (controller.HttpContext.Session[StateKey] == null) {
SetState(controller, new T());
}
return (T)controller.HttpContext.Session[StateKey];
}
public void SetState(Controller controller, T state) {
if (controller.HttpContext.Session[StateKey] == null) {
controller.HttpContext.Session.Add(StateKey, state);
}
else {
controller.HttpContext.Session[StateKey] = state;
}
}
}
Im Test wird der State Provider durch ein Mock Objekt ersetzt. Der Test ist auf das wesentliche reduziert, gut lesbar und leicht verständlich:
[SetUp]
public void Setup() {
mocks = new MockRepository();
stateProvider = mocks.DynamicMock<IStateProvider<string>>();
homeController = new HomeController(stateProvider);
}
[Test]
public void Action_Warenkorb() {
using (mocks.Record()) {
Expect.Call(stateProvider.GetState(homeController)).Return(“5 Äpfel”);
}
using (mocks.Playback()) {
RenderViewResult renderViewResult = homeController.Warenkorb();
Assert.That(renderViewResult.ViewName, Is.EqualTo(“Warenkorb”));
}
}
Zum Instanziieren der Controller verwende ich
Castle Windsor und das
MvcContrib Projekt. Eine gute Beschreibung wie die Initialisierung in der global.asax erfolgt findet man bei
Mike Hadlow. Damit der Controller instanziiert werden kann muss der Typ
StateProvider<> in Windsor bekannt gemacht werden. Andernfalls kann der Konstruktorparameter nicht erzeugt werden.
container.AddComponentWithLifestyle(“stateProvider”,
typeof(IStateProvider<>), typeof(StateProvider<>),
LifestyleType.Transient);
Alex
hat vor nicht allzu langer Zeit die Webpräsenz der .NET User Group Leipzig überarbeitet.
Herausgekommen ist nicht nur ein sehr schönes Layout, sondern eine Lösung
für eine häufige Frage bei den User Groups: Wie bekommen wir bei vernünftigen
Aufwand eine Webpräsenz?
Mit Graffiti-UserGroups, basierend auf dem Graffiti CMS, ist die Beantwortung dieser
Frage ab sofort kein Problem. Per Plug-In ist das Graffiti CMS gut erweiterbar und
Alex hat für die typischen Aufgabenstellungen bei User Groups ein paar codiert.
Also z. B.
-
Veranstaltungen anzeigen,
-
für Veranstaltungen registrieren,
-
Vortragsmaterialien anbieten.
Am besten einfach selbst ausprobieren! Hier gibt
es mehr Infos und hier den Quellcode.
Ich bin gerade auf der fmx in Stuttgart und konnte dort mit Boyd Multerer (Dev Manager der XBox Live Truppe) ein paar Worte wechseln. Dabei erzählte er mir, dass es dieser Tage eine CTP der neuen Version geben wird, INCL. ZUNE Support (!) :-)
Tja... und dann 2h später, sozusagen noch warm, kommt die Info, sie währen vor Plan mit dem CTP fertig und er stünde online. Nix wir los! Mein persönliches Feature-Highlight: Integration in VS 2008...
Offizielles Announcement:
http://blogs.msdn.com/xna/archive/2008/05/07/announcing-xna-game-studio-3-0-community-technical-preview-ctp.aspx
Download:
http://www.microsoft.com/downloads/details.aspx?FamilyId=DF4AF56A-58A7-474C-BFD0-7CF8ED3036A3&displaylang=en
Microsoft ist ja ein Meister darin, das Thema Lizenzierung zu einer WIssenschaft zu
machen und inzwischen gibt es wohl Leute, die ihr Geld damit verdienen, Firmen durch
den Lizenz-Dschungel von MS zu führen. Für alle, die Fragen bezgl. der Lizenzierung
von Visual Studio Team System 2008 haben, sei dieses Dokument empfohlen. Fragen dazu
aber bitte nicht an mich ;-)
Download
details: Visual Studio Team System Licensing
Wer auf den BigDays war, der hat es unter anderem in der Key Note gesehen: das Video zur Mandatars-Verwaltung der Stadt Graz. Dieses Projekt wurde vollständig auf Basis von Visual Studio 2008 und .NET Framework 3.x Komponenten umgesetzt und während der Wahlen in der Stadt Graz auf Windows Server 2008 Release Candidate betrieben - und sie ist durchgehend stabil gelaufen;) Klicken Sie auf den "Play-Button" weiter unten um das Silverlight-Video zu starten.
Umgesetzt wurde die Lösung von den Entwicklern der Stadt Graz gemeinsam mit unserem Partner Solvion nach einem gemeinsamen Architekturworkshop mit uns sowie einem Training mit Johann Grabner zu den Themen Windows Workflow Foundation und Windows Communication Foundation nachdem beide Technologien zum Einsatz kamen. Nun ist ein weiterer Ausbau der Anwendung mit Portal-Integration (SharePoint) sowie die Entwicklung zusätzlicher Services geplant.
Einige Basis-Informationen zur Architektur der Anwendung
Ziel der Stadt Graz war es, eine möglichst hohe Wiederverwendbarkeit von Funktionalität zu erreichen. Natürlich stand Service Orientierung damit auch zur Diskussion. Allerdings haben sich im Laufe der Architektur-Diskussionen zwei Ebenen der Wiederverwendung ergeben - nämlich die Wiederverwendung auf Ebene von "Geschäftsfunktionen" hinter welchen sich komplexe Prozesse verbergen und die Wiederverwendung von Aspekten innerhalb von Geschäftsfunktionen. Erste Ebene wird klar durch die Prinzipien der Service Orientierung adressiert und beschäftig sich eher damit, "Geschäftsfunktionen" für zum Business passender Granularitäts-Ebene zu identifizieren. Für zweite Ebene haben wir gezielt den Aufbau einer Activity Library für die Windows Workflow Foundation vorgeschlagen. D.h. hinter jedem Business Service (im Sinne der SO) verbirgt sich ein durch die Windows Workflow Foundation abgebildeter Prozess, der nach einer Werkzeug-Material Metapher implementiert wurde und sich aus Custom Activities zusammensetzt, die natürlich in verschiedenen Prozessen wiederverwendet werden können. Folgende Abbildung stellt dies schematisch dar:
Gehostet wurden die Services im Windows Server 2008 (damals noch der Release Candidate des Servers) mit Hilfe von Internet Information Services 7.
Wenn Sie mehr Details über die Implementierung und den Betrieb erfahren möchten, können wir gerne den Kontakt mit unserem Entwicklungspartner Solvion herstellen.
Vor wenigen Tage ist das .NET Framework 3.5 Enhancements Training Kit als preview veröffentlicht worden. Noch in diesem Jahr werden Neuerungen im Bereich von ASP.NET und ADO.NET erscheinen, welche in Ergänzung zum .NET Framework 3.5 zu verstehen sind. Das .NET Framework 3.5 ist im November 2007 zusammen mit Visual Studio 2008 erschienen.
Die Neuerungen umfassen:
- ASP.NET controls for Silverlight
Vereinfachen das Einbinden von Silverlight Applikationen (z.B. Video) in ASP.NET Applikationen
- ASP.NET MVC
Ein Framework, welches es einfach macht, das model-view-controller Pattern in Web Applikationen umzusetzen
- ASP.NET Dynamic Data
Ein Framework, welches das Erstellen von datengetriebenen Applikationen ohne Code erlaubt. Beispielsweise kann aufgrund eines bestehenden Datenmodells eine Web Applikation generiert werden, welche CRUD Operationen unterstützt. Im Kern vergleichbar mit Access, jedoch flexibel erweiterbar mit .NET.
- ASP.NET AJAX
Erweiterungen, welche Unterstützung für die Browser History (back Button) bieten.
- ADO.NET Entity Framework
Ein OR Mapper, welcher das Definieren eines konzeptionellen Datenbankmodells erlaubt. Das ADO.NET Entity Framework ist somit mächtiger der OR Mapper, welcher in LINQ to SQL integriert ist. Auch ist es unabhängig von der verwendeten Datenbank.
- ADO.NET Data Services
Diese Dienste erlauben das Finden und Manipulieren von Daten über das Web durch simple URIs.
Die Neuerungen werden hier inkl. Webcasts ausführlich vorgestellt: http://www.asp.net/downloads/3.5-extensions/
Das .NET 3.5 Enhancement Training Kit, welcher hier zu finden ist, enthält zu allen Bereichen ein Hands-on Lab inkl. Beispielcode. Nachfolgend die ADO.NET Data Services in Aktion:
PowerPoint Präsentationen und Demos werden noch nachgeliefert.
Die Erweiterungen selber, also die sogenannten ASP.NET 3.5 Extensions Preview, können hier runtergeladen werden.
Sicherlich werden wir die Neuerungen an einer unserer zukünftigen MSDN Veranstaltungen vorstellen. Eine Übersicht über die kommenden Veranstaltungen finden Sie jeweils hier: http://www.microsoft.com/switzerland/msdn/de.
In einer Pressemitteilung hat Borland heute zusammen mit den Ergebnissen des ersten Quartals diesen Jahres den endgültigen Abschluss einer Vereinbarung zum Verkauf der Tochterfirma CodeGear an Embarcadero Technologies bekannt gegeben.
Der Verkaufspreis liegt bei ungefähr 23 Millionen US-$.
Quelle: http://phx.corporate-ir.net/phoenix.zhtml?c=112793&p=irol-newsArticle&ID=1141119
Interessantes Detail ist, dass Embarcadero Technologies letztes Jahr wohl selbst erst von Thoma Cressey Bravo - einer Private [...]
Eigentlich ein alter Hut in den Web 2.0 Zeiten aber in der Praxis dann aber doch beeindruckend -
Xing hat jetzt eine Kartenansicht der Kontakte (beta) eingebaut:

Wer in ASP.NET viel mit der ObjectDataSource arbeitet, kann von Attributen eigentlich
nur profitieren.Ich benutze die Attribute in meinen Business-klassen, um mit der ObjectDataSource
auf meine CRUD-Methoden zuzugreifen.
Ein Beispiel:
[DataObjectAttribute()]
public class CustomerManager()
DataObjectAttribute identifiziert
einen Typ als für die Bindung an die ObjectDataSource geeignetes Objekt
Als nächstes werden die CRUD-Methoden mit den Attribut DataObjectMethod ausgewiesen.
Hier die SELECT-Methode:
[DataObjectMethod(DataObjectMethodType.Select, true)]
public static List<Customer> GetList()
{
return CustomerDB.GetList();
}
DataObjectMethod identifiziert
eine verfügbare Methode der ObjectDataSource, wobei DataObjectMethodType
die Methode auswählt . In unserem Fall die SELECT-Methode.Das true gibt an, ob die Methode in der Object-
DataSource als Standard für das SELECT gesetzt wird.
Äquivalent werden jetzt die UPDATE-bzw. DELETE-Methode der ObjectDataSource vorgegeben.
Update:
[DataObjectMethod(DataObjectMethodType.Update, true)]
public static long Save(Customer myCustomer)
{
return CustomerDB.Save(myCustomer);
}
Delete:
[DataObjectMethod(DataObjectMethodType.Delete, true)]
public static bool Delete(Customer myCustomer)
{
if (myCustomer != null)
return CustomerDB.Delete(myCustomer.id);
else
return false;
}
Mit diesen Attributen hat man schnell die CRUD-Defaultmethoden der ObjectDataSource gesetzt.
Live Mesh ist in einer TechPreview verfügbar. Registriert man sich für Live Mesh, ist man zuerst auf einer Warteliste. Für all die noch keinen Zugang erhalten haben, habe ich einfach mal einen kurzen Screencast zu der Out-of-the-Box Funktionalität mit Live Mesh gemacht. Ich werde noch einen weiteren zur Programmierung mit Live Mesh machen, allerdings erst im Juni.
Der Live Mesh Client Dienst funktioniert in diesem TechPreview nur richtig, wenn man die Computer Locale und die User Locale auf en-US einstellt.
Das Video (ca. 10MB) gibt es hier zum Download.
Wer bereits mit ASP.NET in Berührung kam, der kennt eventuell die Master Pages. Also eine Art Vorlage, die das grundsätzliche Aussehen aller darauf basierenden Seiten beschreibt. Vorhandene Platzhalter können je nach Seite mit dem gewünschten Inhalt befüllt werden.
Dieses Verhalten wäre in einigen Fällen auch für WPF sehr hilfreich. Leider gibt es diese in dieser Form nicht. Wie ein derartiges Verhalten jedoch trotzdem simuliert werden kann, zeigt der Artikel WPF "Master Page" like functionality von Brad Cunningham
Empfehlenswert!
Edit: Ebenfalls sehr empfehlenswert ist der Artikel von Karin Huber auf CodeProject zu diesem Thema: WPF Master Pages.
If you are working with Silverlight 2 Beta 1 already, I urge you to have a look at the new, second preview version of the Deep Zoom composer.
The basic concept has stayed the same (thankfully), you create a new Deep Zoom project, you add your pictures, position them on a work surface and then create the parts needed for the Silverlight "MultiScaleImage" control to show your Deep Zoom composition.
Improvements are numerous and great. First, when composing images, there are now guidelines to help you position the pictures relative to each other.
Then there is the improved export dialog.
You still have the possibility to select to export as Composition or Collection. The advantage of the collection is that you won't export one, large image but rather a composition of individual images that you can then programmatically address and manipulate - move, hide, show, etc.
If you choose to "Export Images and Silverlight Project", the composer will create a ready-to-use Silverlight project, remember that the MultiScaleImage control in Silverlight can out of the box show the Deep Zoom collection, but the functionality of zooming with your mouse wheel or left-clicking and dragging to move the picture is not part of it's functionality.
So in the previous versions of the Deep Zoom compo