ISAPI Rewrite 3 på Bineros servrar

Vi har börjat testa lite smått på några webbsajter att använda ISAPI-modulen som finns installerad hos Binero och det fungerar ganska bra. Vi har till och med fått igång ett första MVC-projekt på .NET 3.5. Riktigt kul med ett webbhotell som är framåt och förstår vilken teknik vi utvecklare vill ha.

Det tog lite tid att lista ut hur man fick igång det eftersom Bineros förklaring av Rewrite 3 inte är så utförlig. De har manualen på deras sajt så där kan man lära sig lite (funkar dock inte med Firefox 3). Helicon Tech som ligger bakom modulen rekommenderas också.

Mest hjälp för att få igång det hade jag av av några trådar på Aspsidan och webForum.

Något att tänka på är att de ändringar man gör i Script Mappings i Bineros kontrollpanel tar ett tag innan de slår igenom. Kommer ihåg den första kvällen då jag kämpade med det in på småtimmarna men hade ingen lycka. Provade mängder av olika konfigurationer och gav sist upp och bara lämnade det. Nästa morgon när jag laddade upp sidan så bara det fungerade!

Så nu ska jag förklara det jag kommit på hittills.

Det första man måste göra är att lägga till en *-mappning enligt följande.

Filetype: *
Executable: Aspnet2
is wildcard: false
is script engine: false
verify that file exists: false

När du ändå är där kan du även lägga till .asax eftersom Binero verkar ha glömt det i standardinställningen. Se bilden för exempel på de två inställningarna längst ner.

 

Sen är det dags att knåpa ihop en httpd.ini (uppdatering: filen ska ha namnet .htaccess och inget annat) som styr hur ISAPI Rewrite 3 ska uppföra sig. Här under ser ni våran som fungerar fint om man vill ta bort .aspx ändelserna. Jag har dock inte lyckats att exkludera vissa mappar, så om någon kan se vad det är för fel på sista raden som ska blocka mappen "MappSomInteSkaOmskrivas" så uppskattar jag tips. Uppdatering: Denna rad måste ju givetvis ligga överst för att de andra reglerna ska ignoreras. Har nu uppdaterat skriptet som det ska se ut och då funkar det mycket bättre.

# Helicon ISAPI_Rewrite configuration file
# Version 3.1.0.34

RewriteEngine on

#Exclude folder
RewriteRule /(?!(?:Images|Css|MappSomInteSkaOmskrivas)/.*).* - [L]

#Redirect extension requests to avoid duplicate content
RewriteRule ^([^?]+)\.aspx$ $1 [NC,R=301]

#Internally add extensions to request
RewriteCond %{REQUEST_FILENAME}.aspx -f
RewriteRule (.*) $1.aspx
By Jesper Lind

For-loop till SQL Server

Har funderat på ibland hur man kan göra foor-loop i SQL Server. Efter en sökning hittade jag svaret hos SQLAuthority som också visar upp exempel på break och continue.

I mitt fall ville jag köra en insert för varje loopning och mitt skript såg ut ungefär som följer. Variablen intFlag används också för att sätta in ett stigande heltal i tabellen.

