lördag, november 29, 2008

Rendering i WPF

När det gäller rendering av grafik i WPF pratar man om att den sker i olika lager, eller tiers. Ett tier definieras av vilka möjligheter och vilken prestanda grafikhårdvaran har på den dator som kör applikationen och desto högre tier man kör på desto bättre prestanda får man. WPF har tre olika Tiers.

Tier 0: På tier 0 har man ingen hårdvaruacceleration utan all rendering utförs av mjukvaran och exekveras på datorns CPU. Man hamnar på tier 0 om man har en DirectX-version lägre än 7.0.

Tier 1: På tier 1 har man delvis tillgång till hårdvaruacceleration. Minnet på grafikkortet måste vara +30MB och versionen av DirectX är större än 7.0 och mindre än 9.0.

Tier 2: Här har man hårdvaruacceleration på alla element som har stöd för hårdvarurendering. T ex så dök det upp stöd för hårdvarurendering av bitmap effects som Blur och DropShadow. För att komma upp i tier 2 måste man ha DirectX-version som är högre än 9.0, minst 120MB grafikminne samt lite andra grejer.

DirectX

Den senaste version av DirectX för XP är nio och Microsoft har sagt att de bara kommer att släppa DirectX 10 för Vista (och senare). Det finns en version av DirectX 10 för XP men den är inte från Microsoft. Vilken version som körs av DirectX får man enklast fram genom att köra dxdiag från en commandopromt.

RenderCapability

För att ta reda på vilket tier man exekverar på kan man använda sig av RenderCapability.Tier. Den returnerar en Int32 som man får göra en right-shift-operation på för att få reda på vilket tier den motsvarar.

RenderCapability.Tier returnerar följande för respektive lager:

Tier 0: 0

Tier 1: 65536

Tier 2: 131072

och koden för att göra en right-shift är:

var tier = (RenderCapability.Tier >> 16).ToString();


Microsoft har en bra beskrivning av vad som skiljer de olika lagren på http://msdn.microsoft.com/en-us/library/ms742196.aspx

fredag, november 21, 2008

Parallellisering

Det är inte direkt någon nyhet att processorutvecklingen den senaste tiden går mot fler kärnor istället för snabbare processer. Intels snabbaste processor för desktop ligger idag på 3,2GHz och har fyra kärnor. Tidigare har man kunnat förlita sig på ”the quake optimization rule” men det kommer inte att funka längre. För att skriva applikationer som drar nytta av processorerna måste vi som utvecklare ge oss in i parallellisering. Det kommer också att komma stöd för parallellisering i ramverket genom Parallel Extensions. På PDC tidigare i år var det inte mindre än nio sessioner om parallel programming.

Teamet på Microsoft som jobbar med frågorna har en blog och en site med gott om information.

Om det är någon som undrar vad ”the quake optimization rule” är så är det ett utryck jag hörde Ted Neward säga på .NET Rocks. Tänk dig att någon säger till dig att din applikation går för sakta. Du tar en vecka på dig och kollar igenom koden och sedan säger du att du behöver ca 18 månader på dig för att dubbla prestanda. Du får godkänt på projektet och kan sedan gå hem och spela Quake i 18 månader och vänta på nästa generations processor.

Det här baserar på Mores lag men det kommer inte att fungera längre om vi inte har applikationer som drar nytta av alla dessa kärnor.

tisdag, november 11, 2008

Nyheter i Visual Studio 2010

Idag efter Keynote på TechEd blev jag lite nyfiken på att labba lite med Visual Studio 2010. Jason Zander visa på lite nyheter som jag tänkte kolla in. Så ikväll när jag kom till hotellrummet laddade jag in den CTP av Visual Studio 2010 som finns att ladda ner och här är lite grejer som jag hittade:



  • När man ska skapa ett nytt projekt i VS2008 så ligger alla templates för Visual Basic på den lite undanskymda platsen Other Languages. Nu har den flyttats upp och ligger bredvid C#. En liten förändring men ack så viktigt för att VB-utvecklarna ska känna sig lika viktiga.


  • Implicit Line Continuation. Jason visade lite vb-kod idag och visade då hur man kunde plocka bort Line Continuation-tecknet. När man läser på så visar det sig att man inte längre behöver använda sig av det för många, vanligen förekommande, fraser. Dvs det går inte alltid att ta bort det. Ett exempel när man inte längre behöver det är i LINQ. Så när man tidigare fick skriva:

    Dim procs = From p In Process.GetProcesses() _
    Where p.ProcessName.StartsWith("s") _
    Select p

    kan man nu helt enkelt ta bort de tecknet på varje rad.

    Dim procs = From p In Process.GetProcesses()
    Where p.ProcessName.StartsWith("s")
    Select p


  • VB får nu också en del som kom i C# 3.0 som Auto Implemented Properties och Collection Initializers.


  • Den stora nyheten i C# är ju så klart möjligheten att hantera dynamiska typer men mer om det en annan gång.


  • En nyhet i Visual Studio är att man kan generera klasser, metoder och properties direkt från kod. Det innebär att man först kan skapa ett unit test och där skapa en instans av ett objekt som inte finns (ännu). Sedan använda sig av den smart tag som dyker upp och väljer att generera den klassen. Man får då upp en dialogruta där man får välja i vilket projekt den ska skapas och vilken synlighet den ska ha. En bug här är dock att om man har sitt testprojekt och sin klass som testas i olika namespace så kommer det genererade klassen att hamna i fel namespace. För er som använder er av ReSharper så är det här så klart ingen nyhet ;-)


  • En annan nyhet i Visual Studio är de verktyg som finns för att lätta få en överblick över ett projekt. T ex finns det en funktion som kallas Architecture Explorer. Med hjälp av den får man en överblick över hela sitt projekt med alla referenser och kan använda det diagrammet för att navigera i sin lösning. Bilden nedan visar ett AssemblyDiagram. De olika pilarna visar på var det finns beroenden och bredare pilar betyder ett större beroende.







