Navigatie

Contact

Send mail to the author(s) E-mail

View Richard Soeteman's profile on LinkedIn

RSS 2.0 | Atom 1.0 | CDF

Archief

Categorieën

Blogroll

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

Sign In

Zoeken

# Sunday, 18 March 2007
Sunday, 18 March 2007 07:15:15 (GMT Standard Time, UTC+00:00) ( )

This Blog is not active anymore, further posts will be available on my company website. Read new posts here

Vaak wil je even snel een ASP.Net site via een webserver bekijken zonder dat je deze site in IIS wil aanmaken.  De webdevelopment server die met VS2005 meekomt is hier zeer geschikt voor. De site zal je dan normaliter wel via Visual Studio moeten openen. Hier liep ik vorige week tegenaan toen ik een nieuwe template voor mijn weblog wilde gebruiken en weer eens 5 minuten aan het configureren was.  Ik kwam er toen achter dat de webserver die Visual Studio 2005 gebruikt ook via de command line te benaderen is. Vanuit de Visual Studio 2005  Command Prompt start je deze middels "webdev.webserver.exe". Dit start de volgende dialog met de uitleg over de parameters die gebruikt kunnen worden.

webdev.webserver.exe Dialog

Wanneer ik daarna webdev.webserver.exe nogmaals startte op met de correcte parameters (webdev.webserver.exe /port:8080 /path:"d:\sites\richardsoeteman.net" /vpath:"/") werd de webserver inderdaad gestart. Het tray icoon is hiervan het bewijs. 


Vervolgens kon ik mijn weblog benaderen via http://localhost:8080/.  Dit werkt op zich al heel aardig, maar het vergt nog teveel inspanning. Je wilt eigenlijk elke website op schijf kunnen starten middels een rechtermuisklik op de folder. Daarom kwam ik op het idee om onderstaande registry aanpassing aan te brengen, zodat een rechtermuisklik op folder niveau de optie "Start WebServer Here" in het context menu beschikbaar heeft.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\OpenVSWeb]
@="Start Webserver Here"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\OpenVSWeb\command]
@="C:\\Windows\\Microsoft.NET\\Framework\\v2.0.50727\\Webdev.WebServer.exe /port:8080 /path:\"%1\""

Wanneer ik  met bovenstaande registry aanpassing rechts klik op de folder d:\sites\richardsoeteman.net geeft deze onderstaand context menu weer.  Een muisklik op "Start Webserver Here" start webdev.webserver.exe zoals we eerder gedaan hebben. Echter wordt voor de parameter "/path" de geselecteerde folder gebruikt.

Comments [1] | | # 
# Saturday, 10 March 2007
Saturday, 10 March 2007 07:52:54 (GMT Standard Time, UTC+00:00) ( )

This Blog is not active anymore, further posts will be available on my company website. Read new posts here

Je bent een paar dagen ziek en dan gebeurt er altijd van alles. Zo ook deze week, waar bekend werd dat het eerste Nederlandse Code Camp georganiseerd gaat worden.  Voor degene die niet weten wat een Code Camp is, onderstaand een kopie van de Code Camp Manifesto 

The question is what makes a Code Camp?

The answer is actually simple. In order to use the official Code Camp name and banner follow these simple protocols.

  1. By and For the Developer Community

Code Camps are about the developer community at large. They are meant to be a place for developers to come and learn from their peers. Topics are always based on community interest and never determined by anyone other than the community.

  1. Always Free

Code Camps are always free for attendees.

  1. Community Developed Material

The success of the Code Camps is that they are based on community content. All content that is delivered is original. All presentation content must be provided completely (including code) without any restriction. If you have content you don’t want to share or provide to attendees then the Code Camp is not the place for you.

  1. No Fluff – only Code

Code Camps are about showing the code. Refer to rule #1 if you have any questions on this.

  1. Community Ownership

The most important element of the Code Camp is always the developer community. All are welcome to attend and speak and do so without expectation of payment or any other compensation other than their participation in the community.

  1. Never occur during work hours

We need to understand that many times people can’t leave work for a day or two to attend training or even seminars. The beauty of the Code Camp is that they always occur on weekends.

