onsdag 10 oktober 2007

.NET Framework 3.5 Källkod

Microsoft har valt att släppa källkoden till .NET Framework 3.5.
Väldigt väldigt oväntat av dem att ta detta steg. Kom som en riktig överraskning. Det innebär att man kommer att kunna se hur de utvecklat klasserna som finns i .NET Framework. Personligen tycker jag att det är kanonbra.
Många gånger sitter man och försöker debugga sin kod som anropar .NET-klasserna, utan att förstå vad som egentligen händer "bakom kulisserna".
Nu när det släppt källkoden kan man mer se vad som händer "bakom kulisserna" och på så sätt kanske förbättra sin egen kod. Man kan även se hur de implementerat en viss klass om man funderar på att skriva något liknande.

I VisualStudio 2008 kommer man att kunna stega in i .NET-klasserna när man debuggar (Step Into-F11).
Ok, vi har ju alla använt Lutz Roeder's eminenta Reflector, men nu får vi lite mer funktionalitet i VS debuggern. Dessutom så lovar Microsoft att spara utvecklarnas kommentarer i källkoden.
Ska bli intressant att se hur en MS-programmerare kommenterar sin kod, jag har hört att de har väldigt strikta regler på kodkommentarer.
Läs mer om detta på Scott Guthries blogg här.

onsdag 19 september 2007

ClassMate 3 (Extension Methods C#3.0)

Jag är helt frälst i C# 3.0 tilläget "Extension Methods". Ska förklara lite snabbt vad det innebär.

I objektorienterade världen så är vi vana vid arv och polymorfism. Vi har en basklass A som sedan B och C ärver ifrån. B och C är nu subklasser till A. De ärver alla publika egenskaper och metoder från A. Vi kan nu utöka funktionaliteten i B och C med nya metoder och egenskaper. Vi kan även förändra beteende av befintliga ärvda metoder och egenskaper från A genom s.k polymorfism. Allt detta vet ni OO programmerare om, gammalt som gatan.

Ibland kan det ändå kännas lite overkill att ärva en klass för att lägga till någon enstaka metod. Eller vissa klasser går inte att ärva ifrån eftersom de är förseglade (sealed). Då kommer extension methods in i bilden. Med den metodiken kan man nämligen "injicera" metoder i befintliga klasser utan att ärva eller förändra klasserna. Det går även att utföra denna injicering på förseglade klasser som t ex string klassen. Idén har funnits länge och vi hittar delar av denna metodik i bl.a programspråken Eiffel och Smalltalk där det kallas Mixin. Här är ett exempel där jag lägger till en metod "ToVoice" som får datorn att "tala ut" den sträng som man jobbar med. Extension metoden ser ut så här:



Observera att metoden måste vara static i en static class. Hemlighetet ligger i metodens parametara ser vi nyckelordet "this", det är detta nyckelord tillsammans med den statiska deklarationen som gör metoden till en extension method. Nu kan vi använda denna metod på vilket sträng objekt som helst precis som om det var med i strängklassen från början. Tex så här:



Denna kod kommer att dels printa ut alla kataloger på C: och deras ändringsdatum, men datorn kommer även att "prata" och säga namnet på katalogen och ändringsdatumet. Kanske användbart vad vet jag. Men det är ett exempel på en extension method. Som vanligt kod skickas på begäran.

torsdag 30 augusti 2007

Windows Vista SP1

Det gick snabbare än väntat. Snart kommer ServicePack 1 för Windows Vista. Med tanke på allt snack om den enorma säkerheten i Vista och att det skulle dröja ett tag innan vi såg något SP1 så är jag lite förvånad. Men jag har i tidigare inlägg påpekat om vissa buggar i Vista och det finns fler. Förhoppningsvis blir många av dessa åtgärdade i SP1. En av de tunga bitarna i SP1 verkar vara integration av alla Windows Updates som släpps varje tisdag (patch Tuesday, som det så fint kallas).

En annan bit är alla drivrutiner till olika hårdvaror som äntligen kommit sedan Vista släpptes i November-06.
Microsoft ändrade mycket i drivrutinsmodellen för Windows Vista jämfört med tidigare operativsystem. Detta för att öka på stabiliteten på det nya OS:et. Nackdelen var att alla hårdvarutillverkare fick ett mastodont jobb att skriva om drivrutinerna. Men nu har många kommit ikapp och flera av dessa skall ingå i SP1.

Stöd för nya exFAT filsystemet och SD-DMA för snabbare åtkomst till SecureDigital minnen lovas också. Direct 3D 10.1 (måste fär alla gamers) stöd. Allt som allt så är det ett bra ServicePack som väntas med bättre prestanda, säkerhet och tillgänglighet. Min vilda gissning är att SP1 släpps i samband med Windows Server 2008 i Februari 2008. Läs här för mer info om vad som är tänkt att ingå.

fredag 24 augusti 2007

Ultimata tangentbordet

Jag har gått och väntat på att den här killen ska få igång tillverkningen av det jag tycker är det ultimata tangentbordet. Nu verkar det ha skett, dock i liten skala men ändå.
Den ryska killen Artemy Lebedev och hans företag har gjort det. Art Lebedev är en industridesigner med unika ideer.

Tänk er ett tangentbord där varje tangent är en liten OLED skärm på 1 cm och 48x48 pixlar 65k färger, som kan visa unika bilder och animeringar beroende på vilken applikation man jobbar i. Det går även att programmera tangentbordet efter eget tycke. Borta är problemet med att komma ihåg genvägskombinationerna i de program man jobbar med. Eller alla snabbkommandon i spelen. Nu kan man snabbt se en liten bild eller animering som illustrerar dessa olika kommandon.

Kolla det här tangentbordet och fascineras.
Det får Logitech's G15 att likna stenhuggar stilen.
Men ska ni ha ett får ni skynda er att boka.
I slutet av december kommer nästa produktionsbatch om troligtvis 300 enheter att vara klar för leverans (först till kvarn gäller).

Förresten, glömde nämna priset. Håll i er nu... ca 17000 SEK!! Mer än vad många av era spenderat på sin dator. I Sverige kan ni förhandsboka/beställa hos DataNova. Beställ... den som har flest prylar vinner!

onsdag 22 augusti 2007

ClassMate 2 (Stopwatch)

Denna gång ska jag tjata om vikten av att använda rätt klasser till rätt saker. Vi tar klassen StopWatch, som namnet antyder så är det ett tidtagarur. Bra att använda när man vill klocka delar av sin kod eller funktioner som man tror tar för lång tid. Du hittar StopWatch klassen i System.Diagnostics. Det jag sett att många gör när de vill ta tid i sin kod är att spara undan 2 stycken objekt av typen System.DateTime som innehåller DateTime.Now() och sedan räkna ut resultattiden.
T ex så här:

System.DateTime startTime = System.DateTime.Now;
//Do some time consuming stuff here...
System.DateTime stopTime = System.DateTime.Now;
//Calculate the difference.
System.TimeSpan elapsedTimeSpan = stopTime.Subtract(stopTime);
double elapsedSeconds = elapsedTimeSpan.TotalSeconds;


Varför??? Det finns ju en klass som gör allt det där åt dig. Samma exempel med StopWatch klassen.

Stopwatch objStopWatch = new Stopwatch();
objStopWatch.Start();
//Do some time consuming stuff...
objStopWatch.Stop();
double elapsedSeconds = objStopWatch.Elapsed.TotalSeconds;


Ok! Jag vet vad ni tänker nu. Smartass! Det är ju bara 1 kodrad mindre. Jo!! men det är inte det som är poängen. Det sista exemplet är mycket elegantare och tydligare att läsa och förstå. Man ser direkt vart tidtagningen startar och slutar. Man bör göra allt man kan för att skriva kod som inte är "write only". Nu kanske detta exempel inte var så komplicerat, men en annan kanske viktigare punkt. Det skapas bara 2 objekt instanser för GarbageCollectorn att hålla reda på och rensa upp, istället för 4 objekt som i det första exemplet. Färre objekt instanser = snabbare exekvering av kod.

lördag 18 augusti 2007

Skaffat en Apple MacBook Pro

Många av er som känner mig vet vilken stor uppoffring jag har gjort. Nu har jag bytt ut min IBM Thinkpad mot en fet Apple MacBook Pro! Så nu ska jag bara övertyga mig själv att byta OS och gå över till MacOS X också.

fredag 17 augusti 2007

CD-Skivan 25 år idag.

Jag tycker att vi passar på att säga grattis till CD-skivan som fyller 25 år idag 17/8-2007. Eller kanske grattis till de företag som skapade den första specen.

Philips och Sony samarbetade med att ta fram en spec för ett media att lagra musik digitalt på. LP skivans underbara knaster skulle ersättas av något som inte slets med tiden eller adderade någon karaktär till inspelad musik. 1980 var specen klar och fick namnet ”Red Book”. 1982 pressades den första CD-DA (musik) skivan med Alpsymfonin av Richard Strauss som premiärmusik. Detta media kom sen att användas för lagring av data där ISO-9660 var filsystemet som användes. CD-skivorna utvecklades senare till DVD media allteftersom tekniken tillät oss att krympa våglängden på lasern. Vi datormänniskor tackar Philips och Sony för detta. Det skulle varit extremt jobbigt att installera Windows Vista på 2.6 Gb från

1.44 Mb floppy disketter. Förstår ni den stackars it-kille som skulle få byta diskett minst 1805 gånger vid en installation. För att inte tala om vilken grym låda Vista skulle levereras i. Tänk på den ni!! Så än en gång grattis till Philips och Sony och tack så mycket!!!