Questa.NET

Friday, June 16, 2006

Verhuisd

Vanaf heden zal ik verder bloggen op born2code.net, dit omdat ik toch is Wordpress echt wil gaan gebruiken.

De nieuwe RSS: http://feeds.feedburner.com/born2codenet/

Wednesday, June 14, 2006

Torrent site voor Windows Vista

Omdat Microsoft zelf geen heil zag om de publieke Windows Vista beta te verspreiden via het bekende Torrent netwerkt hebben Chris Pirillo en Jake Ludington een site opgezet.
Ze hebben de 32bit en 64bit editie van Microsoft gedownload en een tracker opgezet om deze weer te verspreiden.

Dus heb je Windows Vista beta nog niet gedownload omdat de doorvoersnelheid via de officiele servers niet echt snel gaat dan kun je zeker de gok wagen en surf naar vistatorrent.

Tuesday, June 13, 2006

Intellisense voor SQL Server

Waar Microsoft het balletje al veelste lang laat liggen pakt Red Gate hem op. Eindelijk is het zover, intellisense voor SQL Server met SQL Prompt. Deze gratis tool van Red Gate maakt het mogelijk om van het gemak van intellisense te genieten in devolgende producten:

  • Microsoft Query Analyzer
  • SQL Server 2000 Enterprise Manager
  • SQL Server 2005 Management Studio
  • Visual Studio 2003
  • Visual Studio 2005
  • UltraEdit32.
Download SQL Prompt nu snel, want het is gratis en doe het snel, want je kunt hem gratis downloaden tot 1 September 2006!
http://www.red-gate.com/products/sql_prompt/index.htm

Tuesday, April 18, 2006

Eindelijk een echte OS voor de I-Mac

Apple is bezig met een nieuwe major release voor hun Mac OS X die het mogelijk maakt om Windows XP te runnen op een Intel based Mac.

Mac OS gebruikers kunnen de publieke BETA al downloaden, Boot Camp.

Wednesday, February 01, 2006

Public release

En daar is hij dan! De public release van Internet Explorer 7 BETA2!

http://www.microsoft.com/windows/IE/ie7/ie7betaredirect.mspx

Thursday, December 29, 2005

Print een specifiek gedeelte van je pagina met ASP.NET

Je hebt bijvoorbeeld een mooie pagine met een header, footer en een DataGrid. Nu wil je alleen de DataGrid of iets anders printen? Geen probleem, zorg dat hetgene wat je wilt printen binnen een <div></div> staat.

Alles wat zit binnen de div tag's bevind kunnen we nu printen. Hier voor hebben we een klein stukje javascript nodig.

<script language=javascript>
function DoPrint()
{
   var content = document.getElementById("printDiv");
   var printWindow = window.open('','','toolbar=0,scrollbars=0,status=0');
   printWindow.document.write(content.innerHTML);
   printWindow.document.close();
   printWindow.focus();
   printWindow.print();
   printWindow.close();
}
</script>


Zorg ervoor dat je het ID van de Div in de getElementById method zet als argument. De HTML code zou er dan zo uit moeten zien. Het gedeelte wat zich binnen de Div bevind, in dit geval een DataGrid, zal worden geprint.

<div id="printDiv">
   <asp:datagrid>
      ...
   </asp:datagrid>
</div>
<img onclick="javascript:DoPrint(); src="PrintImage.jpg" />
</div>

Monday, October 31, 2005

Assertation vs. Exceptions en wanneer

Een lastige vraag is nog steeds: wanneer gebruik je nou Assert's en wanneer nou Exceptions?

Ik hou niet van het GIGO (Garbage In, Garbage Out) concept, maar van het GIEO (Garbage In, Error Out) concept. Dit houd dus in dat ik eigelijk alles controleer, maar wanneer nou met een Assert en wanneer met een Exception?

Persoonlijk gebruik ik Asserts alleen voor test cases, dus voor Unit testing bijvoorbeeld, of voor warnings (huh, Asserts voor warnings? Jaja, uitleg komt zo). Het komt er in ieder geval op neer dat ik ze alleen gebruik in de ontwikkelings fase.

Een mooi voorbeeld van Assertation is het Dispose Pattern, waarbij er een Debug.Assert word gedaan in de destructor van een Disposeable object. Is dispose niet aangeroepen voordat de destructor word aangeroepen door de Garbage Collector dan krijg je een mooie Assert message voor je neus.
Hier word alleen Debug.Assert gebruikt, wat inhoud dat je alleen een Assert message voor je neus krijg als je compiled met de DEBUG flag. Dit is ook gewenst, want je wilt niet in je Release build ook nog Assert messages krijgen want het is niet zo dat de hele boel in de honder loopt als Dispose niet eerst is aangeroepen. Maar tijdens de ontwikkelings/debug fase is dit wel gewenst.
Hier is de Assert dus eigelijk meer een warning. Hij dwingt je wel af Dispose aan te roepen in de ontwikkelings fase maar bij een Release build is er niets aan de hand.
Een Assert is hier volledig op zijn plaats imho.

Maar voor validatie van arguments van een method vind ik assertion iets minder geschikt, zelf zeer erritant. Ik zou zelfs geen andere situatie weten te noemen waar ik Assert zou toepassen.