Dit eerste Nederlandse Code Camp gaat plaatsvinden op 12 Mei a.s. en wordt gehouden in het Microsoft Innovation Center te Barneveld. De organisatie van dit evenement is in handen van de Nederlandse gebruikersgroepen SDN, VBCentral en dotNed. Ik heb er nu al zin in.

Voor meer informatie en inschrijving ga je naar www.code-camp.nl

Comments [0] | | # 
# Wednesday, 24 January 2007
Wednesday, 24 January 2007 21:54:49 (GMT Standard Time, UTC+00:00) ( )

This Blog is not active anymore, further posts will be available on my company website. Read new posts here

Ik mag Pieter Joost bedanken voor het taggen. Nu mijn beurt om 5 dingen over mezelf te vertellen die je waarschijnlijk nog niet weet, hier gaan we:

  1. Ik ben begonnen met programmeren op mijn commodore 64. Deze had ik op 13 jarige leeftijd gekocht, nadat ik hier ruim een jaar voor had gespaard. Deze commodore heeft er niet alleen voor gezorgt dat ik op jonge leeftijd met programmeren in aanraking kwam, maar heeft er tevens voor gezorgd dat ik meerdere zomers met 30+ graden binnen zat.
  2. In 2003 ben ik getrouwd met Tamara. Een jaar later is onze dochter Marijn geboren. Niet normaal hoe snel ze groot wordt. Ik weet nog als de dag van gisteren dat ze geboren werd en volgend jaar gaat ze al naar school.
  3. Mijn muzieksmaak varieert van easy listening tot knalharde rock, met een uitschieter naar goede dance. Dit tot groot ongenoegen van de buren die af en toe verplicht mee moeten luisteren. Zoals bij de meeste mensen hangt dit van mijn stemming af. Wel verheug ik me al op het concert van Faithless op 18 april
  4. In mijn vrije tijd ben ik veelal aan het klussen. Dit doe ik niet alleen omdat ik het leuk vind, maar het is ook noodzaak. We hebben in 2002 een huis gekocht waar het een en ander aan moest gebeuren. Dit jaar is de zolder aan de beurt en dat is tevens het laatste wat moet gebeuren. Whoa wat ga ik doen met al die vrije tijd...
  5. Sinds 1999 werk ik in de internet industrie(ja ik heb de Internet Bubble meegemaakt), eerst ontwikkelen in classic(crappy) ASP en daarna ASP.NET, met een tussenpose waarin ik Tridion projecten heb moeten doen. Aan Tridion word ik liever niet herinnert.
    Sinds een jaar werk ik voor Detrio Consultancy B.V.  Daar heb ik de gelegenheid mijn (ASP).NET kennis verder uit te diepen. Dit wordt overigens ook aktief door het bedrijf gestimuleerd en dat vind ik prettig.

Nu is het mijn beurt om de volgende personen te taggen:

Comments [1] | | # 
# Tuesday, 19 December 2006
Tuesday, 19 December 2006 20:13:45 (GMT Standard Time, UTC+00:00) ( )

This Blog is not active anymore, further posts will be available on my company website. Read new posts here

Ik heb met tot afgelopen week vaak afgevraagd waarom ik ooit gebruik zou maken van CLR integratie in SQL Server 2005. Totdat ik een query zag waar een Regular Expression meer op zijn plaats was geweest. Regular Expressions kent T-SQL niet, maar middels CLR integratie is dit op te lossen.

In onderstaand voorbeeld is men vergeten emailadressen te valideren. Daardoor staan er foutief geformateerde emailadressen in de database. Middels het gebruik van een Regular Expression gaan we deze in de database opzoeken. Onderstaande afbeelding toont alle data in de contacts tabel.

Code

Onderstaande code bevat de functie IsValidEmailAdress. Deze functie wordt straks ook binnen SQL Server gebruikt om te controlleren of het een geldig emailadres betreft.  De code zelf maakt gebruik van een regular expression om te bepalen of het emailadres geldig is.

using System;
using System.Text.RegularExpressions;
using Microsoft.SqlServer.Server;