Jag tror att den här typen av diagram kommer att bli väldigt bra verktyg framöver just för att få en bättre överblick över ett projekt. Jag skulle kunna tänka mig att ladda in ett existerande projekt bara för att få ut ett sådant diagram för att t ex använda i en dokumentation.

måndag, november 10, 2008

Certified at TechEd

Nytt för i år är att man kan skriva cert på TechEd. Jag vet att de hade den möjligheten för en massa år sedan men de senaste åren har de inte haft det. Nu finns det dock en del av labb-arean där man kan signa upp sig för att skriva cert. Så jag anmälde mig igår för att ta det fruktade 70-536 .NET Framework - Application Development Foundation. Jag var så nöjd att jag hade en promotion-kod som gav mig 25% rabatt tills en annan MCT sa att man som MCT har 45% rabatt på alla cert, alltid. Det kan ju vara bra att veta till nästa gång.

Jag har förberett mig ganska länge, läst, sett den en-timmes "cram session" som finns tillgänglig online och labbat och googlat en hel del. Jag tycker att det brukar funka rätt bra om man kollar på Skills Measured och sedan läser på och labbar om de olika delarna. När jag gick igenom alla frågor så trodde jag att jag skulle hamna runt 800 poäng men jag lyckades skriva 982! Tror bara jag hade en fråga fel.

Done that, been there, got the t-shirt... Den här gången var det en t-shirt med texten Certified at TechEd Developers Barcelona.

Så nu är det dags för lunch och sedan är det Keynote med Jason Zander.

Ja just det... nu ska parentesen bort. Hasse är på väg hit så från imorgon är vi full styrka på plats.

söndag, november 09, 2008

Stuck in SharePoint-land!

När det gäller labbarna på TechEd så blev det SharePoint i år igen. Så nu har jag ca 40 olika labbar som jag ska handleda under veckan och vid flera pass är jag ensammen på 28 platser... Kan bli en utmaning! Jag hade önskat dubbla pass på måndag morgon men fich istället dubbla pass på måndag kväll. Annars passar mitt schema in med de sessioner jag vill se.

Det var en del nya labbar, bla annat en om hur man skapar Silverlight 2.0 Webparts i SharePoint som var riktigt bra. Det var en del fel i materialet som vanligt och hela labben gick inte att slutföra. Jag fattar inte vad de som korrekturläser och kollar labbarna håller på med.

Som alltid är allt väldigt välordnat och infrastrukturen fungerar felfritt.

Som jag skrev i ett tidigare inlägg så verkar TechEd EMEA lite nerprioriterat i år och det märks också en del konstnadsbesparingar. T ex så får vi som jobbar här fått en tom väska. Det brukar annars vara fyllt med goodies och det ryktas om att lunchen vid två av dagarna bara är en lite lunch-påse istället för den buffé som normalt dukas upp.

lördag, november 08, 2008

På väg till TechEd!

Sitter nu på Arlanda på väg till TechEd i Barcelona. Det blir fjärde i ordningen, en i Amsterdam -99 och nu för tredje året i rad i Barcelona. Tyvärr så kommer circus-TechEd att flytta till Berlin från 2009... Även om innehållet är det viktiga så går det inte att komma ifrån att 20 grader i november, tapas och FC Barcelona höjer stämningen på konferensen en aning!

Det känns som att årets TechEd har kommit lite i skuggan av PDC och att alla announcements redan är gjorda så det ska bli spännande att se vad de har att komma med på Keynote på måndag.

Årets uppställning från Connecta består av undertecknad, Magnus Hjelmqvist och Daniel Joelsson. Magnus kommer att fokusera på Microsoft Dynamics och allt som har med IT-driven affärsutveckling medan Daniel kommer att fokusera på sessionerna om arkitektur, Entity Framework, Visual Studio 2010, LINQ och C#. Själv kommer jag att försöka se lite av Best of PDC, en hel del om WPF och säkerligen några arkitekturdragningar. Har också hört rykten om att Mikael Deurell ska sjunga på scen under Tess Ferrandez dragning och det får man ju inte missa.

Tyvärr kunde min kollega Hans Sterby inte följa med i år. Han var uttagen till att jobba i labbarean men tack vare det helt rätta beslutet att prioritera familjen så blir han kvar hemma.

I år kommer ni att känna igen oss från Connecta genom våra fina tröjor (om jag nu får de andra att använda dem). Hasses fick bli i parentes eftersom att han inte är med...



Veckan kommer att bli ganska fullpackad. Det börjar med labb-genomgång imorgon kl 09.00 då jag också får tilldelat vilka pass jag får samt vilka labbar jag kommer att jobba med. Förra året var det SharePoint som gällde men i år hoppas jag på WPF eller ADO.NET. På tisdag kväll är det Architect Chillout Session med Mikael Deurell och på onsdag är det Country Drinks.

På torsdag kommer min sambo ner och spenderar helgen tillsammans med mig för att sedan åka hem på söndag. Jag stannar dock kvar och deltar i Visual Studio Team System Partner Summit från söndag till tisdag. Det kommer att bli en liten konferens för de partners till Microsoft som är med i Team System Inner Circle och kommer att ha talare som Sam Guckenheimer, Brian Harry och Ivar Jacobson.

Det kommer att bli tio otroligt spännande och inspirerande dagar men oj oj vad jag kommer att sakna mina barn!