DECLARE @intFlag INT
SET @intFlag = 1
WHILE (@intFlag <=100)
  BEGIN
        PRINT @intFlag

        INSERT INTO TheTable (IntValue,StringValue,CounterValue) VALUES (1,'MyDefaultString,@intFlag))
  SET @intFlag = @intFlag + 1
  END
GO

By Jesper Lind

Skripta enstaka tabeller med SubSonic

SubSonic är riktigt trevligt att jobba med och vi använder det mer och mer i våra projekt. Dels så är det smidigt att få ett helt databaslager skapat automatiskt, men även bra till att skripta ut struktur och data från databaser.

Ibland vill man bara ha några enstaka tabeller och då kan man skriva enlgt följande i sin App.config. Hittade hur man gör för att skriva in Regex-uttryck i fältet includeTableList i SubSonic-forumet.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
<section name="SubSonicService" type="SubSonic.SubSonicSection, SubSonic" requirePermission="false"/>
  </configSections>
  <connectionStrings>
    <add name="ConnectionString" connectionString="Data Source=(local);Initial Catalog=MyLocalDatabase;Integrated Security=True"/>
  </connectionStrings>
  <SubSonicService defaultProvider="Provider" >
    <providers>
      <clear/>
      <add name="Provider"
           type="SubSonic.SqlDataProvider, SubSonic" includeTableList="\b(Table1|Table2|ThirdTable)\b" connectionStringName="ConnectionString" generatedNamespace="MyNamespace.DAL" />
    </providers>
  </SubSonicService>
</configuration>
By Jesper Lind

Kopiera innehåll i tabeller mellan databaser

Vi har tidigare visat hur man kan göra för att kopiera ett enskild fält i SQL Server mellan två databaser. Idag är det dags för att visa hur man kopierar all data i en tabell. Det man ska tänka på är att tillfälligt tillåta insättning av primärnycklar, för att dessa ska gå att kopiera.

SET IDENTITY_INSERT [TargetDB].[dbo].[TableToCopy] ON
INSERT INTO [TargetDB].[dbo].[TableToCopy] (Id,Field1,AnotherField,ABoolField)
    SELECT Id,Field1,AnotherField,ABoolField FROM [SourceDB].[dbo].[TableToCopy]
SET IDENTITY_INSERT [TargetDB].[dbo].[TableToCopy] OFF
By Jesper Lind

Dags att testa Firefox 3 Beta 5

http://www.codeodyssey.se/upload/resource/blog/Firefox3-beta5-welcome.jpg

Jag har länge lockats av tanken med att installera beta-versionen av Firefox, och ikväll var det dags att ge sig på det. Skälet till att jag väntat så länge är att jag brukar se till att jag har samma version som de flesta av användarna så jag kan se hur deras upplevelse är av de webbsidor jag är med och utvecklar.

Tänkte lämna lite tips om hur jag gjorde för att installera det i mitt OS X. Jag ville fortfarande ha kvar FF2 och ha möjlighet att köra bägge versioner.

Lifehacker artikeln The Complete Field Guide to Testing Firefox 3 var till stor hjälp och där hittade jag den mesta information jag behövde.

Först såg jag till att säkerhetskopiera hela min Firefox profil med hjälp av tillägget FEBE.

Sen använde jag metoden hos tech-recipies för att kunna få en separat beta-installation, men endå dela på samma profil.

Slutningen installerade jag tillägget Nightly Tester Tools för att overrida all kompabilitet och kunna göra mina vanliga tillägg i nya versionen. Obs gör detta på egen risk eftersom det kan orsaka minnesstörningar, hängningar och andra oönskade beteenden.

Betan för Firefox 3 finns att ladda hem hos Mozilla på 45 språk inklusive svenska. Det första intrycket är väldigt positivt, och nu ska jag ta den på en ordentlig testsurfning. Over and out.

By Jesper Lind

.NET-utveckling på en Mac fungerar fint

Oj vilket blogg-uppehåll det varit här, hoppas ni inte saknat oss för mycket. Nu kommer vi köra igång igen och hoppas på att kunna skriva regelbundet här om webbutveckling som vi brukar.

Denna gång bloggar jag från en MacBook Pro, så se fram emot många OS X-relaterade artiklar i framtiden.

Men ni Windows-geeks behöver inte misströsta. Kör Vista i en boot camp installation via VMware Fusion, så det kommer finnas mycket matnyttigt för den plattformen också.

Man kan säga att mitt dataliv har blivit rätt mycket trevligare sen jag kunde pensionera den Dell-burk jag använde innan (och nej Dell har inte hört av sig för att kompensera för den dåliga upplevelsen). Det var inte helt smidigt att ha en dator som stängde av sig själv titt som tätt när den blev överhettat. En del bekanta brukar le så smått när jag berätta om hur jag fick sitta på balkongen med kylklampar under datorn, vid krävande operationer.

Jag har tidigare lovat en utvärdering av hur det fungerar att använda Visual Studio på en Mac via Vista som slavsystem, och kan säga att det går helt okej. I min maskin har jag 2 GB ram och det duger bra åt att köra de båda operativen sida vid sida. Funkar till och med bra att använda det processorintensiva pluginet Resharper som jag blivit så förtjust i.

VMware Fusion som gör det möjligt att köra OS X och Windows (eller andra operativ) samtidigt har många bra inställningar där man bland annat kan ställa in hur mycket ram man vill dedikera till slavsystemet och det går också att simulera två processorer med hjälp av mjukvaran.

Något som är lite svårt i början är att vänja sig vid alla teckenkombinationer. Nu har jag hittat hur jag skriver in det mesta, men saknar fortfarande vänster måsvinge. Så här har jag lite forskning kvar innan jag kodar lika effektivt som på en PC.

Så jag kan gärna rekommendera även gamla Windows-rävar att i alla fall fundera på att switcha till Mac. OS X är ett väldigt skönt operativ som gör de mesta uppgifter till en bättre upplevelse. Mac-masknerna är också väldigt snygga och har väl integrerad hårdvara. Något som jag uppskattar som inte är så intresserad av att mecka med olika drivrutiner fram och tillbaks. På maccen funkar det mesta med en gång, och allt OS X är väldigt lättanvänt.

By Jesper Lind

Övervaka databaskopplingar med sp_who2

Att vara slarvig med att stänga databaskopplingar i en webb-app kan ha förödande effekt på prestanda. Att spåra buggarna kan vara svårt ifall man inte är säker på hur man gör.

Ett bra tips kan vara att använda något av följande kommandon i SQL-managern.

EXEC sp_who

EXEC sp_who 'active'

Det finns även en odokumenterad version som heter sp_who2 och som visar några fler parametrar som CPUTime, DiskIO, LastBatch och ProgramName. Samma som innan alltså fast med en 2:a på slutet.

EXEC sp_who2

Med dessa kommandon får man upp en lista över de kopplingar som är igång och dess parametrar. Ifall det är fler än 100-200 stycken samtidigt så kan det betyda att man har problem. En normal sajt bör endast ha några få kopplingar öppna åt gången.

När det börjar gå riktigt åt skoken så kommer följande felmeddelande dyka upp i event-loggarna.

The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.

Mer läsning om sp_who finns hos dotnetyuppie eller om hur man bör stänga kopplingar i sin kod på 15seconds

By Jesper Lind

Resharper - lika kul som Tetris

http://www.codeodyssey.se/upload/resource/blog/resharper-tetris.gif

Måste bara rekommendera Visual Studio-tillägget Resharper, ifall det är någon VS-kodare där ute som inte provat det ännu. Utan att gå in för djupare på vad det gör så kan man säga att det är som en slags automagiskt refaktionerings-verktyg.

Med detta kan till och med städa gammal kod vara roligt. Här äver ser ni en bild på de olika färgkoderna. De röda raderna betyder att referens saknas, och man hoppar till rätt ställe i koden genom att klicka på dem.

Finner det nästan lika kul som Tetris så det har definitivt gjort mig till en gladare kodare.

Men tänkt på att du behöver en relativt kraftfull dator med snabb processor, mycket ram och en snabb hårddisk, för att använda det, då det är väldigt resurskrävande.

By Jesper Lind