public class DatabaseFunctions
{
    [SqlFunction( DataAccess = DataAccessKind.None , IsDeterministic=true) ]
    public static bool IsValidEmailAddress(string emailAddress)
    {
        Regex regex = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");
        return regex.IsMatch(emailAddress);
    }
}

Drie zaken die opvallen:

  1. We maken gebruik van de Microsoft.SqlServer.Server namespace. De Microsoft.SqlServer.Server bevat alle onderdelen die we nodig hebben voor CLR integratie. 
  2. We maken gebruik van het Attribuut SqlFunction. Aan dit attribuut geven we de volgende parameters mee :
    • DataAccess. Deze kan de waarde DataAccessKind.None, of DataAccessKind.Read bevatten. We voeren geen database acties uit, dus gebruiken we DataAccessKind.None 
    • IsDeterministic. Indien True wordt de output gecached op basis van de inputparameters en database state. We willen performance dus zetten we deze op true
  3. IsValidEmailAddress is static. Functies die binnen SQL Server worden gebruikt moeten static zijn.

Gebruik van de code in SQL Server

CLR integratie staat default uit. Middels onderstaande statements zetten we dit aan. Mocht je dit trouwens vergeten, geeft SQL Server zelf aan dat CLR integratie aangezet moet worden en ook hoe je dat moet doen.

EXEC sp_configure 'show advanced options' , '1';
go
reconfigure;
go
EXEC sp_configure 'clr enabled' , '1'
go
reconfigure;

Vervolgens registreren we onze Assembly.

CREATE ASSEMBLY CLRDatabaseFunctions FROM 'D:\CLRDatabaseFunctions.dll' WITH PERMISSION_SET = SAFE

We kunnen de functie IsValidEmailAddress niet direct aanroepen, daarom maken we gebruik van onderstaande functie(SQL) welke de CLR functie IsValidEmailAddress  wel aan kan roepen.

CREATE FUNCTION IsValidEmailAddress(@emailAddress nVarchar(255)) RETURNS bit
AS EXTERNAL NAME CLRDatabaseFunctions.DatabaseFunctions.IsValidEmailAddress

Nu kunnen we de foutieve emailadressen opvragen:

Select Contacts.* from Contacts WHERE  dbo.IsValidEmailAddress(Contacts.EmailAddress) = 0 

Dit geeft als resultaat het emailadres wat niet correct was ingevoerd.

 

Downloads en meer info

Via onderstaande links zijn de gebruikte voorbeelden te downloaden:

Verder kan je via onderstaande links meer informatie over dit onderwerp vinden:

Comments [0] | | # 
# Saturday, 11 November 2006
Saturday, 11 November 2006 08:33:13 (GMT Standard Time, UTC+00:00) ( )

This Blog is not active anymore, further posts will be available on my company website. Read new posts here

TechEd zit er helaas alweer op. Deze week heb ik een hoop geleerd, een aantal nieuwe manieren geleerd om een bepaalde techniek toe te passen. Dus mijn overall indruk van dit evenement is goed. Wel hoorde ik van veel mensen die al eens eerder bij TechEd waren geweest dat deze TechEd tegenviel en dat de sfeer niet hetzelfde was als tevoren. Ik hoop het volgend jaar te kunnen vergelijken :-)

Comments [0] | | # 
# Thursday, 09 November 2006
Thursday, 09 November 2006 23:58:19 (GMT Standard Time, UTC+00:00) ( )

This Blog is not active anymore, further posts will be available on my company website. Read new posts here

Inmiddels is het al weer drie weken geleden dat Microsoft ASP.NET AJAX Beta 1 uitbracht. Op een project waaraan ik werk maken we gebruik van ASP.NET AJAX, toen heette het nog ATLAS. Na een Upgrade kregen we onderstaande foutmelding na een postback:

 

Na enige tijd speuren bleek dit te komen doordat we gebruik maakte van de ASP.NET Tracing functionaliteit, waarbij de output direct in de browser getoond werd. Van de week kreeg ik te horen dat ASP.NET AJAX Beta 2 uit was en heb deze direct geïnstalleerd om te kijken of dit was opgelost. Ik krijg nog steeds een foutmelding na een postback, maar ik kan nu wel in één oogopslag zien wat de foutmelding inhoud. 

