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.