Bloggbyte genomfört!
Dataspel

- Grafiken får dig att börja
- Kontrollen får dig att stanna
- Musiken får dig att komma tillbaka
Läs även andra bloggares åsikter om dataspel, reflektion
Boktips.net, wow

Det verkar vara ett samarbete mellan sveriges folkbibliotek, där bibliotekarier tipsar om och recenserar böcker de läst. (och de lär ju ha läst en del med sin femåriga litteraturutbildning.. för att inte tala om alla sega dagar när det inte finns något att göra på bibblan!)
Läs även andra bloggares åsikter om böcker, bibliotek, boktips
Modern hyrfilm via nätet

Intressant att DN tipsar om piratebay som den mest användarvänliga alternativ :)
Läs även andra bloggares åsikter om film, hyrfilm, video, dvd
Program för att lösa Sudoku

- Upprepa följande, så länge det finns någon tom ruta i pusslet:
- Leta upp en ruta, som har precis en "kandidatsiffra"
- Fyll i rutan med kandidaten
I Pseudokod skulle de kunna se ut något sånt här:
sudoku = GetInputSudoku()
GreedySolver(sudoku)
print sudoku
function GreedySolver(sudoku)
__do
____pos = FindCandidatePos(sudoku)
____if pos!=null
______sudoku.Set(pos, sudoku.FindCandidates(pos)[0])
__while pos!=null
function FindCadidatePos(sudoku)
__foreach(pos in sudoku)
____cands = sudoku.FindCandidates(pos)
____if(cands.Count == 1)
______return pos
__return null
Läs även andra bloggares åsikter om programmering, sudoku, tdd
TV3, var är Star Wars 3?

Så var tog episod 3 vägen??
Är det någon som vet?
Asstörigt.
Andra bloggar om starwars, tv3
Regex i C#

string input = "olof";Observera att match betyder "återfinns någonstans i strängen".
string pattern = "of";
if(Regex.IsMatch(input, pattern))
MessageBox.Show("Found match!");
Läs även andra bloggares åsikter om regex, csharp, programmering, tips
Stora projekt, en reflektion

Så sant, så sant ...
Testa vad?

Läs även andra bloggares åsikter om tdd, programmering, rant
Testning av geometriska konstruktioner

I alla fall; eftersom jag är den ende utvecklaren med TDD-inriktning på jobbet, är koden ibland svår att testa.
I detta fall var det jobbigt att kontrollera om genererad geometri stämde överrens med förväntningar eftersom inte en enda av c:a 15 klasser implementerade Equals() - och referenslikhet räcker inte långt då man gör enhetstester av instanser som är lika i matematisk mening (samma "värde").
- Alternativ ett: implementera Equals() och GetHashCode() på alla klasser. Huvudvärk! Av flera skäl:
- Det är bökigt att få rätt på Equals() i C# (det finns hur många trådar som helst som behandlar detta på nätet)
- Det stökar ned de i övrigt ganska atomära klasserna jag ville testa
- Övriga utvecklare hade inte uppskattat att jag lagt till detta "aber" i klasserna
- Det hade påtvingat en "implicit policy" vid tilläggande av fler, mer sammansatta klasser. Att implementera Equals() för dem är helt onödigt för slutprodukten.
- Alternativ två, som jag var rädd att välja först, verkar efter dessa två timmars huvudbry inte så dumt längre. Det är att helt enkelt bygga specialtester för "de vanligaste klasserna" -- det är trots allt det enda jag kan testa i dagsläget (framtida klasser är svåra att testa!).
Läxa att lära:
Equals() är inte nödvändig för tillstånds-testning!
Läs även andra bloggares åsikter om tdd, geometri, testning, programmering
Hållbar utveckling

I alla fall; hållbar utveckling är ett bra begrepp rent mjukvarumässigt också! Mjukvarautveckling mha. TDD är hållbar mjukvaruutveckling.
Att designa för testbarhet

Håller på att läsa "Working Effectively with Legacy Code" av Michael Feathers, det är från den följande insikt bubblat upp:
1. Varje klass ska gå att instansiera utan beroenden, varken interna (att den instansierar/anropar metoder i sina metoder) eller externa (beroende på fil / databas etc.).
2. Om en klass behöver externa / interna beroenden, ska dessa skickas med explicit i konstruktorn
Detta gör enhetstestning av klassen möjlig. Och därmed ökar kvalitén på klassen. Och den här stackars kodaren mår bättre :)
Om man måste använda sig av GUI/Databas och annat grejsimojs, kan man försöka bryta ut "logik" ur den koden till "Santas Little Helper"-klasser som man kan testa istället.
Läs även andra bloggares åsikter om tdd, mjukvaruutveckling, testning, programmering
Böcker jag vill läsa och/eller ha i hyllan
Jade Warrior
Jaha, så har jag sett Jade Warrior, det finsk-kinesiska kampsportseposet.
Har radas den ena sago/epos-klyschan efter den andra. Tyvärr identifierar jag mig inte med någon av rollfigurerna, så de blir bara dockor i ett animerat skyltfönster för mig, hur snyggt det än ser ut.
Sedan blir trovärdigheten låg när man försöker lura i mig att kineser på något sätt härstammar eller har något slags mystiska förkinesiska band till Finland. Finnar som talar kinesiska må väl existera, svårare att tro på är kineser som talar finska (på medeltiden typ), men allra svårast har jag för hammarsvingande finnar som slåss som kineser.
Ledsen Finland, men det här kan kineserna bättre än er, låt dem göra det.

Har radas den ena sago/epos-klyschan efter den andra. Tyvärr identifierar jag mig inte med någon av rollfigurerna, så de blir bara dockor i ett animerat skyltfönster för mig, hur snyggt det än ser ut.
Sedan blir trovärdigheten låg när man försöker lura i mig att kineser på något sätt härstammar eller har något slags mystiska förkinesiska band till Finland. Finnar som talar kinesiska må väl existera, svårare att tro på är kineser som talar finska (på medeltiden typ), men allra svårast har jag för hammarsvingande finnar som slåss som kineser.
Ledsen Finland, men det här kan kineserna bättre än er, låt dem göra det.

Flytta källkodsfiler i SVN+VisualStudio-miljö


Problemet är att Visual Studio's projektfiler innehåller sökvägarna till källkodsfilerna. Alternativet, som storkonkurrenten Eclipse valt, är att det är en 1-1 mappning mellan filsystem och projekt.
Detta gör att det blir hårigt att flytta en källkodsfil som finns med i ett projekt. Här är min nuvarande "algoritm", om någon har ännu smidigare sätt, hojta till!
Jag förutsätter att man vill flytta en fil in i en ny projekt-mapp för att strukturera upp sitt projekt.
I projektroten: A.cs
Vill ha den i: rot\NyMapp\A.cs
- Skapa NyMapp mha. Visual Studio högerklick på projektet
- Stäng av Visual Studio
- Högerklicks-dra A.cs till NyMapp, välj "SVN Move versionen files here" på kontextmenyn
- Starta Visual Studio
- Högerklicka på NyMapp och välj "Add->Existing Item", välj A.cs
Läs även andra bloggares åsikter om svn, tips, visualstudio