Filed Under (CRM) by Christiaan van Bergen on May-14-2008
Wanneer je ontwikkeld in CRM en met verschillende collegae niet een zelfde CRM server deelt, dan komt er vast en zeker een moment dat je de wijzigingen die je hebt gemaakt moet delen. Dit kan je doen door het exporteren van je ‘customizations’ op de ene server en dit xml-bestand in de andere server te importeren.
Zo’n import van customizations moest ik onlangs ook uitvoeren. Het lukte helaas niet. Was het bestand corrupt? Een duidelijke melding kreeg ik niet. Gelukkig bood de event viewer uitkomst door mij te voorzien van deze ‘warning’ van ASP.NET 2.0.50727.0:
Event code: 3004 Event message: Post size exceeded allowed limits.
Okay, het bestand dat ik wilde uploaden was bijna 10 Mb groot. De grootte van het bestand zou inderdaad best eens het probleem kunnen zijn. Op naar de web.config dan maar, normaal gesproken de plek waar je zoiets aanpast. En inderdaad.
Open de web.config van de CRM-server webapplicatie. Zoek op ‘httpRuntime‘. Wanneer je deze node gevonden hebt, zal je twee attributen aantreffen.
De executionTimeout is de instelling voor het aantal seconden dat een willekeurige http handeling door de server mag duren gemeten in seconden. De maxRequestLength geeft de maximale grootte aan in kilobytes van een te uploaden bestand. Ik verander de maxRequestLength in 10240 en ik kan mijn customizations.xml bestand van 10 Mb moeten inlezen. Voila.
Houd er rekening mee, dat er zich in de web.config meerdere httpRuntime secties kunnen bevinden. Bekijk de verschillende gevallen en bepaal keer op keer of je ze wil aanpassen of niet.
Het is aankomende 24 april weer de vierde donderdag van de maand. Een reguliere sessie met een niet zo reguliere gast. De avond wordt gehost door Sogyo en is zoals altijd weer gratis toegankelijk.
Via de Microsoft Security Newsletter werd ik gewezen op de site HelloSecureWorld. Een apart vormgegeven site met allerlei zeer bruikbare informatie in de vorm van video-interviews, teksten en virtual labs. Alleen al vanwege de visuele opzet de moeite waard om eens te kijken.
Het doel van deze site: de ontwikkelgemeenschap bewust maken van mogelijkheden en noodzaak beveiliging al op codeniveau toe te passen.
Een kleine greep uit de onderwerpen die op dit moment op de site staan:
- Hashing algorithms
- Asymetric/symetric encryption
- ASP.Net site security
- SQL-injection
- Cross site scripting
- Storing keys in containers
- Imperative Security checks
- Create a Generic/Windows Principle
- Nested master pages
Op de een of andere manier blijf ik een zwak houden voor dit soort ‘hackers’ of ‘matrix’ achtige sites.
Microsoft Security Newsletter - link HelloSecureWorld site - link
Filed Under (Overig) by Christiaan van Bergen on March-20-2008
Vanmiddag vernam ik via het nieuws op de radio dat Hugo Claus vandaag op 78-jarige leeftijd is overleden. Velen kennen hem van zijn boeken (meest bekend is denk ik ‘ Het verdriet van België’, ook als mini-serie op tv geweest) of zijn kunstwerken. Tijdens mijn studie heb ik verschillende van zijn werken gelezen.
Later op de dag, ik kwam thuis en pakte de krant van vanochtend, las ik dat Arthur C. Clarke ons ook heeft verlaten. Hem kennen we in ieder geval van 2001: A Space Odyssey. Geschreven in 1958 en later in 1968 meesterlijk verfilmd door Stanley Kubrick.
Beiden hebben op mij toentertijd een enorme indruk gemaakt, al verwacht ik dat het merendeel van ons IT-ers zich met name HAL 9000 zal herinneren en niet Louis Seynaeve.
Dit soort gebeurtenissen zetten mij aan om nogmaals het werk van deze twee te bekijken en eens verder te kijken dan hun meest gangbare werken. Geloof me, het is de kleine moeite waard.
Memento mori..
Een boekverslag van Het verdriet van België - link Hugo Claus - link Arthur C. Clarke - link 2001: A Space Odyssey - link HAL 9000 project - link
Filed Under (C# code) by Christiaan van Bergen on March-6-2008
Wanneer je in Visual Studio 2008 een Web Reference aanmaakt en je maakt gebruik van het .Net Framework 2.0 voor je project, dan krijg je exact dezelfde wizard als in Visual Studio 2005. Heb je echter een project gestart dat gebruik maakt van het .Net Framework 3.x, dan is de wizard anders (het heet zelfs Service Reference). Wat wanneer je een project maakt met het 3.x framework maar je wilt toch een web reference maken op de 2.0 manier?
Simpel, voeg een Service Reference toe. In de dialoog die zich opent klik je onderin op de knop "Advanced…".
In het scherm dat opent kies je voor "Add Web Reference…".
Het scherm dat nu verschijnt moet je herkennen als zijnde de wizard die je ook in de eerdere versies van Visual Studio had. Het toevoegen van een Web Reference.
De code die nu gegenereerd wordt is gebaseerd op .Net Framework 2.0. Maar wanneer je het project compileert, gaat het uiteraard wel tegen .Net Framework 3.x
Filed Under (Overig) by Christiaan van Bergen on February-5-2008
Afgelopen vrijdag was het dan zover. 1 Februari 2008, afsluiten van het één en beginnen met het ander. Een goede tweeëneenhalf jaar heb ik bij Bergler ICT gewerkt en verschillende mooie klussen mogen uitvoeren. Maar nu is dan de tijd aangebroken dat ik me met echt leuke dingen mag gaan bezighouden -deed ik dat dan al niet?
De laatste paar keer dat ik omschreef wat ik ging doen bestond uit: "ik sluit me op een zolder op en ga proggen". Ik heb onder andere een paar leuke ideeën/toepassingen voor het mobiele platform die ik wil maken.
Om dit te kunnen realiseren heb ik natuurlijk wel een partner nodig die me ondersteunt in mijn ‘ventures’. Deze partner heb ik gevonden in de JNF Groep BV. Van die zolder zal dan ook gelukkig weinig komen daar zij pas een nieuw pand hebben betrokken in Veenendaal waar ook ik mij zal vestigen. De handelsnaam waaronder ik zal gaan opereren is NoNerds. De site en vormgeving is er nog niet maar zal te zijner tijd trots worden getoond.
Nieuwe uitdagingen weten mij te enthousiasmeren, ik hoop jullie ook. En als dat zo is, schroom dan niet met mij contact op te nemen, if you catch my drift.
Filed Under (Overig) by Christiaan van Bergen on January-26-2008
Regelmatig krijg ik email van mensen die een geweldige keuze hebben gemaakt in het type virusscanner. Ik weet namelijk precies welke virusscanner ze hebben omdat het onderaan hun email als signature is toegevoegd. Signatures die elke keer vermeerderen wanneer ze op een thread antwoorden.
Buiten het feit dat ik het niet mooi vind -want wat maakt dat nou uit- is het niet erg handig voor de malafide emailontvangers. Stel, ik ben een niet zo frisse jongen en ik zie dat iemand een virusscanner heeft van het type X met een update van datum drie-weken-terug. Het is dan voor mij makkelijk die persoon een bericht te sturen met een ‘grap’ die niet door zijn scanner wordt gezien. Wellicht wat ver gezocht, maar toch. Informatie die je niet wil prijsgeven denk ik.
De toegevoegde waarde voor mij als ontvanger is trouwens gering in de boodschap dat het bericht gescand is door scanner X. Wie zegt mij dat dit waar is. Ik vertrouw wel op mijn eigen scanner. Daar heb ik anderen niet voor nodig.
Goed, de boodschap is simpel. Zet die meldingen uit! Alsjeblieft. Laat mij een voorzet geven door je uit te leggen hoe je dit in AVG doet.
Dubbelklik op het AVG icoon in je tray. Het volgende scherm opent zich. Selecteer hier de E-mail Scanner en klik op properties.
In het volgende scherm klik je op ‘configure’.
In het scherm dat nu verschijnt zet je de twee vinkjes voor ‘Certify mail’ uit. Klik op Ok.
Klik weer op Ok, en sluit het AVG Control Center. Et voila. Je bent verlost van de meldingen.
Andere virusscanners hebben uiteraard andere wijzen om deze functionaliteit uit te bannen. Laat ons dit doen. Alsjeblieft.
Filed Under (Overig) by Christiaan van Bergen on January-25-2008
Een tijd terug was er een incident op de werkvloer met betrekking tot het gestolen zijn van laptops van verschillende medewerkers. Uiteraard zullen de laptops voor hun straatwaarde zijn gestolen en niet vanwege hun content, het risico voor data-misbruik is klein. Management was toch in rep en roer omdat er nu een potentieel gevaar was dat sourcecode op straat was beland. Dit was echter niet aan de orde daar de harde schijven versleuteld waren, zo werd gezegd. Maar is dit wel zo?
Windows Vista heeft een mooie schijfencryptie ingebouwd, BitLocker genaamd. Zelf gebruik ik op mijn WinXP machine True Crypt. Zo op het eerste gezicht stel je je data hiermee veilig -niet tegen verlies uiteraard. De methode die gehanteerd wordt is het on-the-fly en- en decrypten van data middels een sleutel. Deze sleutel bevindt zich in het RAM-geheugen en daar ligt nu net het gevoelige punt.
Enkele studenten van Princeton University tonen aan dat het relatief eenvoudig is de sleutel uit het RAM geheugen te trekken. In een zetten zij uiteen hoe ze dit doen. Ja, je hebt wel fysieke toegang tot de machine nodig. Laat dit nu net het geval zijn bij diefstal.
Ik weet nog niet of dit een impact gaat hebben hoe ik met mijn schijfencryptie zal omgaan. Het erover nadenken of ik het moet veranderen en hoe ik dat dan zal doen is in ieder geval wel in gang gezet. Wil ik dit eigenlijk wel? Is de data op mijn machine zo belangrijk voor anderen dat zij daarom mijn laptop zouden stelen. Waarschijnlijk zoals bij de rest van ons: de data is voor mij van belang. Laat ik zorgen dat ik goede backups maak. Misschine is SkyDrive van Windows Live een optie? Nee, niet voor het echte werk.
BitLocker - link TrueCrypt - link Lest We Rember: Cold Boot Attacks on Encryption Keys - link SkyDrive - link
Gisteravond vertelde ik bij de maandelijkse bijeenkomst van de dotNed gebruikersgroep over mijn ervaringen met Script# en haalde ik het inmiddels veel besproken Volta aan. Het was een prettige bijeenkomst waarbij zeker de mooie locatie een grote rol heeft gespeeld. InterAccess heeft als host wederom een erg goede indruk achtergelaten.
Ondertussen is inderdaad de aanzet gemaakt voor het schrijven van een codeproject.com artikel waarin Robertjan Tuit, Jasper Gilhuis en ik zullen beschrijven hoe je een projectstructuur zo opzet dat je op een eenvoudige wijze webcontrols kan schrijven met behulp van Script#. Matthijs Krempel (InterAccess) bracht ons op het idee om deze projectaanpak te plaatsen in een software factory en vervolgens te plaatsen op codeplex. Briljant plan! Eens zien hoe snel we hieraan toe komen.
Een ander project dat wij op Codeplex willen plaatsen, is de Script# compatibiliteitslibrary voor de Ajax Control Toolkit. Meer hierover zodra dit beschikbaar is en uiteraard alvast de uitnodiging om daaraan te zijner tijd mee te bouwen.
Zoals beloofd plaats ik mijn presentatie en gebruikte demos online en geef ik nog een opsomming van resources die van belang zijn.
Wanneer ik meer resources tegenkom, zelf maak of van jou te horen krijg, zal ik ze toevoegen aan de lijst welke je het eenvoudigst kan bekijken op mijn Links pagina.
Filed Under (C# code) by Christiaan van Bergen on January-22-2008
Zoals velen natuurlijk al weten kan je xml-data middels een stylesheet weergeven op een door jou gewenste manier. Je kan in de zgn. xslt gebruik maken van xpath queries en diverse transformaties. Maar op het moment dat je je niet zo’n held voelt op dit gebied dan moet het toch prettig zijn te weten dat je kan terugvallen op je vertrouwde C# (of andere .Net taal).
Voordat je je eigen code vanuit xslt kan aanroepen moet je uiteraard wel wat voorbereidend werk verrichten.
Laten we eens kijken naar onderstaande code. Deze method Transform krijgt een string die de xml data en een string die de stylesheet bevat. Deze twee worden samengevoegd en het uiteindelijke resultaat wordt als string teruggegeven.
public static string Transform(string xmlData, string xslStylesheet)
{
TextReader textreaderxml - new StringReader(xmlData);
XmlTextReader xmlreaderxml = new XmlTextReader(textreaderxml);
TextReader textreaderxsl = new StringReader(xslStylesheet);
XmlTextReader xmlreaderxsl = new XmlTextReader(textreaderxsl);
XPathDocument xpathdocument = new XPathDocument(xmlreaderxml);
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(xmlreaderxsl);
StringBuilder sb = new StringBuilder();
TextWriter tw = new StringWriter(sb);
XsltArgumentList args = new XsltArgumentList();
args.AddExtensionObject(“http://voorbeeld.xslt.nl/calculatie”,
new XsltCalculatie());
xslt.Transform(xpathdocument, args, tw);
return sb.ToString();
}
De uiteindelijke transformatie van de xml volgens de stylesheet gebeurt in regel 18. Maar daar voor (regel 4) wordt een verwijzing gemaakt naar http://voorbeeld.xslt.nl/calculatie. Dit is een utility class geschreven in C# die de functie Round bevat. (Toegegeven, dit is natuurlijk niet spannend)
public Decimal Round(Decimal a, int b){ return Math.Round(a, b);}
Deze C# code wordt in regel 17(-18) in de Transform method toegevoegd aan de stylesheet als zijnde de plek waar gekeken moet worden voor elke verwijzing naar http://voorbeeld.xslt.nl/calculatie (ofwel Local)
De uiteindelijke output van de method Transform en het gewenste resultaat: