Något som jag måste bli bättre på är att markera oanvända kodstycken som Obsolete. Det innebär alltså att klassen helst inte ska användas längre och har tagit ett steg vidare mot avveckling. Man kan skriva ett meddelande också som kommer upp i kompilern som påminnelse för att man ska ta bort dem.
Ja då kör vi igång igen och nu på ny bloggmotor och ny fin design. Borde skriva ett långt och bra inlägg om bloggens utveckling hittills och allt det där, men orkar inte nu. Det har vart en lång natt med att brottas med de sista detaljerna inför lanseringen.
Vill passa på att tacka alla som vart inblandade i utveckligen av bloggmotorn. Erik, Johan (Har gjort designen ni ser nu), Glenn, Carl och Andreas. Kul att man har några galningar med sig som fortfarande känner för att bygga sin egen bloggmotor i dessa dagar då Wordpress regerar. Om ni är intresserade att använda bloggmotorn så ber vi er att kontakta oss genom Nodestar, där vi tar emot beställningar. Våren börjar bli fullbokad med för oss men vi kanske vi kan klämma in något projekt till om du är riktigt sugen.
För bloggen Code Odyssey så kommer vi fortsätta i samma spår och skriva om allt möjligt som är relaterat till webbutveckling, användarvänlighet, design, css, asp.net, c#, skriptbibliotek som jQuery med mera.
Det kommer nog även bli en hel del ASP.NET MVC också eftersom vi har jobbat med den plattformen under cirka sex månader och börjar få grepp på den. Den nya bloggmotorn är byggd på detta ramverk och det har varit en fröjd. Äntligen har vi användarvänliga url:er, snygg html-kod utan massa viewstate-bös och konstiga server-id. Bara ren html-kärlek.
Bloggen tänker vi förbättra successivt och lägga på nya funktioner. Bland annat göra om etiketterna till ett moln, lägga till Open-ID för kommentarerna, formattera kodexempel med färger för syntax och andra finesser. Givetvis kommer vi blogga om det under tiden så ni också kan få hjälp med hur man gör.
Så nu får det räcka på detta inlägget. Måste bara se hur RSS:en blir när jag postar. Den finns förresten på en ny adress, så prenumenera gärna på den. Den gamla ska fortfarande fungera.
Kommentera gärna så vi ser hur det fungerar och kom med input om vad ni tycker om förändringarna.
Här på Code Odyssey har det inte hänt så mycket den senaste tiden p g a av några olika skäl. Framförall så har min egenutvecklade bloggmotor blivit något föråldrad och det är därför inte så kul att blogga här som det borde vara. Helt galet att den fortfarande körs på en Access-databas för att nämna en teknisk detalj.
Men nu är det dags att göra något åt detta och jag kommer under början av år 2009 försöka att importera all data till ett nyare system som vi har jobbat med. Vi kör en första version av detta på Nodestar om någon vill ha en förhandsgranskning.
Vi kommer även att använda det nya ramverket ASP.NET MVC som enligt Scott Guthrie kommer att släppas som release candidate i januari. Fördelarna är många och jag gillar verkligen att man får total kontroll över hur html rendereras. En bra routingmodell finnns inbyggd och äntligen kommer det bli användarvänliga url:er. Något jag viljat ha länge.
Vi har även fått en sponsringspartner som kommer stå för driften av bloggen, så det är riktigt roligt. Mer info om detta längre fram.
Något av det värsta som finns är att debugga Ajax-funktioner. AJAX Control Toolkit kan slänga ur sig en del väldigt konstiga felmeddelanden och de är inte lätta att lösa. Tänkte nu börjar dokumentera dem innan jag blir allt för galen.
Nyss fick jag detta i IE7:
Error: Sys.ArgumentNullException: Value cannot be null. Parameter name: element
På Firefox visas ett ändå mer förbryllande meddelande:
Sys.ArgumentNullException: Value cannot be null. Parameter name: element Sys$CultureInfo$_getAbbrMonthIndex("")ScriptRe...=15a6fa0c (line 6391) ScriptResource.axd?d=Mp3wOTv2U48tSwOzRbx9I5sb41bR8P9ogeRdPKRzZ5RBTNpXVRJNcEL9psPGosr4vyEbYVFfS05BUAtE2hlW2Q2&t=3004b210()()ScriptRe...=3004b210 (line 499) [Break on this error] this._upperAbbrMonths = this...s.dateTimeFormat.AbbreviatedMonthNames);
Ja även fast det är spännande att jobba med nya databas-tekniker som LinqToSQL och Subsonic, så kan det vara bra att kunna lite hederliga DataSet-operationer.
Just nu så hade jag ett problem med Subsonics Paging-funktioner, där en Where-sats inte kom med. Jag fick dubbla poster hur jag än gjorde. Då kom jag på att jag kunde filtrera DataSet:et i efterhand och skrev följande lilla funktion.
Anropar den sedan på följande vis. I detta fallet ville jag ha ut texter på en visst språk, och inte alla språk i databas-tabellen som Subsonic envisade sig med att returnera.
Tänkte visa ett exempel på hur man kan byta ut parametrar i resursfiler. I mitt exempel hämtar jag ut en text för copyright-meddelande och byter ut en parameter {0} med string.format mot aktuellt år.
I resursfilern har jag en nyckel som heter Copyright och lägger in följande sträng.
Som jag har letat efter inställningen för var man väljer vilken kodning ens filer ska sparas med i Visual Studio. Började tvivla på att det var möjligt att välja över huvud taget, men idag hittade jag äntligen instruktioner för hur man gör:
Välj "Spara fil som", och klicka sen på den lilla fliken som ni ser markerad på bilden här ovan.
Blev ställd inför uppgiften att konfigurera inloggningar till SQL Server 2008. Som tur va hittade jag en bra guide där författandet illustreras med screenshots. Hade inte klarat det utan den.
Lärde mig just hur man gör så att nyckleln på en tabell i en SQL Server databas börjar på ett visst nummer. Bra om man gjort massa tester och vill återställa dem innan man börjar lägga in riktiga data.
-- Reseed identity on [dbo].[Products] DBCC CHECKIDENT('[dbo].[Products]', RESEED, 0) GO
Ännu bättre är ju ifall man inte lägger in data alls, utan istället använder transaktioner för att rulla tillbaks testdata. Läs mer hos Johan Lindfors, teknisk chef på Microsoft, om detta.