I början av månaden skrev jag om ett projekt som då var på experimentstadiet, Page Type Builder. Sedan dess har jag uppdaterat det tre gånger och vi har börjat använda det i ett projekt.
Hittills har jag fått en hel del positiv feedback och många bra idéer om hur det kan vidareutvecklas, både inifrån det projekt där vi använder det och från EPiServer och andra EPiServer partners.
Idag släppte jag version 0.7 vilken är den fjärde versionen (versionsnumreringspolicyn kräver lite arbete). Denna version innehåller klassen PageDataFactory som till viss del erbjuder samma metoder som EPiServers DataFactory. Dock returnerar denna klass PageData objekt med rätt underliggande typ för sidor vars sidtyper är deklarerade i kod. PageDataFactory möjliggör också testning utan att man behöver gå mot DataFactory då denna, eller rättare sagt den klass som delegerar till DataFactory, kan mockas.
Såväl koden som en assembly som är färdig att användas kan laddas ned från projektets site på CodePlex .Mer om vad denna version innehåller finns att läsa på min blog på EPiServer Labs.
Alla som laddar hem projektet, testar det, kollar igenom koden och ger mig feedback får en gratis badtermometer*!
*Gäller så länge lagret räcker.
Sunday, June 28, 2009
Ny version av Page Type Builder som möjliggör enklare testning
Friday, June 26, 2009
Nansen får två nya medarbetare
Det har varit hemligt ett tag men nu är det officiellt. Nansen anställer Emil Cardell som närmast kommer från Valtech och Jenny Ney från Halvarsson & Halvarsson.
Jenny kommer på Nansen att arbeta med kundansvar samt strategi- och affärsutveckling på nätet. I och med en bakgrund från Halvarsson & Halvarsson, OMX, SIX och SEB kommer Jenny även att bli vår expert i frågor som rör Investor Relations.
Välkomna säger vi till Emil och Jenny som kommer att börja under sommaren. I och med detta är vi numera totalt 20 medarbetare på Nansen.
Nansen blir EPiServer Most Valued Professional
Nansen har fått en medarbetare invald i EPiServers allra finaste sällskap. Det är Joel Abramhamsson som sedan en tid har bloggat på EPiServer World som numera kan titulera sig EMVP (EPiServer Most Valued Professional).
Wednesday, June 24, 2009
halva nansen drog till London
jaha. idag så drog halva Nansen till London och @Media 2009.
kvar här på kontoret sitter jag, stekarmackan, PRAOtjejen, jonpet och joepet.
ytterligare några sitter ute hos kund.
men DrKraft, Kalasklas, Lillstrumpa, Kalpau (aka K2), PassJohan, Datapata, Gnagarmartin
Vi hoppas på mycket blogginlägg från London. Helst på okristliga tider. och bilder.
liveblogging emotses med spänning.
hare så kul i London!
Tuesday, June 23, 2009
Disk alignment best practices for SQL Server
There comes a time for most developers when they are in a project without a DBA and they are stuck as the involuntary DBA (Paul Randal has a great blog post about the matter), yes, there are those cases. In fact for most small to mid-sized applications there’s a chance that you will end up in that position.
I was recently given the task to set up a new SQL server instance and decided to get it right from the start. I had earlier listened to several Run As Radio shows where they talked about the importance of disk arrays and the way disks are partitioned. The way the sectors and stripes are configured from start is of major significance to the performance that the SQL server will be able to give. There is no way of using code to get around the fact that the sectors in the spindles are misaligned. This paper written by Jimmy May, Denny Lee explains the basics of disk alignment and gives you some tips of how to set up your system before you start installing.
The whitepaper gives two small equations on how to know if you disks are misaligned, when you use this two equations the result should be an integer, if not, then you have a misaligned drive
Partition_Offset ÷ Stripe_Unit_Size
Stripe_Unit_Size ÷ File_Allocation_Unit_Size
“Of the two, the first is by far the most important for optimal performance. The following demonstrates a common misalignment scenario: Given a starting partition offset for 32,256 bytes (31.5 KB) and stripe unit size of 65,536 bytes (64 KB), the result is 0.4921875. This is not an integer; therefore the offset & strip unit size are not correlated. This is consistent with misalignment.
However, a starting partition offset of 1,048,576 bytes (1 MB) and a stripe unit size of 65,536 bytes produces a result of exactly 8, an exact integer, which is consistent with alignment.”
To get the first part, the offset write this line into the console
wmic partition get BlockSize, StartingOffset, Name, Index
The second part of the equation is harder to get. Windows it self does not provide a good way to get the stripe unit size. To get the actual numbers you'll have to check with your vendor.
On the other hand, the File allocation unit size can be found by typing
fsutil fsinfo ntfsinfo c:You will have to do this for each drive.After you know this then you know if you need to repartition the drive to the recommended cluster size for SQL server of 64KB.
Check out the links and resources in the white paper and Paul Randal’s blog for more information.
Thursday, June 18, 2009
NDC day 1
Wednesday, June 17, 2009
Nansen gör hembesök
I dagarna drar NDC, Norwegian Developers Conference igång i Oslo. Vi kan då inte låta bli att passa på att hälsa på våra vänner i öst. Sen att det blir ett av årets mesta konferenser med årets mest gedigna talarlista, som vi för övrigt tog upp i tidigare poster.
Det här kommer att bli några riktigt hypade dagar, hoppas att alla lever upp till sina rykten.
Monday, June 15, 2009
lite lite folk på kontoret idag
*EKOekokoko*
japp, det är lite småtomt i kodarrummet idag!
många sitter ute hos kund och jobbar och vissa andra är på semester.
jonpet är i staterna och steker medans jonas steker söderut. sen har han mage att twittra upp bilder på det!
lite väl magstarkt med tanke på vilket väder vi andra får stå ut med här i sverige...
Bing vs Google
Techcrunch har en intressant artikel som tar upp sökresultat i sökmotorerna Bing och Google.
Vi har ju alla vant oss vid google och att söka på internet heter numera "att googla". det går knappt att tänka sig internet utan google. har det kommit en ny king of the hill nu?
Microsofts Bing?
"Mycket tveksamt" säger nog de flesta. jaja, men vissa av er kanske kommer ihåg sökmotorn Altavista. den var grym. den var kung. den ägde. ALLA använde altavista (typ 107% av alla webbanvändare). men var finns altavista nu?
kom ihåg det när ni läser artikeln
http://www.techcrunch.com/2009/06/15/the-postman-always-bings-twice
Saturday, June 13, 2009
Är Activator.CreateInstance långsam? - Ett litet experiment
Igår, när jag funderade lite på PageTypeBuilderprojektet behövde jag ett svar på frågan i rubriken, dvs är Activator.CreateInstance långsam. Jag googlade runt och hittade en hel del intressanta artiklar, bland annat denna som är lite off topic men intressant. Till slut bestämde jag mig ändå för att göra ett eget litet experiment.
Jag skapade en ny klass med tio sträng-properties (jag experimenterade med andra varianter också men klassens utformning verkade inte spela någon roll) vilken jag instansierade mellan 1 000 och 10 000 000 gånger, dels genom att använda dess konstruktor och dels genom att använda Activator.CreateInstance. Resultatet visas i tabellen nedan.
Antal instanser | Konstruktor (s) | Per instans (ms) | CreateInstance (s) | Per instans (ms) |
1000 | 0 | 0,00000 | 0,0156 | 0,01560 |
10000 | 0 | 0,00000 | 0,0313 | 0,00313 |
100000 | 0 | 0,00000 | 0,3594 | 0,00359 |
1000000 | 0,0625 | 0,00006 | 3,5468 | 0,00355 |
10000000 | 0,5156 | 0,00005 | 35,4219 | 0,00354 |