Het controleren van Arguments doe ik altijd dmv Exceptions, het nadeel hiervan kan zijn dat er een hoop dubbel word gecontroleerd.
Bijvoorbeeld in de volgende code:

http://pastebin.com/412178

Hier word bij elke Method op null waarde gecontroleerd. Bij de Lock en Unlock methods zou je dit ook kunnen negeren. Alleen dit is niet altijd wenselijk.
Dit is defencive code, alleen er word wel een hoop dubbel gecontroleerd.

Vanaf ProcessOrder weten we al dat order niet null is dus is eigelijk de check bij Lock en Unlock order overbodig. Je zou een Debug.Assert kunnen gebruiken zodat het tijden de ontwikkelings fase wel word gecontroleerd maar bij Release build niet meer.

Hoe kijken jullie hier tegen aan?

Friday, October 14, 2005

Virtual CD-Rom

Zoals vele gebruik ook ik Daemon tools om ISO image bestander te mounten. Maar zoals ik heb nooit geweten dat Microsoft ook een tool bied die deze mogelijkheid bied, maar na het lezen van de blogpost van Jan Schreuder weet ik het wel.

Alle credits gaan naar Jan en ik ga fijn is even deze tool bekijken!

Tuesday, September 27, 2005

Google Web Accelerator

Google heeft Web Accelerator BETA vrijgegeven. Een nieuwe tool om website's sneller te laden.
Ik moet zeggen dat ik geen verschil merk terwijl de google accelerator toch al aangeeft dat ik in 5 minuten al 9.6 seconden heb gewonnen dankzij de google accelerator.

als je google web accelerator nu wilt downloaden krijg je vrolijk de volgende melding te zien:

Thank you for your
interest in Google Web Accelerator.
We have currently reached our
maximum capacity of users and
are actively working to increase
the number of users we can support.


Natuurlijk hebben we hier geen zin in dus heb ik even een mirror opgezet voor het installatie bestand zodat ook anderen er nog van kunnen genieten.

Je kunt de mirror hier vinden.

Monday, September 19, 2005

Foreach vs. Enumerator

Jorrit Postma maakte de opmerking in een discusie dat een foreach kostbaarder zou zijn dan het zelf door een enumerator lopen.

Ik wou dit niet geloven en ben is gaan kijken wat voor MSIL code er word geproduceerd.

Als we devolgende code pakken met een foreach:

[STAThread]
static void Main(string[] args)
{
   foreach(string arg in args)
   {
      Console.WriteLine( arg );
   }
}


En devolgende code met een IEnumerator:

[STAThread]
static void Main(string[] args)
{
   IEnumerator enumerator = args.GetEnumerator();

   while(enumerator.MoveNext())
   {
      Console.WriteLine( enumerator.Current );
   }
}


Resulteerd dit in bijde bevallen devolgende MSIL:

.method private hidebysig static void Main(string[] args) cil managed
{
   .entrypoint
   .custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 )
   // Code size 27 (0x1b)
   .maxstack 2
   .locals init ([0] string arg,
      [1] string[] CS$00000007$00000000,
      [2] int32 CS$00000008$00000001)
   IL_0000: ldarg.0
   IL_0001: stloc.1
   IL_0002: ldc.i4.0
   IL_0003: stloc.2
   IL_0004: br.s IL_0014
   IL_0006: ldloc.1
   IL_0007: ldloc.2
   IL_0008: ldelem.ref
   IL_0009: stloc.0
   IL_000a: ldloc.0
   IL_000b: call void [mscorlib]System.Console::WriteLine(string)
   IL_0010: ldloc.2
   IL_0011: ldc.i4.1
   IL_0012: add
   IL_0013: stloc.2
   IL_0014: ldloc.2
   IL_0015: ldloc.1
   IL_0016: ldlen
   IL_0017: conv.i4
   IL_0018: blt.s IL_0006
   IL_001a: ret
} // end of method Class1::Main


Dus een foreach of zelf door een enumerator heenlopen maakt kwa preformens geen verschil, maar voor leesbaarheid wel. Een foreach is leesbaarder en is niet duurder.

Tuesday, September 13, 2005

Gratis seminar: Secure Code

Om maar even in de trant van gratis bijeenkomsten te blijven wil ik toch de gratis seminar van WiBu system even onder de aandacht brengen.

Het gaat om 2 seminars, Secure Code en Secure .NET code. Wij zullen donderdag 22 september aanwezig zijn in de Kopere Hoogte in Zwolle voor de Secure Code seminar.
Ik ben heel erg benieuwd naar hun visie, ze zullen hun eigen producten uitleggen maar zullen ook het beveiligen van software in het algemeen onder de loep nemen.

De gratis seminars zijn o.a. in: Amerfoort, Rotterdam, Eindhoven, Utrecht, Liege, Breda, Schiphol-rijk.

Schrijf je in en ontvangen ook nog een CodeMeter pakker ter waarde van € 100 gratis.

Voor meer informatie en inschrijvingen, kijk op http://www.wibu.be/.

Thursday, September 08, 2005

Gratis Microsoft TechNet/MSDN Briefing

In de agenda van Microsoft TechNet/MSDN Briefings lezen we dat er weer een nieuwe gratis evenement voor de deur staat.

Zoals we gewent zijn bestaat het weer uit vier tracks:

Meer informatie vind je hier.