.NET

C# i fornyet kamp

Da jeg i 2000 hørte at Microsoft var på vej med et nyt sprog var jeg skeptisk; jeg var lige gået i gang med Java og synes at det var en drøm at arbejde med. Det var allerede en stor mundfuld at skulle lære JVM stakken – hvad skulle vi dog med endnu et sprog? Og der var da også mange ligheder; sprogene lignede…

Bedre softwaretests med fuld isolation

Hvis en integrationstest fejler, skal det helst være fordi at vi enten har lavet en kodefejl, eller at vi er ved at opgradere versionen af den komponent vi tester. Hvis testen fejler på grund af sideeffekter i den kontekst vi lever f.eks. brugere opretter data, systemer går ned eller at vi mister kontakten på grund af netværksfejl er det et problem – måske er…

Serilog

NLog, Log4Net, MS Enterprise Library, SmartInspect, ObjectGuy, Logary. There are plenty of frameworks to choose from when it comes to logging on the .NET platform. You can even setup logging right out of the box by using System.Diagnostics. Also logging is really easy to achieve – here is a very naive logging “framework”: In 2013 Nicholas Blumhardt released a new logging framework called Serilog…

Nedtælling til Websikkerhed – nr. 9 brug af komponenter med kendte sikkerhedshuller

Selv vores forældre er ved at have lært at opdateringer til windows er vigtige – uanset om viljen er baseret på teknisk indsigt eller nagende popups. Men på trods af at vi måske formår at holde vores operativsystem opdateret er der mange andre flader der, pga. manglende opdateringer, er sårbare over for angreb. Det kan være den webserver vi benytter, de frameworks vi benytter…

Nedtælling til Websikkerhed – nr. 10 uvaliderede redirects og forwards

Sikkerhedsbrud i webapplikationer er et stadig stigende problem. Gang på gang skriver pressen om indbrud og kompromitterede systemer ved de store spillere på internettet og vi er så småt begyndt at diskutere hvornår en hacking-skandale er en reel krigshandling. Som udviklere har vi et fælles ansvar at leve op til – vore applikationer er kun så sikre som deres svageste led. Open Web Application…

Agil arkitektur med isolerede koncepter

Fælles for de agile udviklingsprocesser er, at de lægger op til at vi leverer små forretningsværdiskabende stykker af funktionalitet. Når leverancen fejler, er det tit på grund af eksisterende kompleksiteter – domænet, datamodellen eller infrastrukturen forhindrer os i at nå målet. Principper som DRY (Don’t Repeat Yourself) gør at vi ivrigt genbruger og skaber bindinger og samtidigt maler vi os selv op i et…

CQRS med ElasticSearch

Når data gemmes i ElasticSearch, sker det ved hjælp af en struktur kaldet et dokument. Hvert dokument består af de felter man som bruger kommer med, samt et antal faste felter. Ét af disse felter er et id der unikt identificerer dokumentet og kan, fra grænsefladens side, bruges til at lave opdateringer og overskrivninger af dokumentet. Under overfladen foregår tingene lidt anderledes. Lucene, der…

JavaScript Promises – server-kald med progress-indikator

En dag da jeg surfede kattevideoer faglige relevante videoer på Youtube fik jeg øje på en rød progress-indikator: Min første tanke var at det vil jeg have i mine apps. Hvordan havde de lavet det? Hvis man sætter båndbredden yderligere ned begynder der at vise sig et mønster: Aha! Når man trykker på en video, starter Youtube en forespørgsel der skal hente informationer om…