Alla kategorier

Inlägg i “Systemutveckling”

RavenDB

2013-04-23
Här om veckan var jag på en kurs i RavenDB med Ayende Rahien Jag är en ganska inbiten relationsdatabasfanatiker så hela kursen blev ungefär som om man jobbat hela livet med filer och sedan går en kurs i MsSql Server. Det var ganska överväldigande och jag hade inget aktuellt kundcase att hänga upp kunskaperna på. Som någon slags befästelse av mina nyvunna kunskaper ska jag hålla ett föredrag om RavenDB på jobbet i kväll.

Missriktad prestandaoptimering

2012-12-20
Jag hittade lite kod ute hos kunden som jag inte kan låta bli att kommentera. Fältet activated är en bit i databasen och koden kommer att köras ganska ofta. Koden ligger i en CLR-lagrad procedur, men kommentarerna hade gällt även om det var en fristående process. Hittad kod: queryStatementSB.Append("select "); queryStatementSB.Append("value "); queryStatementSB.Append("from TheTable "); queryStatementSB.Append("where activated='True' AND tag='"); queryStatementSB.Append(paramName); queryStatementSB.Append("'"); Mitt förslag: string sql = "select value from TheTable where activated=1 AND tag=@paramName";

Vad är en server?

2010-10-14
Det är många nya ord att lära sig om man vill hålla på med programmering i allmänhet och webbutveckling i synnerhet. Ordet server används flitigt och kan betyda lite olika saker beroende på sammanhang. Dels kan man mena en fysiskt (eller virtuell) dator som står någonstans och svarar på tilltal, oftast i en datorhall hos något företag. Dels kan man mena ett program som körs hela tiden på en dator och svarar på olika frågor från andra datorprogram.

Hur fungerar en webbsida?