Comments [0] | | # 
# Wednesday, 08 November 2006
Wednesday, 08 November 2006 19:20:22 (GMT Standard Time, UTC+00:00) ( )

This Blog is not active anymore, further posts will be available on my company website. Read new posts here

Vandaag zijn we bij de opname van .NET Rocks geweest, in de vorm van een panel discussie met Carl Franklin, Richard Campbell, Stephen Forte, Roy Osherove en Kate Gregory. Het onderwerp was Agile development en mede omdat ik al een geruime tijd volgens Agile methode werk vond ik deze aflevering zeer de moeite waard. Het einde van de show is echt hilarisch Roy Osherove pakt een paar oude melodien en maakt daar "Agile songs" van. Gewoon downloaden deze show dus. Hij is vanaf 21 novemer te downloaden via de .NET Rocks site.

De meeste personen uit dit panel hielden vandaag ook een sessie. Zo begon Roy Osherove vanochtend met een White Board sessie over Test Driven Development. Deze man is echt een guru op dat gebied. Hij vroeg aan de zaal wat men wilde weten van TDD en dat was de agenda.  

Stephen Forte en Richard Campbell hielden een sessie over T-SQL Querying: Tips and Techniques. Deze sessie was grappig en toch leerzaam. Helaas viel de sessie "10 Undiscovered Features of ASP.NET 2.0" een beetje tegen. De meeste features waren helemaal niet undiscovered. Volgens mij had ik al deze onderwerpen al eens langs zien komen op een MSDN event. 

