Windows 7 – VPC

Sinds Windows 7 is er natuurlijk ook een nieuwe versie van Virtual PC. Met de Virtual PC 2007 was nogal wat mis, of beter gezegd daar miste nog wel een paar dingen aan. Zo kon je in een VPC niets met USB devices etc. Nu kan dat wel. Maar als je VPC op een harddisk staat en je die probeert te benaderen, dan gaat het toch een beetje mis.

Ondanks dat Windows 7 RTM is, is er van Virtual PC alleen nog een RC beschikbaar. Informatie over wanneer de ‘echte’ versie beschikbaar komt is helaas onduidelijk.

Wat ook heel vervelend was, dat je geen VPC’s met een 64 bits Operating System kunt maken. Jammer omdat je dan dus kennelijk weer naar ijzer terug moet en dat wil je nu juist voorkomen met virtual machines.

Naast Windows 7 is ook Windows 2008 R2 RTM. Dit operating system is er alleen in een 64 bits variant. Ik wilde daar naar kijken. Naast mij 64 bits Laptop met Windows 7 64 Bits, beschik ik niet over nog meer 64 bits hardware. Maar ik verwachte dat met de nieuwe versie van Virtual PC mogelijk was om een 64 bits virtual machine te maken.

Helaas! Dat kan niet. Met software van de concurent (VMware) kan het wel. De workstation variant kost geld en als zuinge Nederlander wil ik dat natuurlijk niet betalen. Dus moest ik op zoek naar iets anders.

Dit anders heb ik nu gevonden in Sun xVM Virtualbox. Deze kost niks en kan 64 bits Virtual machines maken. Of het ook een blijvertje is, dat moet de toekomst uitwijzen.

Windows 7 – Shake it!

Een grappig feature is het shaken met de titelbar van een scherm. Als je dat doet, dan minimaliseren alle overige geopende schermen. Of als alle schermen al geminimaliseerd zijn, dan komen ze allemaal weer terug. Op een Touch scherm of laptop kan dat ook met de vingers.

Of het nuttig is? Ik weet het nog niet. Ik ben nog geen sitautie tegenkomen, dat ik het werkelijk nodig had. Maar misschien komt dat nog.

Windows 7 – Pin to Taskbar and Startmenu

Oa. in Windows Vista had je quick start bar vlak naast je Start knop zitten. In Windows 7 is hij niet direct zichtbaar nog wel steeds aanwezig.

Doe een rechtermuisklik op het programma in het startmenu dat je graag op de Taskbar zou willen zien. Kies dan voor de “Pin to Taskbar” menu keuze.

menu

En je programma staat op de Taskbar. Je kunt zien dat hij niet actief is, omdat er geen 3d blok omheen staat.

 pinnedtotaskbar

Wil je hem weer van je Taskbar afhalen? Rechtermuisklik op het icoon en selecteer het “Unpin this program from taskbar” menu item.

  unpin

Als je meer shift + rechtermuis klik doet, dan krijg je een uitgebreider menu. Vooral interessant als je de pinned applicatie wil starten als een administrator.

extendedmenu

Ook het pinnen aan het start menu kan dus nog steeds.

startmenu

Windows 7 – IE8 en de Taskbar

In Internet Explorer 8 onder Windows 7 kun je vele tabs openen met verschillende websites. Als je dan boven het IE icoon op de TaskBar gaat hangen, dan zie je previews van alle openstaande tabjes.

tabs

exprfull

Het leek mij dat daar een limiet aan zit, die gekoppeld is aan de resolutie van het scherm. Op mijn scherm met een resolutie van 1680×1050 ligt de limiet bij 14 open tabbladen. Er wordt dan overgegaan van previews naar een gewone lijst met titels.

exprlist

Toch grappig.

Windows 7 – Powerbutton

Eindelijk kun je het gedrag van de Powerbutton op het start menu beinvloeden. In Vista deed het ding eigenlijk niet wat je verwachtte. Als je er op drukte, dan ging Vista in Sleep mode. Maar Vista werd niet, zoals je verwacht bij een Powerbutton, afgesloten. Nu kun je het gedrag van de button kiezen.

powerbuttonstart

powerbutton

VS2010 en .NET 4.0 – Dynamic

Variabelen moet je in .NET altijd netjes typeren.

orgdeclaraties

En ook als het datatype niet in de variablenaam staat (zoals sommige codeerstandaarden voorschrijven), dan weet je het datatype door de ondersteuning van Visual Studio. Niets aan de hand, voor iedereen duidelijk en overzichtelijk.

compilerhint

Maar sinds versie 3.0 is er een manier bijgekomen. Het keyword VAR werd geintroduceerd (niet te verwarren Variant in VB). Deze declaratie wijze wordt veel gebruikt bij Linq queries. Maar ook in andere situaties prima bruikbaar. Nog niets aan de hand. Je declareert een variabele van het type var en je moet hem gelijk initialiseren. Vervolgens doet de compiler net alsof je wel een datatype opgegeven hebt.

compilerhintvar

Wat er gebeurt, het werkelijke datatype wordt afgeleid van de initialisatie en kan dan natuurlijk niet meer wijzigen. Bij het compileren wordt deze optimalisatie doorgevoerd. Er gebeurt dus niet op runtime.

Zie deze foutmelding:

compvarstrint

Met versie 4.0 komt er een derde variant bij, namelijk het keyword Dynamic. Deze zal runtime bepalen van welk type een variabele is en daar naar acteren. Heel handig is situaties waarin je geen Code completion tot je beschikking hebt, zoals het gebruik van COM objecten. Als je, zoals in onderstaand voorbeeld een variabele declareert van het type dynamic, dan zal de compiler (bij de declaratie van een Class) aangeven het werkelijke type at runtime te resolven. Bij een simpele variabele zoals hierboven zal rode krinkeltje verdwijnen.

 compilerhintdynamic

Wat is het grootste verschil tussen de drie manieren dan? Performance is een verschil, het resolven van een Dynamic op runtime kost uiteraard tijd.

Zie hier mij voorbeeld. Ik heb een MyClass met 2 methoden.

 class

Ik heb een methode, die de drie varianten gebruikt en ik bereken het verstreken milliseconden. Als de twee regels met commentaar slashes zouden voor compiler errors zorgen.

 declaraties2

Het resultaat is dan, zoals verwacht. Het gebruik van het dynamic variant kost tijd.

 elapsedms

Ik ben benieuwd, hoe vaak dit keyword misbruikt gaat worden.

Windows 7: Virtual PC

Oke Windows 7 is RTM en beschikbaar voor Technet en MSDN leden. Erg cool! Dus heb ik mijn weekend goed besteed door mijn laptop te voorzien deze geniale nieuwe versie ;-). Uiteraard heb je dan ook Virtual PC nodig, we gebruiken dat bij de klant veelvuldig.

Wat mij nu pas opvalt (ik had Virtual PC ook geinstalleerd op mijn Windows 7 RC laptop) is, dat de toetscombinatie voor CTRL-ALT-DEL veranderd is. Voorheen was dat CTRL-ALT-HOME, maar nu is het CTRL-ALT-END. Bummer!

Oja, Virtual PC is nog steeds een RC versie. Om het te kunnen draaien moet je processor hardware virualisatie ondersteunen*). Daarna werkt het prima, het lijkt wel iets langzamer te zijn en je ziet een dubbele mousepointer. USB etc worden nu wel binnen de VPC ondersteunt.

*) Aanpassen in het BIOS, daarna computer even uitzetten (erg belangrijk) en dan weer opstarten. Aanpassen van het BIOS tijdens een restart is niet afdoenden, weet ik uit ervaring ;-s

VS2010 en .NET 4.0 – Class diagram en Sequence diagram

Met Visual Studio 2010 komt er ook een andere mooie mogelijkheid erbij. Normaal gesproken maak je natuurlijk vooraf documentatie zoals Class diagrammen en Sequence diagrammen. Maar nadat de ontwikkelaars bezig zijn geweest, is de documentatie meestal verouderd. Dan moeten we achteraf documentatie maken.


Zie hier mijn Class diagram, je ziet niet hoe deze aan elkaar verbonden zijn.


ClassDiagram1


ClassDiagram0 


In het context menu is er een keuze “Generate Sequence Diagram…”. Je krijgt dan een dialoog (in mijn voorbeeld moest ik kiezen voor Current Project, Current Solution werkte in mijn voorbeeld niet).


 sequencediagrammenu0sequencediagrammenu1


Het resultaat is een sequence diagram. Oke, mijn Class diagram is niet heel interessant, maar het idee is duidelijk.


sequencediagramresult


Erg handig!

Nog kortere code schrijven

Kijk je code maar eens na en vermoedelijk vind je deze constructie nogal eens. (Nou ja niet de Console.WriteLines dan 😉 )

int? x = null;
if ( x == null )
   Console.WriteLine( 0 );
else
   Console.WriteLine( x );

Of je moet net als ik een aanhanger zijn van deze oneliner variant. Hij is nog best leesbaar.

int? y = null;
Console.WriteLine( y == null ? 0 : y );

Van de week kwam ik deze tegen op het internet (http://blogs.oosterkamp.nl/blogs/ronald/archive/2008/05/29/weer-iets-geleerd.aspx, Oosterbeekse Kanjer).

int? z = null;
Console.WriteLine( z ?? 0 );

Oke, het wordt al iets onduidelijker, maar wel mooi!