Marcel MemoryDump

Dont ask me, I just push buttons

August 2009 - Posts

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.

Posted: Aug 31 2009, 08:00 AM by Marcel | with no comments
Filed under: ,
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.

Posted: Aug 30 2009, 05:30 PM by Marcel | with 1 comment(s)
Filed under: ,
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

Posted: Aug 18 2009, 05:13 PM by Marcel | with no comments
Filed under: ,
Windows 7 – TaskBar en StartMenu History

Ook een handige toevoeging aan de Taskbar en het Start menu in Windows 7 is het direct toegankelijk zijn van history. Het lijkt min of meer een vervanger van de ‘Laatst geopende documenten’ menu item van Vista.

In het Start menu zit het er als volgt uit.

startmenu-hist

Op de Taskbar moet je rechts klikken op het applicatie icoon.

 taskbar-hist

Wederom erg handig.

Posted: Aug 14 2009, 02:24 PM by Marcel | with no comments
Filed under: ,
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 1680x1050 ligt de limiet bij 14 open tabbladen. Er wordt dan overgegaan van previews naar een gewone lijst met titels.

exprlist

Toch grappig.

Posted: Aug 12 2009, 03:45 PM by Marcel | with no comments
Filed under: ,
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

Posted: Aug 11 2009, 09:00 AM by Marcel | with 1 comment(s)
Filed under: ,
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.

Posted: Aug 11 2009, 12:41 AM by Marcel | with no comments
Filed under: , ,
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

Posted: Aug 10 2009, 04:19 PM by Marcel | with no comments
Filed under: ,
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!

Posted: Aug 06 2009, 08:00 AM by Marcel | with no comments
Filed under: ,
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!

Posted: Aug 05 2009, 12:00 PM by Marcel | with no comments
Filed under: ,
VS2010 en .NET 4.0 – Optional Parameters

Oke, VB kende deze functionaliteit al langer, C# straks vanaf versie 4 ook.

Je kent dat wel he. Je hebt een Class gedefinieerd met meerdere methoden. Soms zijn de parameters optioneel. Nu zouden we dan meerdere overrides van de methode maken. Op zich niets mis mee, maar levert uiteindelijk wel een beheer hel op. Wat als er een default waarde verandert, dan zul je dat waarschijnlijk op meer dan een plek moeten aanpassen.

Hieronder een aantal aanroepen van een methode waarvan een aantal parameters optioneel zijn. Oke, de optionele parameters moeten altijd aan het eind staan, maar dat is niet zo vreemd eigenlijk. Bij het aanroepen van de methode kun je kiezen voor een named parameter of volgorde.

optionalparam0

Uiteraard krijg je gewoon een compile error, als je de niet verplichte parameters ook niet meegeeft.

optionalparam2

Dit is de definitie van de methode.

optionalparam1

Zoals je ziet, heb ik constanten gebruikt voor de default waarde van de parameters. In eerste instantie wilde ik een lege string als default waarde opgeven. Ik dacht string.Empty te gebruiken, maar helaas wordt dat niet gepikt.

optionalparam3

Mijn test applicatie toonde dit dan uiteindelijk.

 optionalparam4

 

 

 

 

 

 

Mooie oplossing zorgt in elk geval voor schone code.

Posted: Aug 05 2009, 08:00 AM by Marcel | with no comments
Filed under: ,
Windows 7 – Taskbar

Al een tijdje heb ik Windows 7 op mijn dual touch laptop draaien. Het hele dual touch gebeuren is Windows 7 is er mooi, maar over later wellicht meer.

Mooi aan Windows 7 is de Taskbar. Als je meerdere instanties van dezelfde applicatie open hebt, dan worden ze in Vista pas gegroepeerd als er geen ruimte meer op de Taskbar is. In Windows 7 vindt het groeperen altijd plaats. Zie je het subtiele verschil van het icoontje op de Taskbar? Het lijken er twee op elkaar.

 w70 w71

Wat ik nog mooier vind, dat het ook geldt voor meerdere tabjes binnen Internet Explorer.

w72

Waren het verschillende instanties van Internet Explorer, dan zie je het verschil op de Taskbar niet. Erg cool. Ook erg mooi, je kunt een applicatie of tab in Internet Explorer gewoon vanaf de preview sluiten. Als je over de preview gaat met de muis, dan zie op de achtergrond de echte versie. Alsje dan op het rode kruisje in de preview klikt, dan sluit je ook daadwerkelijk de instantie of tab.

 w73 w74

Ook vind ik de notification area naast het klokje beter. In Vista zie ik altijd net de icontjes die wel wil zien niet en degene die ik niet wil zien wel. Nu kun je dat customizen en zelf bepalen wat je wel of niet ziet.

 w7noti

Posted: Aug 04 2009, 09:47 AM by Marcel | with no comments
Filed under: , ,