Nu var ju detta test långt ifrån vetenskapligt men om man ändå försöker sig på att dra en slutsats så kan vi börja med att konstatera att tidsåtgången för att skapa en instans med Activator.CreateInstance visserligen är avsevärt högre än att använda konstruktorn (vilket man ju i vissa lägen inte kan, exempelvis då vi vet vilken typ vi vill instansiera först vid runtime) men att den samtidigt är försumbar då vi bara vill skapa ett mindre antal objekt.
Friday, June 12, 2009
fan va vi har kul på skeppsbron
ok, det regnar och vädret ut ser ut skit.
men när man har såna här fredagsmöten så är det ändå jävligt kul att leva!
det går bra för nansen och vi har storslagna planer för framtiden och vi dricker corona med lime!
dock så måste jag förbättra mig i virtua tennis. dubbelpisk av johan idag.
och då fick han ändå en AIK-matchtröja av mig imorse!
oförskämt att inte låta mig vinna...
Log4Net - The process cannot access the file because it is being used by another process
Jag har under en lite väl lång tid bankat huvudet i väggen när jag försökt göra det möjligt att hämta hem Log4Net-loggfiler via FTP. Trots att jag hade specat lockingModel value="MinimalLock" i configen för mina appenders fick jag felmeddelandet "The process cannot access the file [sökväg till loggfilen] because it is being used by another process". Inte heller lyckades jag skapa en ASP.NET sida som visade innehållet trots att jag vid öppnande av filen angav FileAccess.Read och FileShare.Read.
Till slut visade det sig att lösningen låg i att i configen av appendersen använda typen "log4net.Appender.RollingFileAppender+MinimalLock" eller "log4net.Appender.FileAppender+MinimalLock" istället för bara "log4net.Appender.RollingFileAppender" respektive "log4net.Appender.FileAppender".
Vet inte om jag ska känna mig dum eller sur med tanke på den enkla lösningen... :)
Thursday, June 4, 2009
Geekmeet Stockholm
Kvällens Geek Meet går i välgörenhetenstecken. Vi på Nansen bestämde oss för ge ett bidrag till Rädda Barnen kvällen till ära.
Mattias på Söderhavet invald i styrelsen för Sveriges designer
Idag är vi lite extra stolta här på Skeppsbron. Mattias CD på vår systerbyrå Söderhavet har blivit invald i styrelsen för Sveriges designer.
Sveriges designer är Sveriges bredaste branschorganisation för designer verksamma inom grafisk-, industri-, interaktions-, mode-, möbel-, produkt- textil-, och webbdesign. Via möten, mingel och Internet driver de viktiga branschfrågor.
Kul, spännande och ett stort grattis till Mattias!
Monday, June 1, 2009
Typad åtkomst av EPiServer Properties och arv mellan sidtyper - Ett experiment
Nu har det varit helg igen och trots att viss återhämtning var nödvändig efter The Copa har jag haft svårt att hålla mig borta från tangentbordet. Resultatet blev ett experiment med att skapa en EPiServer plugin som låter användaren (utvecklaren) definiera sidtyper i kod och tillhörande blogginlägg med nedladdningsbar källkod på EPiServer Labs.
Det här är långt ifrån det första försök som görs att skapa möjlighet till arv mellan sidtyper och typad åtkomst till properties. Exempel på andra är Fredrik Tjärnbergs Page Type Tool och Daniel Rodin och Mikael Nordbergs lösning.
Det intressanta med den lösning jag jobbat på är den helt enkapsulerar sidors egenskaper i objekt utan att egenskaperna för den delen är knepiga att komma åt eller att det krävs svårläst kod för att komma åt dem, något som till stor del möjliggjorts genom att EPiServer har lagt till generiska metoder för hämtning av PageData-objekt i version R2 SP2 RC av EPiServer CMS som nyligen släpptes.