Posts

MS Sql 70-461: Chapter 1

Les 1 Dialect T-SQL is een dialect van de standaard SQL van Microsoft. (T-)Sql is gebaseerd op een sterk mathematisch fundament. Voorbeelden van dialecten van T-SQL zijn: '!=', 'CONVERT()', weglaten van puntkomma. Dit zijn voorbeelden die dus niet onderdeel zijn van de Sql-standaard. Relational model Sql is gebaseerd op het relationele model, wat een model is voor het beheren en manipuleren van data. Een algemene misvatting is dat het woordje relationeel slaat op de relatie tussen tabellen. Dit is niet correct, de waarheid is dat het woordje relational slaat op het mathematische concept relation. Een relation in het relation model is wat Sql noemt een tabel. Men zou kunnen stellen dat een tabel is Sql's poging om een relation voor te laten stellen. Een relation heeft een body en een header. De heading is een set van attributen met elk een eigen type, wat in Sql de kolommen zijn en de body is een set van tubles, wat in Sql de rijen zijn. De andere mathematis...

Werking Basic Authentication

Afbeelding
In IIS is het mogelijk om gebruik te maken van Basic Authentication. De werking van Basic Authentication (BA) is als volgt. 1) De browser maakt een request naar een pagina die BA gebruikt 2) IIS stuurt een 401 naar de browser met een 'WWW-Authenticate' header. Door deze header weet de browser dat er inloggegevens nodig zijn. 3) De browser toont een login-scherm waarin de gebruiker zijn credentials kan invoeren 4) De browser plakt de gebruikersnaam en wachtwoord aan elkaar met daartussen een dubbele punt (:). Vervolgens maakt hij hier een Base64-string van. Daarna maakt de browser een Authentication header aan met als waarde "Basic ", bijv:  Authorization: Basic QXNwZWN0XHJzLjExNDE0Ny1saXZlOkZkNyoxWCV4 5) IIS decrypt de Base64-string en gaat na of de opgegeven gebruiker voldoende rechten heeft. Zo ja, dan stuurt IIS een response header terug met code 200, oftewel OK. Als de gebruiker onbekend is, wordt wederom het login-scherm getoond. Schematisch ziet dit er a...

IIS Keep Alive en three way handshake

Afbeelding
Keep Alive en Keep Alive Timeout IIS Keep Alive kan aan en uit gezet worden. Standaard staat deze ingeschakeld en wanneer ingeschakeld dan wordt ook de Keep Alive Timeout uitgelezen, welke standaard op 120 seconden staat. De Keep Alive zorgt er voor dat een verbinding open blijft voor dezelfde client. Pas als er geen requests meer binnen zijn gekomen gedurende het aantal seconden van de Keep Alive Timeout, dan pas sluit IIS de verbinding. Het open houden van een verbinding heeft als voordeel dat er niet per request de three-way-handshake uitgevoerd hoeft te worden. Als de Keep Alive uit staat, dan wordt de connection na elk request gesloten. Bij elk request  wordt dan de three-way-handshake uitgevoerd en bij veel requests werkt dit erg vertragend. Three way handshake De three way handshake is de manier die TCP gebruikt om een vertrouwde TCP/IP verbinding op te zetten. TCP's three way handshake is ook bekend als SYN-SYN-ACK omdat er drie berichten verstuurd worden door TCP...

Visual Studio: Debug informatie schrijven naar Output window

Met zowel Debug.WritelLine() als met Trace.WriteLine() kan je berichten tonen in de Output window van Visual Studio. Het verschilt tussen deze twee methode heeft te maken met het builden van de applicatie. Als je build configuratie op 'Release' staat, dan negeert de compiler alle 'Debug' statements. Deze statements zitten dus niet in de gemaakte assemblies (dll, exe). De 'Trace'-statements worden niet  genegeerd, wat dus betekent dat deze wel  in de assemblies zitten. Naast de 'WriteLine' bieden Debug en Trace ook andere methodes, zoals bijvoorbeeld 'Assert'. Met deze methode kunnen condities worden opgegeven. Pas als aan een conditie wordt voldaan, dan pas wordt er naar de Output window geschreven. bron:  https://support.microsoft.com/en-us/kb/815788

Clean Code - Design Patterns

Design patterns zijn onder te verdelen in drie categorieen: Creational patterns Helpen om instanties van objecten te maken. Structural patterns Helpen om de communicatie op te zetten tussen gescheiden groepen objecten. Behavior patterns Helpen om het gedrag van de systemen onder te verdelen in discrete classes. Ondanks dat de patterns zijn gecategoriseerd, allemaal volgen ze hetzelfde doel: dependency management. Elk pattern is een kristalisatie van de SOLID principles. Ze zoeken allemaal uit hoe de elementen te scheiden van het systeem.

Clean Code - Transformation Priority Premise

De transformation list is als volgt opgebouwd: Null (return null) Null to constant (verander return null naar bij. 2) Constant to Variable (verander bijv 2 naar een variabele) Add computation (maak gebruik van -, +, *, etc.) Split flow (Voeg een if else statement toe, en niet meer dan 2 paden) Variable to Array (maak van een variabele een array) Array to Container (maak van een array een list) If to While (verander de if naar een while loop) Recurse (maak een recursieve methode) Iterate (maak gebruik van een for of een foreach loop) Assign  Add case (Voeg een else if blok toe) Indien er meerdere keuzes zijn om een richting te bepalen, ga dan voor de keuzedie het dichtst bij 1 zit. De kans is waarschijnlijk groter dat dit een betere uitkomst biedt.

Clean Code - Mocking

Tijdens het testen kan het voorkomen dat je nep objecten moet gaan gebruiken. Deze nep objecten komen in verschillende gradaties en vormen een hierarchie. Onderstaand de hierarchie van hoog naar laag. - Test double (= abstract) - Dummy - Een subclass die geen gedrag kent. Alle functies retourneren een waarde die zo dicht mogelijk bij 0 of null ligt. - Stub - De functions voeren geen acties uit en geven fixed waarden terug die de producitecode sturen richting het pad dat getest moet worden - The spy - is hetzelfde als de stub, maar onthoud waarden die bruikbaar zijn voor de test. Zo kan bijvoorbeeld geckeckt worden of er een bepaalde functie is aangeroepen of hoevaak een bepaalde functie is aangeroepen. Deze waarden kunnen dan later weer door de test worden uitgelezen. - The (true) mock - heeft alle eigenschappen die een spy ook heeft. Daar bovenop heeft een mock ook nog een bijzondere feature: hij weet water zou moeten gebeuren. De test checkt niet wat de mock bespioneert. De t...