MSDN Live Sundsvall 28 maj 2009

I slutet av maj så var jag på årets MDSN Live på Åkroken i Sundsvall. Talare var “Microsoft-evangelisterna” Dag König och Robert Folkesson. Man informerade bland annat om att man kan hitta många filmer (på svenska) om den senaste MS-tekniken på Channel9 MSDN Sweden. Även att man då och då kör MSDN Radio som är radio-sessioner där man snackar om allt mellan himmel och .NET.

msdnlive

Dagen fortsatte sedan med en kort genomgång av historiken bakom .NET Framework 1-2-3 där man visade generiska typer och metoder, delegater, WCF, WF och WPF. Med grunden lagd så fortsatte dagen med en titt på det framtida .NET Framework 4.0 och Visual Studio 2010 som fortfarande är i beta-stadiet.

I .NET Framework så kommer “Parallel Extensions” att ingå och det hjälper oss att programmera flertrådat. Introduktion till Parallel Extensions

Dynamic Language Runtime” (DLR) är ett stöd för dynamiska språk så att dessa går att köras på CLR’en.

Utöver detta så gick grabbarna genom nyheterna i C# version 4 med nyheter som dynamiska typer (dynamic).

I sista sessionen före lunch så gick de igenom hur man använder Visual Studio i kombination med Team Foundation Server och Visual Studio Team System. Detta var innehållet i förmiddagspasset som jag tyckte var väldigt intressant. Jag hade hört det mesta sedan tidigare då Johan Lindfors var på plats för Swenug, men det var ändå många nya bitar som gjorde det “spännande”.

Eftermiddagen började med en grundgenomgång av XAML och varför Microsoft satsar stort på ett deklarativt språk. Detta används inte bara för gränssnitt i rika klienter, utan även i tekniker som Windows Workflow och WCF. Ett flertal exempel på detta gjordes i VS och Expression Blend.

Efter, det för mig ganska tråkiga, avsnittet om XAML (svammel *smile* ) så var det en genomgång av ASP.NET MVC som är ett alternativ till webforms. Webforms är som ni vet en utveckling eller en följd av winforms där man på något sätt ska ha samma arbetssätt då man skapar applikationer vare sig det är på desktopen eller på webben.

I MVC ramverket så har du full kontroll på allt som händer och kan utveckla dina webbsidor mer “rent”. För mig som har php-bakgrund där du måste skapa allt för hand (ja nästan allt) så känns detta helt rätt. Personligen så tycker jag att detta är det bästa som MS kommit ut med då det gäller webbutveckling. Jag har aldrig riktigt gillat tråcklandet med webforms,
att man inte har någon kontroll på den html som skapas och viewstate och annat “störande”.

Dagens sista presentation var om Silverlight 3 och .NET RIA Services. Om jag ska vara ärlig så var inte detta så intressant så jag har inte så mkt att säga om det…

Sammanfattningsvis så var det en intressant dag. Det är alltid intressant att höra om de senaste nyheterna från Microsoft.

Läsa från och skriva till nätverksmappar i .NET

Dagens lilla problem var hur man kan skriva och läsa filer från en utdelad mapp på nätverket från ett .NET program. För att komplicera det hela så har användaren som kör programmet inga rättigheter på nätverksmappen. Dessutom så är inte nätverks-sharen “uppmappad” på datorn (av någon användare).

Som vanligt så fanns det ett antal sätt att göra det på där vissa var krångligare än andra. Förhandskravet på detta är att man har en användare som har rättigheter att skriva/läsa på nätverksmappen.

Alternativen var följande:

1) Exekvera ett bat-script där man använder “net use” och copy för att flytta över filen.

2) Impersonera (vad blir detta på svenska?) en användare som har rättigheter på nätverksmappen. Läs mer om detta här.

3) Använda sig av Windows Networking functions (WIN32 API)

För mig så passade alternativ 3 bäst eftersom jag tyckte att de andra verkade mer eller mindre krångliga. För ändamålet så “hittade” jag en färdig klass som fungerade på första försöket. Klassen hittar ni på Accessing Shared Folders in ASP.NET

Annan intressant läsning på samma tema:
Hur man skapar en utdelad mapp med .NET

“Operation aborted” i Internet Explorer och javascript

Det fel som orsakar att användaren får upp meddelandet “operation aborted” i Internet Explorer i kombination med javascript tog mig en lång stund att klura ut. Detta fel har gäckat mig i flera månader utan att jag lyckats lösa det. Tydligen så klarar inte IE att uppdatera DOM-trädet på ett visst sätt utan att crasha.

Operation aborted

Felet beskrivs här och en lösning beskrivs här

Min lösning var att sätta defer=”defer” på det javascript som ändrar i webbsidan dynamiskt så att det körs först när sidan laddats och renderats. Ovanpå detta så lade jag scriptet som uppdaterar sidan i en onload=doMyStuff(). På så sätt SKA sidan ha renderats klart innan jag börjar ändra i den. Så tror jag åtminstone att det funkar…

Det finns en anledning till att utvecklare ogillar Internet Explorer i alla dess former. usch och fy…

Tappar focus för en webbkontroll i en ASP.NET Ajax updatepanel

Ett problem då man gör dynamiska formulär i ASP.NET Ajax är att man tappar “focus” för den kontroll (textbox, dropdown etc.) som genererar postbacken. Med det menar jag att formulärets tabbningen resettas och den som fyller i formuläret får börja tabba från början.

Om man då har ett gränssnitt där tabbning mellan fälten är viktigt för helhetsupplevelsen såm måste man “sätta tillbaka focus” på den kontroll som orsakat postbacken. Detta gör man enklast med följande oneliner i den metod där du hanterar postbacken:

ScriptManager.GetCurrent(this.Page).SetFocus(controlName);

controlName är det ID som du använder för din textbox, dropdown eller vad det kan vara….

Efter att ha mixtrat med diverse javascript som använder metoderna focus(), och select() i några timmar så var ovan nämnda lösning den enklaste.

The compiler failed with error code 128

Detta mystiska meddelande dök upp på en produktions-server idag där det körs en VB.NET 1.1 webapplikation. Detta orsakade att ingenting längre fungerade. Samma fel dök upp på samtliga webbsidor så sajten var död rent funktionellt.

Den lösning som fungerade för mig var denna. Ett tillägg var att jag startade om servern som sista steg. Då servern sedan kom upp igen så fungerade allt. Som sagt, väldigt mystiskt….

Funäsdalen i påsk

Efter mycket jobb den senaste tiden så bär det av till Funäsdalen i påsk för nöje och rekreation. Som vanligt så bor vi i familjens stuga i funäsdalen. Personligen så ser jag fram emot den friska fjällluften samt att få glida runt på mina telemark-skidor. Det blir även en del längdåkning på fjället skulle jag tro.

På kvällarna så skulle jag bli förvånad om jag inte spelar lite Panzer General II (1997). Det är ett av de bästa turn-based strategispel som någonsin gjorts. Ett annat bra spel på samma tema är Strategic Command I och II.

Trevlig påsk!

Sun Certifierad Java Programmerare (SCJP)

Det har inte blivit något skrivet här på sistone eftersom jag pluggat frenetiskt de senaste veckor för att certifiera mig inom programmeringsspråket Java. Idag skrev jag provet hos Cornerstone i Sundsvall och klarade det. Jag fick 68% rätt på de 72 frågorna, där gränsen var 59%. Yippie, fy fan vad jag fick slita…

Nu är jag alltså certifierad java utvecklare enligt Sun. Nästa mål är att certifiera mig som Microsoft Certified Technology Specialist (MCTS) i .NET Framework 2.0.

Detta ska firas i helgen!

champagnebottle

The Prodigy - Invaders Must Die

Årets bästa, ja de senaste 10 årens bästa, album släpptes idag och hörs i mina hörlurar på HÖG volym. The Prodigy är äntligen tillbaka med sin techno, rave, punkmusik eller vad man ska kalla det. På ett totalt sett superbra album så gillar jag främst flirtarna med det gamla Prodigysoundet från min favoritskiva The experience (1992). Äntligen är The Prodigy tillbaka och det i högform! Rock!

The Prodigy - Invaders Must Die

The Prodigy - Invaders Must Die

Betyg: 5++ av 5 möjliga

GEOM_MIRROR: Component ad2 (device gm0) broken, skipping

Another day for me with server trouble. On my server I use the Freebsd gmirror (software raid) with mirrored disks. It has worked perfectly for the last couple of years, however today I found out that my gmirror raid1 was degraded. The “gmirror list” command told me that one of my disks was missing in the raid. The error message in /var/log/messages was the somewhat strange “GEOM_MIRROR: Component ad2 (device gm0) broken, skipping”. Is my disk (ad2) bad or what? Why is gm0 broken? The disk is actually running and seems to be okey.

I found a solution for the problem. If you remove the “missing disk” from the raid and then insert it again, then the raid is rebuilt. For me the raid seems to be working again.

My solution:
gmirror deactivate -v gm0 ad2
gmirror forget -v gm0
gmirror insert -v gm0 ad2

mod_rewrite: could not init rewrite log lock in child

I found this strange error in my freebsd Apache error log: “mod_rewrite: could not init rewrite log lock in child”. The same error was logged every second and was filling up my disk with junk. This should not happen because I have a fresh installation of Apache from the Freebsd ports tree and no strange configuration.

After some google-time I found the “RewriteLog directive” at the mod_rewrite page. It says: “To disable logging either remove or comment out the RewriteLog directive or use RewriteLogLevel 0! ”

I set “RewriteLogLevel 0″ in my apache conf-file and restarted apache. The problem was now gone! I do not know which file or directory that mod_rewrite tries to write to however i am pleased to know that the problem was solved.