Posts

Posts uit 2016 tonen

XCopy parameters

Syntax       XCOPY source [destination] [options] Key    source      : Pathname for the file(s) to be copied (accepts wildcards).    destination : Pathname for the new file(s).      [options] can be any combination of the following:     Source Options       /A    Copy files with the archive attribute set (default=Y)    /M    Copy files with the archive attribute set and          turn off the archive attribute, use this option          when making regular Backups (default=Y)                                      /H    Copy hidden and system files and folders (default=N)    /D:mm-dd-yyyy          Copy files changed on or after the specified date.          If no date is given, copy only files whose          source date/time is newer than the destination time.    /U    Copy only files that already exist in destination.      /S    Copy folders and subfolders    /E    Copy folders and subfolders, including Empty folders.          can be used to modify /T.    /EX

Linq Zip functie

Met zip functie van Linq kunnen twee lijsten 'geritst' worden. Deze functie werkt als een soort ritsssluiting. Voorbeeld: var letters= new string[] { "A", "B", "C", "D", "E" }; var numbers= new int[] { 1, 2, 3 }; var q = letters.Zip(numbers, (l, n) => l + n.ToString()); foreach (var s in q) Console.WriteLine(s); Als de ene lijst meer items bevat dan de andere lijst, dan wordt uitgegaan van de lijst met de minste items, zoals het voorbeeld laat zien.

Linq Aggregate functie

Met de aggregate linq method wordt een lijst eenmalig van begin tot eind doorlopen. Bij elke iteratie kan een actie worden uitgevoerd en het resultaat van deze actie wordt meegenomen naar de volgende iteratie. Voorbeeld: var nums = new[]{1,2,3,4}; var sum = nums.Aggregate( (a,b) => a + b); Console.WriteLine(sum); // output: 10 (1+2+3+4) Deze code wordt als volgt uitgevoerd: In de eerste iteratie hebben de parameters a en b de waarde 1 en 2. In de body van de aggregate worden deze waarden bij elkaar opgeteld en het resultaat vormt de input voor de volgende iteratie. In de tweede iteratie zijn de waarden voor a en b dan ook 3 en 3. Deze waarden worden weer bij elkaar opgeteld en het resultaat is weer de waarde voor a: 6 en b krijgt de waarde uit de lijst: 4. Dus het resultaat is dan ook 6 + 4 = 10. Een ander voorbeeld is gebruik te maken van een strings: var chars = new []{"a","b","c", "d"}; var csv = chars.Aggregate( (a,b) => a + &

OO Design reminders

Onderstaand reminders voor OO design: Lijsten Komt het regelmatig voor dat er acties moeten worden uitgevoerd op lijsten, maar hiervoor dan een aparte class aan, bijv. Persons. Deze class erft dan van IEnumerable en heeft dan als extra's de methodes die vaak gebruikt worden. Option type Soms moet een actie op een object worden uitgevoerd, maar alleen als dat object bestaat. Om een null check uit te sluiten kan je een nieuwe class maken: Option . Vervolgens implementeert deze class IEnumerable . Dit is een manier om aan te geven dat er "niets" is zonder te hoeven checken op null. De aanroepende code kan dan altijd bijv. ForEach(o => o.DoSomething()) aanroepen zonder daarbij te hoeven checken op null. Voorbeeld implementatie van Option class: public class Option<T> : IEnumerable<T> { private readonly T[] data; private Option(T[] data) { this.data = data; } public static Option<T> Create(T element) { ret

Advanced javascript

Scope en javascript compiler Scope:  waar zoeken we naar (variabelen, functies, etc) wie zoekt er? Javascript heeft enkel een function scope. Misconceptie is dat Javascript geen compiled language is; dat is het namelijk wel. De JS engine gaat twee keer door de code heen: de compileer-fase en de runtime fase. Hierover later meer. Compileerfase zoekt naar declaraties van variabelen en functies en plaats deze in de juiste 'scope slots'. var foo = "bar"; function bar(){ var foo = "bar"; } function baz(foo){ foo = "bam"; bam = "yay"; } Deze code wordt door Javascript door twee totaal verschillende fases verwerkt: De declaration fase (het var foo gedeelte) en een initialization fase (het toekennen van "bar" aan foo). Deze twee operaties (fases) gebeuren op totaal verschillende tijdstippen. De compiler scant naar alle declaraties (var statements en function declarations) die hij kan vinden. Als hij e

IIS: Application pool recycling vs IIS Reset

Om het verschil tussen IIS Reset en Application pool recycling uit te leggen, eerst even een stukje uitlog over hoe IIS werkt. IIS kent drie hoofdcomponenten: 1. Http.sys Dit is een kernelcomponent wat betekent dat het geen onderdeel is van de user mode processen, zoals de W3WP.Exe. Een kernelcomponent gebruikt nooit virtueel geheugen van user processen. Het is geisoleerd en gescheiden. Http.sys heeft drie belangrijke rollen: (client) connection management; Routing requests van browsers. Dit houdt in dat http.sys er voor zorgt dat de requests bij de juiste application pool queue terecht komen. Beheren van de response cache. 2. Worker processen Worker processen zijn de application pools en elke application pool en voor elke application pool wordt een instantie van W3WP.exe opgestart. Een application pool handelt alle content af zoals html bestanden, afbeeldingen, scripts, css bestanden, maar ook dynamische content zoals ASP.NET applicaties. Om deze reden is de stat

MS Sql 70-461: Chapter 17

Afbeelding
Les 1 Bij de uitvoering van een query kan invloed worden uitgeoefend met behulp van hints. Hints zijn bevellen over hoe de query moet worden uitgevoerd: Table hints: hoe moet een tabel gebruikt worden in een query query hints: hints op query level. Bijv welk join algoritme moet gebruikt worden join hints: enkel voor een één join. Sql Server voert een query uit m.b.v. physical operators. Omdat deze operators itereren over rowsets worden zij ook wel iterators  genoemd. Access Methods Als een tabel is georganiseerd als een heap, dan is een table scan de enige acces method. De scan wordt dan uitgevoerd in geen specifieke logische volgorde. Sql Server gebruikt Index Allocation Map (IAM) pages om de scan uit te voeren in physical allocation order . Deze allocation scan kan ook worden gebruikt bij een clustered tabel. Een allocation order scan is sneller als de tabel minder gefragmenteerd is. De scan is langzamer als de fysieke fragmentatie hoger is. Sql Server gebruikt e

MS Sql 70-461: Chapter 16

Les 1 The meaning of "set-based" De term set-based  wordt gebruikt om een benadering te beschrijven om query-taken af te handelen en is gebaseerd op de principes van het relationele model. Ter herinnering, het relationele model is gebaseerd op de mathematische set theorie. Set-based oplossingen gebruiken T-sql queries, welke opereren op tabellen als input, ofwel een set van rijen. Zulke oplossingen staan in contrast met iteratieve oplossingen die cursors gebruiken of andere iteratieve constructies om één rij per keer af te kunnen handelen. Het is aan te raden om set-based constructies te gebruiken i.p.v. iteratieve constructies. Dit omdat de set-theorie de basis is van het relationele model, wat op zijn beurt weer de basis is van T-sql. Met iteratieve oplissingen wordt tegen dit principe in gegaan. Iteratieve constructies zijn altijd veel langer omdat zij zowel de "hoe" als de "wat" (imperatief) moeten implementeren, terwijl bij set-based enke

MS Sql 70-461: Chapter 15

Afbeelding
Les 1 Als een object over de 8 pages komt reserveert Sql Server uniform extents voor dit object. Met deze organisatie wordt door kleine objecten weinig ruimte verspild en grote objecten zijn minder gefragmenteerd. Heaps en balanced trees Pages zijn fysieke structuren. Sql Server organiseert data in pages in logische structuren. Sql Server organiseert tabellen als heaps of als balanced trees . Een tabel die is georganiseerd als een balanced tree wordt ook wel een clustered table of clustered index genoemd. Indexes zijn altijd georganiseerd als balanced trees. Andere indexes zoals indexes die niet alle data bevatten en dienen als pointers naar rijen in tabellen voor snelle seeks heten non-clustered indexes. Heaps Een heap is een eenvoudige structuur. Data in een heap is niet georganiseerd in geen enkele logische volgorde. Een heap is gewoon een (ongeordende) stapel van pages en extents. Een speciaal systeem genaamd Index Allocation Map (IAM) pages wordt door Sql Server g

MS Sql 70-461: Chapter 14

Afbeelding
Les 1 Query optimization problems and the query optimizer Op eenvoudige queries na, kan een query op vele manieren worden uitgevoerd. Het aantal manieren hangt van de complexiteit van de query. Sql Server kan een join op verschillende manieren uitvoeren. Het kan dan gebruik maken van de volgende algoritmes Nested loops Merge Hash Bitmap Filtering Optimized Hash (ook wel Star Join optimization genoemd) Onderstaande afbeelding geeft aan hoe Sql Server een query uitvoert: Alle stappen op execution na, worden uitgevoerd door de relational engine. De relational engine is een intern component die op logisch niveau werkt. De daadwerkelijke uitvoering van een query wordt uitgevoerd door de execution engine van de relational engine samen met de storage engine. De storage engine voert de fysieke handelingen uit. In het kort:de Query Optimizer (QO) moet een transformatie doen van logische naar fysieke operatoren. De QO kan enkel physical operators gebruiken die de storage