2010-10-14
Det går så klart inte att svara på hur alla webbsidor fungerar, men i stora drag hamnar sidorna på din skärm på nästan samma sätt oavsett vilken webbsida du besöker. Eftersom jag vill introducera en massa koncept för den som inte har koll på detta får ni jättegärna ställa frågor med kommentarsfunktionen längst ner på sidan. Ange om ni vill vara anonyma så publicerar jag inte er kommentar. (Men ska självfallet försöka svara på frågan.

Data i .Net på olika sätt

2010-05-25
I DotnetRocks #553 berättade Chris Sells att han skrivit om koden för att hantera data i Nerddinner med de flesta sätt att komma åt data som finns i .Net. I ett svagt ögonblick lovade jag någon på jobbet att skriva ‘HelloWorld’ med Microsofts olika metoder för dataaccess så det var klockrent att någon med koll på läget redan gjort det. Jag lyckades inte googla mig fram till koden så jag epostade Chris och frågade om den fanns tillgänglig.

Varför ska man inte använda Access till webben?

2010-05-19
Microsoft Access är gjort för små applikationer som bör köras inom/på en dator. Redan innan internet och webben exploderade var det vanligt att man använde Microsoft Access för att bygga applikationer som skulle användas av flera personer samtidigt. Det tydliggjordes ganska snart att Access inte riktigt hängde med i svängarna när det blev mer än ungefär fem användare. Lite på skämt brukade vi säga att det blev för många redan vid två användare.

Varför ska man inte använda Access till webben?

2010-05-19
Microsoft Access är gjort för små applikationer som bör köras inom/på en dator. Redan innan internet och webben exploderade var det vanligt att man använde Microsoft Access för att bygga applikationer som skulle användas av flera personer samtidigt. Det tydliggjordes ganska snart att Access inte riktigt hängde med i svängarna när det blev mer än ungefär fem användare. Lite på skämt brukade vi säga att det blev för många redan vid två användare.

Vad är null?

2010-05-17
Null betyder att det inte finns något definierat värde. När man skapar en kolumn i en tabell i sin databas anger man, förutom datatyp, huruvida kolumnen får vara null eller inte. Ett fält på en rad kommer att vara null om man inte talat om att det ska vara något annat. Antingen kan man ange ett standardvärde när man skapar tabellen, eller så får man ange ett värde när man lägger till en ny rad, eller så kan man uppdatera raden senare.

Vad är en datatyp?

2010-05-15
När man sparat information om till exempel en person i en tabell delar man upp informationen i kolumner. För information om en person kan de olika kolumnerna till exempel vara; Namn, Födelseår, Telefonnummer och Kön. För att databashanteraren på bästa sätt ska kunna lagra informationen talar man om vilken datatyp respektive kolumn har. Datatypen talar om huruvida kolumnen innehåller ett heltal, en text, ett datum och så vidare. Alla databashanterare erbjuder olika datatyper och har ibland olika namn på samma datatyper.

Vad är en relationsdatabas?

2010-05-13
Tidigare beskrev jag generellt vad en databas är. I en relationsdatabas sparar man listor med information. Dessa listor kallas tabeller och kan referera till varandra på lite olika sätt. Referenserna mellan tabellerna kallas relationer, därav namnet; relationsdatabaser. Tabeller, eller snarare rader i tabeller, kan referera till varandra på tre olika sätt: En till många Många till många En till en Det databashanteraren hjälper till med, om man definierat tabellerna ordentligt, är att säkerställa att dessa relationer efterlevs.

Vad är en databas?

2010-05-12
En databas är en organiserad samling relaterad information. …med den definitionen är en hylla i ett bibliotek en databas. I datorvärlden finns det några olika typer av databaser. Alla har det gemensamt att de underlättar för någon att spara, hitta och behandla information. Det finns några olika sätt att organisera eller klassificera databaser: Man brukar skilja på om databasen ‘körs’ på en egen dator, eller om det är ett program man kan köra på sin egen dator.

Bristande versionshantering

2009-05-31
En anonymiserad bekant till mig ville för ett tag sedan ha hjälp att felsöka en asp-sida som vägrade att fungera. Jag körde koden så gott jag kunde på min dator och konstaterade att det borde fungera på hennes server. Ett par timmars mailväxling senare bestod asp-filen endast av html-kod, men den visades fortfarande fel från produktionsservern. Efter ett par timmars tystnad kom svaret: Jag har en praktikant här, vi sitter och redigerar samma fil och ftp:ar upp den till servern.

Kan inte spara tabell i SQL Server 2008

2009-04-03
Om du inte kan spara en tabellförändring när du använder klientverktygen från SQL Server 2008 beror det förmodligen på att du inte slagit på möjligheten att spara en tabell som måste droppas och byggas om. Ändra inställningarna under Tools / Options / Designers / Tableand Database Designers

Arbeta offline med Team Foundation Server

2009-03-21
Om du är offline och arbetar med ett projekt som ligger i Team Foundation Server är det bara att ta bort skrivskyddet på filerna du vill redigera. Problemet är att få servern att förstå vad som hänt när man kommer tillbaka till kontoret. Här kommer Team Foundation Server Power Tools till hjälp. Navigera till ditt workspace och kör: tfpt.exe online Nu kommer tfpt att skapa ett change set av alla filer där skrivskyddet tagits bort.

Migrera inte historiken till Subversion

2009-02-22
Alla gånger jag varit med i projekt där man haft för avsikt att byta bort Source Safe har det varit långa diskussioner om hur man ska hantera historiken. Den tunga argumentationen brukar komma från de som absolut måste kunna kontrollera skillnader mellan gamla versioner när de felsöker applikationen. I alla de fall där man hårdnackat velat behålla historiken har man saknat enhetstester, release-hantering och ordentliga byggrutiner. Min uppfattning är att man borde se till att få ovan nämnda kodhygienrutiner på plats så fort som möjligt.

En dålig recension

2009-02-06
Efterdyningarna av mitt recensionsförsök av UNI_BAS blev inte riktigt vad jag tänkt mig. Jag installerade UNI_BAS och blev så irriterad på de tekniska bristerna att jag gav upp innan jag hunnit utföra något ekonomiarbete i programmet. Strax därefter ringde en engagerad representant från Unicell och pratade med mig i nästan en timme. Jag lovade honom att se förbi de tekniska ‘petitesserna’ och verkligen försöka använda programmet. Innan jag hunnit skriva en ny recension hann någon (som jag förmodar jobbar hos Unicell) skriva en lång kommentar.

Lite PHP

2008-12-25
På fritiden gör jag lite saker med PHP tex; hittatiden.nu och komdit.nu. Eftersom jag egentligen inte har nå’n koll på PHP blev jag lite glad när någon samlat ihop 25 resurser som lär ut PHP. Det blir en blogpostning för jag kommer förmodligen tappa bort den om jag lägger den i favoriter i webläsaren.

Har Microsoft misslyckats med marknadsföringen av WPF?

2008-05-21
I ett par artiklar reflekterar Johan Lindfors över hur dålig genomslagskraft WPF har haft bland utvecklarna. Själv har jag haft WPF under någorlunda uppsikt de senaste åren, men inte kommit på något riktigt bra argument till att använda det i stället för WinForms för vanliga slagskeppsgrå affärsapplikationer. En turboladdad gridkontroll eller ett snyggt och smidigt fliksystem skulle nog kunna locka över mig. Jag har i alla fall bestämt mig för att byta GUI på ett av mina gratisprogram så får vi se om jag faller för WPF under tiden.

Läskigt

2008-01-05
Intrånget hos Aftonbladet som bla. Per och Resumé väcker inte bara oroskänslor om huruvida tidningar lyckas upprätthålla källskyddet. Det påvisar tydligt hur viktigt det är att inte använda samma lösenord för alla tjänster man behöver logga in på. En stor lucka är ju i och för sig att man oftast kan få nya inloggningsuppgifter epostade till sig. Så om någon kommer åt din epost spelar det ingen roll hur många lösenord du har på andra ställen.

VS 2008 finns på MSDN nu.

2007-11-19
Det börjar bloggas om att det går att tanka ner Visual Studio 2008 från MSDN nu. Med tanke på hur svårt det är att komma in på downloads-sidan stämmer nog ryktena… …men jag hittar den inte ännu. Betan är däremot bortplockad. De håller säkert på och propagerar ut releasen till alla servrar.

Förkunskapskrav

2007-11-14
Undra om det är jag eller personen som inte förstår att skärmen är avstängd som har fel nivå på förkunskaperna för kursen jag är på idag? Det är en tredagarskurs som är intro till den tvådagarskurs som jag egentligen ville gå. Sorgligt nog blev de sista två dagarna inställda. Jag har inte lärt mig mycket nytt men det har varit nyttigt att pilla på en massa saker jag bara har teoretiska kunskaper om.

MSDN i Sverige och gratis support

2007-10-31
I dag lyssnade jag på MSDN Radio där de pushade lite för svenska MSDN och för att de med MSDN Subscriptions borde bli bättre på att använda de gratis supportärenden som ingår i abonnemanget. Jag har kontaktat supporten tre gånger och har ungefär samma intryck av alla försöken: Det tar för lång tid att komma i kontakt med någon som kan hjälpa till. Alla mina försök har berott på buggar i .

Kontrollera dina automatiska byggen

2007-06-19
Försäkra dig om att dina automatiska, dagliga och kontinuerliga, byggen verkligen fungerar.  Det är precis som att kontrollera att dina backuprutiner fungerar. Du vill inte komma på att någon av dem slutat fungera när du verkligen behöver dem.  I helgen flyttades vår Team Foundation Server och allting såg ut att fungera som det skulle på måndagsmorgonen. Det var inga problem alls att ansluta till den nya servern och Cruise Controls lilla ikon sken betryggande grönt.

TFS:All files are up to date.

2007-06-07
Om du gör: tf.exe get filename.ext …och får All files are up to date. till svar, kan det bero på att du står i en katalog som inte är ordentligt kopplad till ditt aktuella Team Foundation Server-projekt. Om ditt ‘serverträd’ ser ut så här: ProjectName Source ClientCode ... ServerCode ... …och dina lokala kataloger så här: ProjectName Source ClientCode ... ServerCode ... TemporarySource ClientCode ... ServerCode ...

Microsoft vs. TestDriven.NET

2007-06-01
Jag har ändrat uppfattning, men orkar inte skriva om det på svenska. Microsoft försöker få Jamie Cansdale att ta bort funktionalitet från TestDriven.NET. Jag tycker Microsoft gör riktigt fel. Kommer någon verkligen köpa Visual Studio för att de vill få TestDriven att fungera? De företag som är så snåla att de använder gratisversionerna i verksamheten kommer inte betala ändå. Det är fortfarande möjligt att köra sina unit-tester utan för Visual Studio så TestDriven.

Microsoft vs. TestDriven.NET

2007-06-01
Jag har ändrat uppfattning, men orkar inte skriva om det på svenska. Microsoft försöker få Jamie Cansdale att ta bort funktionalitet från TestDriven.NET. Jag tycker Microsoft gör riktigt fel. Kommer någon verkligen köpa Visual Studio för att de vill få TestDriven att fungera? De företag som är så snåla att de använder gratisversionerna i verksamheten kommer inte betala ändå. Det är fortfarande möjligt att köra sina unit-tester utan för Visual Studio så TestDriven.

Developer Summit, Arkitektur och affärsnytta

2007-05-31
Jag var på Developer Summit förra veckan och gick mest på arkitekturspåret. Ett genomgående tema var att vi (systemutvecklare och arkitekter) måste närma oss verksamheten. Ett annat tema var att man måste inse att det tas en hel del arkitekturbeslut på utvecklarnivå. Det första temat av dessa är en sak som jag själv tagit för givet, men jag tror det beror på att jag jobbade flera år på en ekonomiavdelning innan jag blev systemutvecklare.

Kontinuerlig integration i stället för möten.

2007-05-30
Jag har ganska ofta hamnat i diskussioner om hur vi ska lösa ett spcifikt problem och vad användaren egentligen vill lösa med sin ändringsbegäran. Det är inte ovanligt att det hade gått fortare att implemenera alla möjliga lösningar och låta användaren välja vilken som är rätt än att diskutera kring det. Om vi har en fungerande kontinuerlig integration som genererar något som går att leverera skulle vi i många av dessa fall kunna implementera flera olika lösningar och låta kunden avgöra vilken lösning som ska användas.

Kontinuerlig integration och försäljning

2007-05-26
Jag har ofta hamnat i situationer där säljare lovat funktionalitet till existerande och presumtiva kunder. Funktionalitet som inte funnits och som ofta krävt omfattande övertidsarbete och fulhackande för att få klar. När utvecklare, mer eller mindre högljutt, protesterar mot detta förfarande brukar det antingen skrattas bort eller förklaras med vi inte förstår säljprocessen. Väldigt ofta hinner man inte heller testa dessa framstressade funktioner vilket hur som helst leder till att mottagaren blir missnöjd med leveransen.

Bortglömd information

2007-05-21
Jag gjorde nyligen ett gästspel hos en gammal klient och fick en handfull kritiska fel i knät. Det visade sig sedan att de berodde på att ingen läst det sista jag skrev när jag var där för ett år sedan. Som jag skrev här: It is not enough to use the wiki to cross reference all the information about the current state, we also need to write down the discussions and misshaps that lead here.

Spara inte lösenord i databasen.

2007-05-20
Jag är absolut ingen säkerhetsguru, men jag börjar nästan gråta varje gång jag klickar på ‘glömt lösenordet’ på en websida och får ett epost med mitt gamla lösenord som svar. Hash-koda användarens lösenord tillsammans med ett slumpmässigt värde, som kallas salt. Spara hash-koden och saltet i databasen. När sedan användaren försöker logga in hash-kodar du det inskickade lösenordet tillsammans med saltet och jämför med den sparade hash-koden. På så sätt behöver du inte oroa dig för att alla lösenord kommer på vift om din websida blir hackad.

Installerbara dagliga byggen

2007-05-14
(adsbygoogle = window.adsbygoogle || []).push({}); När man gör dagliga byggen, vilket jag tycker är ett av baskraven för kvalitativ systemutveckling, bör man se till att bygget är så komplett och lätthittat att test och sälj själva kan installera den version de vill ha för stunden. Det är en vedertagen sanning att det blir dyrare och dyrare att rätta fel ju längre man väntar. Om test kan verifiera en felrättning dagen efter den checkats in i källkodshanteraren i stället för att vänta till nästa sanktionerade release minskas både ledtider och kostnader.

Flytta en TFS-databas

2007-05-11
Jag lade upp prenumerationer på en massa TFS-relaterade RSS-flöden idag så det blir lite ‘slö’-länkande. Jag skull lika gärna kunna använda del.icio.us, men det är säkert nå’n mer än jag som är intresserad av TFS[. Hur som helst: här är en guide för att flytta på en TFS-databas. (adsbygoogle = window.adsbygoogle || []).push({});

Systemutveckling utan drivkraft.

2007-05-03
Det är intressant att se hur systemutvecklare påverkas av ett projekts upplevda marknadsvärde och internpolitiska status. När man drar igång projekt är folk i allmänhet öppna för nya idéer och de flesta inblandade tar egna initiativ för att föra projektet framåt. En riktning som för en individ inte alltid är samma som för gruppen, men det rör i alla fall på sig. När projektet rullat på ett tag och man inte lyckats leverera som planerat, kanske man bestämmer sig för att bygga om stora delar av progammet, dels för att visa marknaden att man kan anpassa sig och dels för att få fart på personalen igen.

Hantera flera AssemblyInfo.cs i Visual Studio

2007-05-02
När man har ‘solutions’ med flera projekt i Visual Studio får man ibland problem med att informationen i AssemblyInfo.cs (eller .vb) är nästan identisk i de olika projekten. Har man riktigt många projekt blir det jobbigt att gå in och ändra tex versionnummer vid en release. Här är ett tips på hur man kan använda länkade filer i projekten så att man kan ha en central fil med all gemensam information och en per projekt som bara innehåller de som skiljer mellan projekten.

Kulturneutrala satellitassemblies

2007-04-11
Jag håller på och smetar på lokalisering på en existerande produkt och behövde ett sätt att ha kulturneutrala resurser i satellitassemblies. Jag kunde inte använda en inbäddad resursfil pga att jag extraherar data från det kompilerade huvudassembliet för att använda i resursen. Lösningen var att använda assemblyattributet: NeutralResourcesLanguageAttribute för att indikera vilken kultur som ska anses vara standardkultur och enumen UltimateResourceFallbackLocation för att tala om att den ska falla tillbaka på ett satellitassembly om inget annat hittas.

Synlighet (discoverability och findability)

2007-04-10
Jag har hört, läst och tänkt en del på synlighet (discoverability och findability; Möjligheten att hitta och förstå funktioner i programvara.) på senare tid. Den här artikeln summerar det hela ganska bra. han diskuterar en del kring de begränsningar i användarnas valfrihet som uppstår när man prioriterar olika funktioner och tar grundläggande beslut åt användarna. Tex att göra ratten i en bil lättare att hitta än säkringsdosan. Jag tror dessa beslut inte bara har med användbarhet att göra, de är i själva verket vad som skiljer dig från dina konkurrenter.

Raderade filer under en ‘label’

2007-03-25
Enligt en artikel här från utvecklarteamet så ingår inte raderade filer i en label. Det kan få lite trista konsekvenser när man tokstädar i projektet (som vi gör nu) och sedan vill gå tillbaka till en label för att kolla hur det såg ut. Tur att man kan hämta mha klockslag i stället.