RegEx søg/erstat i Visual Studio 2011

I Visual Studio 2011 har Microsoft valgt at skifte til en mere konventionel RegEx motor i Søg/Erstat-dialogen, så den fungerer på samme måde som i .NET.

Det betyder så, at dette eksempel ikke længere fungerer i VS 2011.

Den grundlæggende forskel er, at der nu benyttes () og ikke {} til gruppering og $ i stedet for \ i replace-delen. Eksempel? Ja, tak!

Tidligere eksempel vil i VS 2011 se således ud:

Som søgekriterier bruger vi dette udtryk/mønster:

name="(.*)" value="(.*)"

Erstat/replace udtrykket skal så se således:

name="$2" value="$1"

Tags: ,

Decode UTF8 i URL'er

Efter at have kæmpet med dette i laaang tid, viser det selvfølgelig at løsningen ligger lige foran fødderne:

HttpUtility.UrlDecode(Request.Url.AbsoluteUri)
Helt uundværdligt i forbindelse med fx URL-rewriting når du gerne vil have danske tegn i URL'erne.

Tags:

Begrænse RAM-forbrug for SQL Server (også Express)

På servere med begrænset hukommelse kan det være fordelagtigt at begrænse, hvor meget RAM SQL Server må bruge - især fordi den gerne æder alt, hvad den kan kommer i nærheden af og dermed gøre livet surt for andre services - fx IIS.

Følgende SQL query begrænser fx max memory til 512 MB:

use master
Go
exec sp_configure 'show advanced options', 1;
Go
RECONFIGURE;
GO
exec sp_configure 'max server memory (MB)', 512;
GO
RECONFIGURE;
GO
SELECT * FROM sys.configurations
ORDER BY name ;
GO

Tags:

Søg/Erstat med Regular Expressions i Visual Studio

Jeg bruger det kun sjældent, så når jeg lige har brug for det ... hvordan er det så lige syntaxen er?

Lad os som eksempel sige, at vi har en XML-struktur som dette:

<option name="1357" value="lorem">Some option text</option>
<option name="2468" value="ipsum">Some other text</option>

Vi vil nu gerne have ombyttet værdierne for de to attributter name og value.

Som søgekriterier bruger vi dette udtryk/mønster:

name="{.*}" value="{.*}"

De 2 udtryk i {..} matcher hver især på en tekststreng af vilkårlig længde, afgrænset af ". Indholdet af de 2 kan så bruges i vores erstat/replace udtryk således:

name="\2" value="\1"

Dvs. værdien fra det andet {..}-match indsættes i stedet for \2 og værdien af det første {..}-match indsættes i stedet for \1.

Tags:

Langsom OUTER JOIN

Utroligt hvor effektiv lidt omskrivning af SQL kan være! Forklaring følger ...

Jeg havde i min MS SQL database et view, der bl.a. omfattede en WHERE clause med 2 udtryk adskilt af OR. Viewet returnerede kun 1150 rækker, men eksekveringen tog 45+ sekunder! Index på relevante felter gav intet positivt resultat. Ved at fjerne halvdelen af min WHERE clause (OR ...) gjorde at viewet kunne eksekvere på <1 sekund. Dette gjalt for begge dele af WHERE-udttrykket.

What to do?

Ved skille hele view SELECT udtrykket i 2 "ens" dele - blot med hver deres WHERE clause - og så lave en UNION ALL i mellem ... TADAAA! Hele viewet eksekverer på <1 sekund.

Tags:

Synkronisering af resource-filer (.RESX)

Arbejder du med resource-filer i ASP.NET - fx til håndtering af flere sprog - havner du sikkert i en situation hvor du får tilføjet nye keys i din primære resource-fil. Problemet er så at få opdateret alle øvrige resource-filer med de nye keys.

Til at løse dette banale problem faldt jeg over dette lille smarte command-line-værktøj: http://www.screwturn.eu/ResxSync.ashx. Med dette lille værktøj kan du få hurtigt så synkronieret keys fra din primære resource til en anden.

Tags:

Ny blog

Det er ikke nogen hemmelighed, at jeg ikke er alt for aktiv med hensyn til at skrive på min blog. Alligevel er det nu tid til at prøve lidt igen; og nu på en ny blog-platform; BlogEngine.NET.

Jeg vil forsøge fremover at skrive jeg oftere og nu med lidt mere fokus på eksperimenter i køkkenet, opskrifter m.v.

Tags: