woensdag 12 september 2007

Vervelende Internet Explorer gedrag

Ik browse regelmatig op het internet honderden linkjes af, daarvoor gebruik ik altijd Opera als browser. Helaas heeft opera geen mooie XML file rendering gedrag. Internet explorer doet dat veel beter.

Internet explorer geeft echter vele overbodige warnings af als ik een XML bestand met DTD of XSLT open. De warning "Your current security settings put your computer at risk" is reuze irritant als ik een les probeer te geven of een flash filmpje wil tonen.

Daarom hierbij hoe je die foutmelding kan verwijderen.

windows toets + r
gpedit.msc
Bij zowel computer als user:
Administrative Template
Windows Components
Internet Explorer

Dan de Turn of the Security Settings Check feature op ENABLE zetten.

Zo weer een probleem opgelost.

Meer informatie op http://www.eggheadcafe.com/software/aspnet/28900007/-how-do-i-remove-the-b.aspx

woensdag 22 augustus 2007

Wanneer is een dataset geen dataset?

Als je in .Net een typed dataset aanmaakt en deze wegschrijft met typedDataSet.WriteXml("c:\xml",XmlWriteMode.WriteSchema)
Dan schrijf je een TYPED diffgram weg. Een typed diffgram is geen normale DataSet en als je dan probeerd hem in te lezen met untypedDS.ReadXml("pad" XmlReadMode.DiffGram) dan krijg je een dataset zonder tables.

Dit komt vast omdat de diffgram teveel informatie bevat, een hacky oplossing is als volgt:

XmlDataDocument dd = new XmlDataDocument();
dd.Load("c:\pad.xml");
string info = dd.FirstChild.NextSibling.InnerXml.ToString();
byte[] byteArray = new byte[info.Length];
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
byteArray = encoding.GetBytes(info.ToCharArray());
MemoryStream ms = new MemoryStream(byteArray);
ds.ReadXml(ms);

Hier leest de code de diffgram in een XmlDataDocument en maakt vervolgens van de Firstchild.nextsibling een dataset.

maandag 23 juli 2007

Webscreen scraping III

Een httpwebrequest is een bijzondere klasse.
Het http protocol is geen makkelijk protocol en kan afhankelijk van de protocol instellingen zowel als server en client verschillen gedrag vertonen.

Bij het herhaaldelijk gebruiken van een webrequest ging er ergens iets mis.
System.Net.WebException: The underlying connection was closed:

Oplossingen die niet werkten:
System.Threading.Thread.Sleep(2000)
--1000 verbindingen direct achter elkaar vind geen enkele server/router leuk
ServicePointManager.DefaultConnectionLimit = 10
--meer dan standaard 2 (mischien een connectie die busy was oid)
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 Or SecurityProtocolType.Tls
--we werken via HTTPS mischien helpt dat
lHttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest)
lHttpWebRequest.SendChunked = True
--mischien een fout in certificaat handeling(incomplete transmissie) daarom chunked ipv streamed
lHttpWebRequest.Method = "GET"
--get ipv post ivm met certificaat fout (de fout lag zeker bij een post aktie)
lHttpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 3.0.04506.30; MEGAUPLOAD 1.0)"
--een moderne browser string (alles anders dan IEXplore deed het zowiezo niet)
lHttpWebRequest.Timeout = 30000
--timeout maakt geen verschil
lHttpWebRequest.KeepAlive = False
--keep conneciton alive (als de verbinding open blijft kan .Net denken dat hij open staat terwlijk de server hem allang dicht heeft gegooid)
'lHttpWebRequest.ProtocolVersion = HttpVersion.Version11
currentServicePoint = lHttpWebRequest.ServicePoint
currentServicePoint.MaxIdleTime = 5000
--max idle time for connectie daarna moet hij opnieuw gemaakt worden
currentServicePoint.Expect100Continue = False
--er is een fout in .Net dat een 100 continue en een 100 close melding door elkaar gehaald worden

'vanaf hier standaard code
'url = "https://blablabla.com
lHttpWebResponse = CType(lHttpWebRequest.GetResponse, HttpWebResponse)
lHttpWebResponseStream = lHttpWebRequest.GetResponse.GetResponseStream
str = lHttpWebResponseStream

donderdag 19 juli 2007

Webscreen scraping II

Soms, is het leven moeilijk.


Screenscraping via .Net werkt met de HttpWebRequest class.

Dim lHttpWebRequest As HttpWebRequest
Dim lHttpWebResponse As HttpWebResponse
Dim lHttpWebResponseStream As Stream
lHttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest)
lHttpWebResponse = CType(lHttpWebRequest.GetResponse, HttpWebResponse)
lHttpWebResponseStream = lHttpWebRequest.GetResponse.GetResponseStream

Zoals ik in mijn vorige post heb verteld werkt dat niet altijd goed. Nu blijkt dus het probleem te zijn dat mijn HttpWebRequest geen user string meegeeft die geaccepteerd word.

De oplossing:
lHttpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"

ps.
Bij een httpwebrequest altijd een WebException afvangen kijken naar de status en vervolgens de response stream uitlezen waar meestal de server foutmelding in staat

lHttpWebResponseStream = ex.Response.GetResponseStream

dinsdag 17 juli 2007

Web screen scraping

Bij Twice werk ik als docent ook als importeur van een aantal websites. De meeste websites benader ik met de WebRequest class en kan ik via strings en regular expressions alles vinden. Meestal ben ik met
een druk op een knop en een kwartiertje wachten klaar. Soms vinden websites het echter nodig om zichzelf een nieuw uiterlijk aan te meten en dan werken mijn regex niet meer goed.

Eens in de zoveel tijd veranderd er een website zo heftig dat het niet meer leuk is.
Sommige moderne websites werken met sessies en als dat nog niet erg genoeg is zijn sommige websites gebaseerd op javascript en .Net technologien (ajax ben ik nog niet echt tegen gekomen)

Bij sommige websites kan ik niet met de webrequest aan de gang maar moet ik met de WebBrowser control werken. De webbrowser control biedt de mogelijkheid om in de DOM van het html document te werken en javascript goed uit te voeren. Verder zorgt de webbrowser er voor dat post en put informatie automatisch goed terecht komt.

Voor de selectie van een dropdown list en het klikken van een A link heb ik de volgende code gebruikt:

'Laad het juiste element (id=quickCountry)O
Dim countryList As HtmlElement = wbsap.Document.GetElementById("quickCountry")
'deselecteer alle elementen
For Each s As HtmlElement In countryList.All
s.SetAttribute("selected", "")
Next
'selecteer NL ->element 23
countryList.All.Item(23).SetAttribute("selected", "True")


Het direct aanpassen van de countrylist naar een element
countryList.InnerText = "

dinsdag 10 juli 2007

Microsoft Download Center

Microsoft heeft op het grote web de volgende website met heel veel downloads, patches en service packs : http://www.microsoft.com/downloads/

Een van mijn grote problemen met het aanbod is dat de meeste bestanden heel slecht genaamd zijn. Ik ben momenteel Microsoft Virtual PC aan het downloaden en de naam het installatie programma is setup.exe, een naam die nog niet in mijn download folder stond(...).

De naam van de .Net framework 1.1 is dotnetfx.exe
De naam van het .Net framework 2.0 is dotnetfx.exe

Ze kiezen voor een duidelijke naam!....

Een betere naam voor de VPC setup had VPSsetup.exe geweest (desnoods met MS ervoor)
Een betere naam voor het framework: dotNetFx10.exe en dotNetFx20.exe

Nu begrijp ik wel dat visual studio projecten standaard de setup.exe naam aangeven en het lastig is aan te passen, maar moeilijk is het niet.

maandag 9 juli 2007

Office 2007 (double line breaks)

Hoi Daar,

Sinds ik vista heb geinstalleerd werk ik ook met Office 2007. Kort voordat ik mijn laptop kreeg heb ik kort met 2007 gewerkt maar nu werk ik er full time mee.

Een punt dat me erg irriteerde was een dubbele "line break" na een enter.
De meeste html/visual studio ontwikkelaars zullen het wel herkennen dat de enter toets een nieuwe paragraaf/alinea start die dus een extra regel ruimte reserveerd.

Na het formuleren van een 100 tal word help en google zoek opdrachten kwam ik niet uit het probleem. Verder kijkend op google kwam ik uit op computer idee forum waar het antwoord staat.

Hier de menu opties die je kan gebruiken om de dubbele line breaks te verwijderen

Op de Home ribbon bij de Styles
Rechts klikken op Normal en dan Modify
Dan links onder format -> paragraph
Spacing after op 0 zetten (ipv 10)

Daarna even alles selecteren en op normal zetten

maandag 2 juli 2007

LinearGradient

Iedereen die wel eens wat heeft moeten tekenen in een Paint event weet dat het niet altijd even makkelijk is of anders heel veel werk. Tijdens de DevDays werd er gezeged dat een Gradient (overgang tussen twee kleuren) elke applicatie een stuk mooier maakt.

Voor mijn PDA heb ik een simpele klok applicatie geschreven maar iedereen die hem zag vond hem vreselijk lelijk. Daarom wilde ik graag een LinearGradient toevoegen.

Normaal gesproken gaat dat in twee stappen:
-Maak een Brush object aan (LinearGradientBrush)
-Gebruik van een Graphics object de FillRectangle methode en geef de brush als parameter mee. (De fillXX methode verwacht ook een Rectangle(x,y,width,height)

Nu zal je natuurlijk altijd zien dat een LinearGradientBrush niet beschikbaar is in een Windows Mobile/PDA omgeving.

Ik wilde natuurlijk wel een mooie gradient in mijn applicatie dus ik moest aan het werk. Mijn gereedschap was als volgt:

Een kleur bestaat uit drie kanalen -> red green blue met een waarden van 0 - 255
De nul waardes zijn zwart en de 255 waardes zijn de volledige kleur. Combinaties van kleuren zijn te maken door de verschillende kleuren meer of minder te gebruiken.

Ik kan in een For loopje kleuren aanpassen

De Solidbrush kan ik gebruiken om in één kleur te tekenen.

Het graphics object heeft een fillrect waarmee ik een pixel breed en de gewenst hoogte kan tekenen.

De code die ik gebruikt heb is als volgt:

///
/// Deze code tekend een gradient van de kleur donker zwart (50,10,50)
/// naar de kleur groen (50,240,50)
///

///
void drawGradient(Graphics g)
{
for (int x = 10; x < (this.Width + 10); x++)
{
Color c = Color.FromArgb(50,x , 50);
Rectangle rect = new Rectangle(x -10, 0, 1, this.Height);
Brush b = new SolidBrush(c);
g.FillRectangle(b, rect);
}
}

Dit is natuurlijk geen code die:

Mooi geschieden is van zijn container(breedte 255 pixels + en er komt een exception)
Werkt met variabele kleuren (van zwartig naar groening)
Logische parameters heeft (breedte/hoogte)
Code die goed omgaat met mogelijke exceptions

Daarom heb ik ook meteen maar een functie gemaakt in een static class die daar iets beter mee omgaat:

public static void drawGradient(Graphics g, int x, int y, int width, int height, Color start,Color end)
{
for (int i = x; i < width; i++)
{
int rs, gs, bs = 0;
rs = start.R;
gs = start.G;
bs = start.B;

int re, ge, be = 0;
re = end.R;
ge = end.G;
be = end.B;

//float diffR, diffG, diffB = 0F;
int ri, gi, bi;
ri = calcDiff(rs,re,width,i);
gi = calcDiff(gs, ge, width, i);
bi = calcDiff(bs, be, width, i);
if (gi > 255)
gi = gi;
Color c = Color.FromArgb(ri,gi,bi);
Brush b = new SolidBrush(c);

Rectangle r = new Rectangle(x+i, y, 1, height);
g.FillRectangle(b, r);
}
}

static int calcDiff(int rs, int re, int width, int i)
{
float diff = 0F;
int move = re - rs;
float mt, wt;
mt = (float)move;
wt = (float)width;
diff = (mt / wt) * i;
if (move > 0)
move = move;
diff += rs;

return (int)diff;
}

Snaplines

Bij het gebruik van Controls in visual studio bij het creeren van windows applicaties bieden de meeste controls snaplines aan. Snaplines langs de randen van controls kunnen gebruikt worden om op een makkelijke manier controls uit te lijnen.



De control hierboven heeft 2 actieve snaplines. Eentje om de linker rand van het vierkant en eentje op de onder rand van het rode blok in de control. Deze user control biedt niets anders aan dan een vierkant blok met in de kern een rood blok.

Zelf heb ik aan deze control snaplines toe gevoegd. Het toeveogen van snaplines aan een control is heel eenvoudig. Visual studio kijkt bij het openen van een control naar of er een Designer attribute aanwezig is. Aan de hand van de Designer attribute kan Visual Studio bepalen welke class hij moet gebruiken als 'Designer'. In de Designer class zitten een aantal methodes die een aanta returns verwachten.

Door het overriden van deze functies/properties kan je zaken aanpassen. Door bijvoorbeeld het overriden van de property:
public override System.Collections.IList SnapLines

Kan je een nieuwe return value opgeven van bijvoorbeeld:
ArrayList snapLines = base.SnapLines as ArrayList;
snapLines.Add(new SnapLine(SnapLineType.Left, 50));

Door deze aktie heb je nu een snapline die 50 pixels rechs van de linker rand een linker rand toond.

In mijn control, de CenterSquare heb ik een flink aantal snaplines toegevoegd:

public class CenterSquareSnapLines : ControlDesigner
{

public override System.Collections.IList SnapLines {
get
{
ArrayList snapLines = base.SnapLines as ArrayList;
CenterSquare c = this.Control as CenterSquare;
if (c != null)
{
snapLines.Add(new SnapLine(SnapLineType.Left, c.BorderDistance));
snapLines.Add(new SnapLine(SnapLineType.Right, c.Height - c.BorderDistance));
snapLines.Add(new SnapLine(SnapLineType.Top, c.BorderDistance));
snapLines.Add(new SnapLine(SnapLineType.Bottom, c.Width - c.BorderDistance));
snapLines.Add(new SnapLine(SnapLineType.Top, 5));
}
else
{
//Debug message here!
}
return snapLines;
}
}

}//einde class

Deze designer heb ik vervolgens toegevoegd aan mijn CentrerSquare class door het designer attribute:
[Designer(typeof(CenterSquareSnapLines))]
public partial class CenterSquare : UserControl
{
//implementatie heir
}

Bijzonderheden:
De ControlDesigner class heeft een property Control die de huidige control in design time toont. Door het casten van deze control kan je bij alle properties komen.
De snaplines property is van het type Ilist compleet zonder type checking.
Snaplines hebben een snaplinetype enumeration let op, sommige items van de enumeration zijn niet altijd zichtbaar!
In design time in VS kan je op Alt klikken om de control zonder snaplines te verplaatsen.
In design time kan je in VS op Ctrl klikken om de control te kopieren.
Meer lezen over de designer kan op : http://msdn2.microsoft.com/en-us/library/ms171830.aspx

ps. Ik zal binnenkort eens kijken of ik een mooiere opmaak kan krijgen.

vrijdag 29 juni 2007

Blogs, or, Links to blogs

Er zijn een aantal blogs waar ik regelmatig even langs ga om te kijken of er nog wat interessants op sta. Een van de blogs die ik regelmatig bezoek is Coding Horror.

Vandaag las ik een stuk over leren dat ik zeker wilde verspreiden:
Hoe leer ik leren.
Voor iedereen die ook maar een beetje geinteresseerd is in leren een leuk stuk om te lezen.

Zelf heb ik flink wat boeken gelezen over kinder psychologie en de manier waarop je volwassen word. Door het doorlopen van verschillende stadia in je leven leer je op verschillende manieren om te gaan met problemen. Er is geen beste manier om te leren, dat is voor iedereen verschillend. Maar willen leren en nieuwschierig zijn, op verschillende niveaus werkt voor iedereen.

woensdag 27 juni 2007

Design Patterns in .Net deel II

Zorda ik begreep dat de Singleton niet de enigste Design Pattern is die er bestaat ben ik meer gaan lezen over design patterns. Lijstje design patterns GOF

Van de lange lijst bestaande patterns begreep ik de volgende patterns het snelst:

Proxy -> doorgeef luik
Adapter -> doorgeef luik met hernoemen functies en extra funtie calls
Facade -> vereenvoudigde weergave van verschillende classes (van stereo + tv + recorder + dvd naar -> HomeCinema class)

De pattern die ik in deze post wil beschrijven is de Bridge pattern.

definition
Decouple an abstraction from its implementation so that the two can vary independently.

Oftewel een interface met daarin een aantal methodes
Een concrete class die de interface implementeerd en die het werk uitvoert.


De interface is de brug tussen de calling code en wat er uitgevoerd moet worden.

Design Patterns in .Net deel I

Hallo daar!,

Ik begin hiermee aan een seria artikelen over design patterns in .Net

Zodra ik het programmeren een beetje door had (jaren geleden) kwam ik erachter dat sommige code API's best lastig werken.

Het maken van een Form met controls of het gebruiken van een Stream werkt heel anders. Na het gebruiken van Static functies vroeg ik mij af waar al die methodes (die in veel verschillende programmeer talen heel erg op elkaar lijken) nou toch vandaan komen.

Nu had ik al wat gelezen over OO en wist ik dat interfaces duidelijk een definitie gaven van hoe een stuk code werkt was dat niet wat ik zocht. Verder was het antwoord: "Zo doen wij het al jaren" ook niet je van het. Toen ik erachter kwam dat Sockets zowel in Java, C++ als in C# hetzelfde werkten werd ik nog steeds niets wijzer.

Totdat ik in een stuk code een singleton tegen kwam. Een Singleton bleek een object te zijn dat als een Design Pattern (ontwikkel patroon) in veel code gebruikt kan worden. Een design pattern is een oplossing voor een veel voorkomend programmeer probleem met daarin een vaste groep classes die met een duidelijke naam op een vaste manier samen werken.

Een singleton bied een object aan dat slechts een keer in het geheugen aanwezig, door verschillende andere classes gebruikt kan worden. (bijvoorbeeld static objects)

Omdat door de static functie GetInstance een compleet object word geleverd kan je met het een instantie van het object werken zonder dat je het met new hoeft aan te maken.

In deze Singleton kan je vervolgens globale settings, grote objecten of Applicatie status bijhouden. Ook kan een singleton goed een resource waar er maar een van is bewaren.

Een singleton kan je eenvoudig maken door de new functie static te maken en een functie getInstance met als return de class zelf. (das dan niet thread safe)

Een singleton of static object komt veel voor in de .Net api. Deze static object zijn op een makkelijke manier waar dan ook in je code te gebruiken. (Denk aan HttpContext op een asp.net omgeving)

maandag 25 juni 2007

Gebruik de meest specifieke Exception

Een bekende regel is dat je de meest Specifieke bestaande Exception in je eigen code moet gebruiken. Maar wat is dan de meest specifieke bestaande Exception en heb je eindelijk de exception gevonden in welke namespace en welke DLL imports zit hij dan verstopt.

Was er maar een lijst van Exceptions.

Nu kan je natuurlijk de hele help van .Net gaan doorspitten onderweg naar alle losse exceptions maar het kan stukken sneller.

Start Reflector , kies een Frameworks versie en druk op F3. Typ Exception als zoekopdracht en zie een lijst ontstaan met daarin alle exceptions die er in de .Net omgeving zijn (iig in de referenced DLL's). Met de analyze functie of de Search Google/MSDN akties kan je makkelijk kijken waar de exceptions voor zijn en hoe je ze kan gebruiken.


(hetzelfde valt te doen voor Attributes)
PS. iemand die een andere manier heeft om snel een specifieke exception op te zoeken?

Windows Vista

Vorige week moest ik na een fatale windows crash mijn systeem opnieuw inrichten. Na een paar dagen zweten of ik een backup van een half jaar moest terug zetten of mijn harde schijven kon redden kwam alles toch weer op zijn pootjes terecht.

Bij mijn nieuwe installatie heb ik gekozen voor een verse Vista installatie en boy oh boy wat is dat genieten.

pro's
Eye candy
Makkelijker bruikbare interface (wel even wennen)
Windows Mobile Center + Sycnronisation
Een schoon gevoel bij een schone installatie
Geen traag gevoel of rare akties na een week gebruik

con's
Het is niet zo snel als vista
Graphical lag
Nieuw start menu
Lelijke Power en Sound icons
Veel software updates nodig (nero)

Oh ja, deze post kwam vanuit het volgende probleem:
Transcender loopt vast bij het opstarten vanuit vista.
De oplossing is ouder dan de weg naar Rome, gewoon starten in compatibility modus Win98/ME

Update:
Pro's
Een heel rustige omgeving om in te werken.

Con's
Nieuwe systeem Iconen zijn zoeken (windows verkenner ziet er "raar" uit.
Sommige applicaties zijn trager (Opera)
Lastig juiste drivers installeren (Nvidia drivers)
Windows Explorer werkt heel erg anders

MCP worden deel IV (de examen dag)

De voorlopige laatste post van mijn MCP worden info.

De examen dag is een spannende dag waar het allemaal om draait.

Examen
Een examen bestaat uit 47 tot 52 vragen
Examens kunnen verdeeld zijn in verschillende onderdelen.
Er is voldoende tijd voor alle vragen
50 vragen 150 minuten
Geen kladpapier / 1 memoblok

De examen vragen
Geen open vragen
Maar:
Multiple choice - multiple answers
Vragen van een half a4 ‘tje
Spot the difference vragen
Hoe spel je DoDragDrop
Welke parameter komt eerst?
(int a, double b)

Een orginele voorbeeld vraag

You are creating a Windows Forms application that uses a drag-and-drop operation to
enable users to copy customer data between a ListBox control and RichTextBox control.
The ListBox displays a list of customer Ids to the user. Each item in the ListBox is
associated with a custom external data type named CustomerData. The data type stores
the customer name along with other customer information, including the address and
postal code.
You need to ensure that when the user drags a customer name from the ListBox to the
RichTextBox all of the information in your custom data type is moved into the
RichTextBox.
What should you do?

A. Initiate the drag-and-drop operation in the MouseDown event for the ListBox.
Call the DoDragDrop method for the ListBox, passing in an instance of CustomerData.
Use the GetFormats method in the DragEnter event for the RichTextBox to access the
custom data type.

B. Initiate the drag-and-drop operation in the MouseDown event for the ListBox.
Call the DoDragDrop method for the ListBox, passing in an instance of CustomerData.
Use the GetData method in the DragDrop event for the RichTextBox to access the
custom data type.

C. Initiate the drag-and-drop operation in the MouseDown event for the ListBox.
In the DragEnter or DragDrop events for the RichTextBox, set the Effect property to
DragDropEffects.All.
Use the GetFormats method in the DragEnter event for the RichTextBox to access the
custom data type.

D. Initiate the drag-and-drop operation in the MouseDown event for the ListBox.
In the DragEnter or DragDrop events for the RichTextBox, set the Effect property to
DragDropEffects.All.
Use the GetDataPresent method in the DragEnter event for the RichTextBox to access
the custom data type.


De orginele vraag
You are creating a Windows Forms application. Your application uses a custom control. The Custom control is based on a standard button control. You add several extra properties to the control. Some of these properties are read-only. You need to ensure that the read-only properties are not displayed in the Properties window of the design environment. What should you do?

Vereenvoudigd
  • Er is een custom control

  • De custom control heeft een read-only property

  • De property moet NIET in design time in de property window staan

Orginele antwoorden
A. Decorate the read-only properties by using the EditorBrowsable attribute, and then set the EditorBrowsable attribute to EditorBrowsableState.Never.
B. Use the DesignTimeVisible attribute, and then set the DesignTimeVisible attribute to False.
C. Decorate the read-only properties by using the Browsable attribute, and then set the Browsable attribute to False.
D. Decorate the read-only properties by using the DisplayName attribute, and then set the DisplayName attribute to null.


Vereenvoudigd
A. [EditorBrowsable(EditorBrowsableState.Never)]
B. [DesignTimeVisible]
C. [Browsable(false)]
D. [DisplayName(null)]


De oplossing
A. [EditorBrowsable(EditorBrowsableState.Never)]
Voor intellisense
B. [DesignTimeVisible]
Voor UI design tools (visual studio)
C. [Browsable(false)]
Het juiste antwoord
D. [DisplayName(null)]
De property name


MCP worden deel III

Voor het leren van een examen zijn er een aantal resources.

Het examen
Microsoft biedt online een overzicht van alle onderwerpen van een examen aan. Bijvoorbeeld 70-536 overzicht. Dat zijn de onderwerpen waar het examen over gaat.

De kennis
MSDN
Alle onderwerpen hebben in de MSDN library een of meer pages met voldoende uitleg om het examen te halen. Na het maken van de voorbeelden weet je voldoende. (veel succes met het doorlezen van 300 bladzijdes saaie tekst)

Transcenders
Er bestaan een aantal proef examens zoals de transcenders die online te koop zijn. Bij het maken van de vragen kan je bij de fout beantwoorde vragen een uitleg krijgen, dat maakt het leren al een stuk eenvoudiger.

Testkings
De testking boeken zijn letterlijke examen vragen samengevat door mensen die de examens hebben gemaakt. Dit is echt vals spelen maar geeft een duidelijk beeld van de moeilijkheid van de examens. Het leren van testkings is dommer werk dan de transcenders en niet alle antwoorden zijn goed uitgelegd of correct.

Braindumps
Hetzelfde als de testking boeken maar dan niet zo duur. Online zijn veel databases te vinden met veel examen vragen (en soms ook de antwoorden).

Ervaring
Cursussen
Er staat voor bij elk examen welke cursussen daarbij horen. Het volgen van de cursus dwingt je om de technieken te gebruiken en er voldoende kennis over op te doen door de uitleg. Cursussen raad ik in het bijzonder aan voor iedereen die in een klein probleem gebied werkt en toch de examens wil doen. (Printen is een belangrijk onderwerp in sommige examens maar als je er nooit mee werkt laat een cursus goed zien wat er allemaal bestaat en in een examen gevraagd word)

Typische Examen weetjes
Tijdens een cursus (en zeker de mijne) word er stilgestaan bij typische weetjes vragen die tijdens een examen worden gevraagd

MCP worden deel II

De titel MCP (MS certified Professional) behaal je zodra je een los examen hebt gehaald. Daarmee krijg je toegang tot de MCP website (met een mooi examen overzicht) en heb je meteen een mooite titel voor op je CV zonder dat je daar veel werk voor hoeft te doen.

Examens zijn in het algemeen lastig om te halen maar zeker niet onmogelijk.

De meeste examens bestaan uit een vraag of 40 tot 50 waarbij er

Kennis vragen
Ervarings vragen
Stomme weetjes

Worden gevraagd.

Het voorbereiden van een examen moet dan ook bestaan uit het werken met de technieken, Het volgen van de bijbehordende cursussen en het lezen van de boeken.

Hiermee heb je echter nog niet alle stomme weetjes geleerd. De stomme weetjes zijn vaak korte alinea´s in de boeken of kleine stukjes van cursus opgaves. Tijdens het werken met de .Net technieken helpt VS intellisense of de help fucntie meestal goed. Bij het examen heb je dan ook geen intellisense en geen help functie.

Daarom geeft Twice (en daarmee ik dus ook) verschillende examen trainingen.

De examen trainingen bestaan meestal uit een aantal losse onderdelen.

Het aanwijzen van de kennis onderwerpen (en dan in het bijzonder de examen vragen onderwerpen)
Het aanwijzen van vereiste ervaring onderwerpen (werk eens met techniek XYZ)
Het doornemen van typische weetjes en examen vragen.
(van ADO.net moet je in elk examen weten hoe je twee Datasets kan samenvoegen, de opmaak kan copyeren en een deep copy kan maken. Verder moet je de parameters weten om een relation aan te maken ds.Relations.Add(new Relation(`naam´, parentColumn, childColumn)) )

MCP certificatie en Microsoft Examens deel I

Hoi Daar,

Iedereen met een baan moet af en toe ´aan zichzelf werken´.
Zeker als programmeur waarbij je in een snel evoluerende omgeving kan werken die letterlijk om de maand kan veranderen. Bij veel verschillende Microsoft Technieken horen examens. Sinds 1992 biedt microsoft trainings trajecten met examens aan.

Zelf ben ik vorig jaar MCAD´er in .Net geworden (Microsoft Certified Application Developer) en een klein half jaar later waren er nieuwe examen pakketten.

Het bijhouden van de verschillende certificaten eist een flink pakket aan examens en kennis.

Het halen van examens en de daarbij behordende titel zijn vaak veriesten voor een baan of opdracht. Veel detacheerders eisen ook van hun personeel dat ze veel examens halen.

Devdays 2007

Hoi Daar,

13,14 Juni ben ik naar de Devdays geweest. Een interessante maar wel vermoeiende ervaring. 15 Juni had ik een paar uurtjes ingelast om de sheets en video opnames te bekijken. Helaas zijn er nog geen sheets of video's geplaatst. Erger nog vandaag 25 juni heb ik alleen nog maar de sheets van Devdays 2006 kunnen vinden.

Daarom hierbij een paar linkjes naar blog's of websitese van sprekers waar ik naar heb gekeken.

UI design en VS add ons
The real Mark Miller website
VB.net Reflectie
Francesco Balena (offline gebruik google cache)
Intro LINQ
Alex Thissen
XNA + Programming with Cheese
Rob Miles

First Post (FIPO)

Ik ben Michiel de Vries, Microsoft Certified Trainer en op dit blog ga ik .Net technology tips geven.

Ook zal ik op dit blog vermelden wat me zoal bezig houd in de .Net wereld en met welke technologien ik aan het worstelen ben.