Verder nog een Hands on  LAB over Windows Workflow gedaan.  Morgen alweer donderdag , je komt echt tijd te kort hier :-(

Comments [0] | | # 
Wednesday, 08 November 2006 06:25:42 (GMT Standard Time, UTC+00:00) ( )

This Blog is not active anymore, further posts will be available on my company website. Read new posts here

Teched Europe 2006 is begonnen. De keynote werd gegeven door Eric Rudder en werd vooraf gegaan door Simon Brown. Simon Brown had Arfa Karim, een Microsoft Certified Professional van 11 jaar uitgenodigd om een door haar ontwikkelde Calculator te tonen. Nadat Simon vroeg wat er nog aan de applicatie moest gebeuren en Arfa daar op antwoorde dat de applicatie nog gedocumenteerd moest worden hoorde je uit de zaal "She's a real developer".

Verder werden er nog een aantal mooie demo's getoond. Uiteraard een demo van WPF en ATLAS en het daarop volgende succes verhaal van Otto, waar mijn collega geen vertrouwen in had omdat Otto er 8 dagen voor nodig had om de prijs van een LCD TV aan te passen.

 

 

DEV230 Developing Rich Web Applications with ASP.NET AJAX

Dat sessies snel vol zitten was me direct duidelijk. Eigenlijk had ik naar de sessie "OFF202 Windows SharePoint Services v3 and Office SharePoint Servers 2007 as a Development Platform " willen gaan. Maar bij aankomst bleek deze al vol te zitten.  Daarom snel naar deze Sessie gegaan. Het was een hele aardige sessie gegeven door Shanku Niyogi. Omdat ik al aardig wat met ATLAS heb gedaan ben ik niet veel wijzer geworden van deze sessie. Wel ben ik er nu achter dat er voor JSON Serializatie is gekozen omdat SOAP te veel overhead met zich mee brengt. 

OFF001 DEMO: Designing and Implementing a Solution with SharePoint 2007, Windows Workflow Foundation and InfoPath 2007

Een van mijn doelen voor Teched is zoveel mogelijk te weten te komen over Sharepoint Development. De demo van  Mario Szpuszta leek me daarom goed om heen te gaan. De demo liet zien hoe je zeer gemakkelijk (in demo's gaat uiteraard alles vlekkeloos ;-)) een orderformulier met InfoPath in elkaar zet, workflow aan het formulier kan koppelen en deze middels sharepoint kan publiceren zodat iedereen met een browser een order kan plaatsen. Ik ben er na deze sessie nog meer bewust van geworden dat Sharepoint 2007 en Workflow erg  groot gaan worden volgend jaar. Ik kijk er al naar uit om een project met deze nieuwe technieken te gaan doen.

DEV223 LINQ Overview

Naar deze sessie van Anders Hejlsberg had ik al de hele dag uit gekeken. Afgelopen jaar had mijn collega al eens een sessie over LINQ gehouden. Daarna heb ik LINQ eigenlijk een beetje links laten liggen. Het is me duidelijk. Ik moet hier heel snel weer aandacht aan gaan besteden. Dit onderwerp wordt echt huge in .NET 3.0. Anders liet zien hoe gemakkelijk je met LINQ data kan opvragen,groeperen ,kan combineren met andere datasources en daar bijvoorbeeld weer een xml document van kan genereren en dit allemaal geintegreerd in VB.Net of C#  3.0.

Dev203 ADO.NET Present and Future

Naar deze demo door Jackie Goldstein had ik ook uitgekeken. Veel vernieuwende zaken heb ik niet gezien maar wel weer een aantal handige tips opgedaan. Zoals het afhandelen van concurrency conflicts. Wel vind ik dat een "Software Legend" in zijn demo's altijd gebruik moet maken van best practices, hetgeen Jackie niet deed. Zo werden bijvoorbeeld queries met  string concatenation opgebouwd.

Comments [1] | | # 
# Thursday, 02 November 2006
Thursday, 02 November 2006 07:18:49 (GMT Standard Time, UTC+00:00) ( ASP.NET )

This Blog is not active anymore, further posts will be available on my company website. Read new posts here

Vorig jaar heb ik het al eens heel kort gehad over het vernieuwde compilatie en deployment model. Dit onderwerp is echter zeer uitgebreid. Rick Strahl heeft hier een zeer uitgebreid artikel over geschreven. Rick Strahl is tevens de maker van de tool die ik destijds genoemd had. Dit artikel is een must read.

Link naar het het artikel.

Comments [0] | | # 
# Tuesday, 31 October 2006
Tuesday, 31 October 2006 21:21:21 (GMT Standard Time, UTC+00:00) ( ASP.NET )

This Blog is not active anymore, further posts will be available on my company website. Read new posts here

Inmiddels is het al weer bijna twee weken geleden dat Microsoft ASP.NET Ajax Beta heeft released. Het project waar ik aan werk maakte gebruik van ATLAS en de upgrade van een CTP kostte ons slechts enkele minuten.  De upgrade van ATLAS naar Ajax .Net ging echter niet zo simpel. Dit heeft me overigens wel verbaasd heeft omdat de CTP releases erg goed waren, een gemiste kans.  Lees dit migratiedocument en let bij een upgrade op het onderstaande:

Configuratie:

De configuratie in web.config is compleet veranderd. Appendix "Manual Configuration Changes" beschrijft hoe je je huidige web.config kan aanpassen.

Aanpassing van tagprefix:

Verder is de Prefix <ATLAS:/> veranderd in <ASP:/>. Dit houdt in dat je al je verwijzingen dus kan aanpassen.  

Deployment:

Voorheen werd een losse DLL geleverd. Deze kon je in je bin folder plaatsen en je had direct ATLAS functionaliteit. In de huidige versie wordt de DLL in de GAC geplaatst. Wanneer je een deployment naar een server waar de installatie niet is uitgevoerd, bijvoorbeeld een hosting provider kom je in de problemen omdat de Microsoft.Web.Extensions DLL niet gevonden wordt. Je krijgt onderstaande foutmelding te zien:

Could not load file or assembly 'Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

De Microsoft.Web.Extensions DLL is echter wel gemakkelijk uit de GAC te halen. Je zult dit echter via de Command Line moeten doen, omdat windows explorer de Assembly folder anders weergeeft dan normale folders en de DLL's dus niet te kopiëren zijn.

  1. CMD
  2. CD c:\windows\assembly\Gac_msil\microsoft.web.extensions\1.*
  3. copy microsoft.web.extensions.dll [type hier de binfolder waar de dll geplaatst moet worden]

Meer Info

Deze post beschrijft alleen de punten die we zelf tegengekomen zijn tijdens de migratie van ons project. We zijn nog een probleem tegen aangelopen met HTTPModules waarover later meer. Voor meer informatie zie de volgende resources:

Comments [2] | | #