Na de meivakantie, op een dag dat ik thuis aan het werk was, kwam mijn vrouw naar zolder en liet me een gedichtje lezen dat mijn zoontje van 7 (met enige hulp van zijn moeder) voor mij had gemaakt. Ik las het gedicht en merkte dat het bezoek aan de Eifeltoren voor hem een indrukwekkende ervaring is geweest. Hij had al geprobeerd om de toren van lego na te bouwen en ik heb hem beloofd om dit op een druilerige dag ook nog eens samen te proberen. Ik lees hem bijna elke avond voor en dan zingen we samen vaak een paar liedjes. Het is erg leuk om dan een gedichtje te lezen waarin je flarden van een liedje in kunt herkennen.
Mijn vrouw en mijn zoontje hadden het gedichtje gebruikt als motivatie bij de verkiezing van de beste papa van Nederland. Ik probeer de juiste balans te vinden tussen werk en thuis. Vaak heb je als vader het gevoel dat je tekort schiet. Alleen al het feit dat ze de moeite hadden gedaan aan deze verkiezing mee te doen, gaf mij daarom veel voldoening. Maar het werd nog mooier!
Systeem Integratie is een fascinerende tak van de automatisering. Wat ooit begon als losstaande eilandjes kan op een mooie dag zomaar met elkaar verbonden worden. Nou ja, zomaar: ons werk heet dan wel automatisering maar dat betekent natuurlijk niet dat alles zomaar vanzelf gaat. Jaren geleden heb ik een Meldingensysteem gemaakt waarmee je fouten en wensen in applicaties kunt registreren. Hierbij kun je een prioriteit en een streefdatum invullen en ook bijhouden welke aanpassingen je hebt gedaan bij een melding. Als je daarbij ook releases bijhoudt, is het bovendien een prima basis voor releasenotes.
De mensen die mijn blog een beetje gevolgd hebben, weten dat ik recent bezig ben geweest met de applicatie Remember The Milk (RTM) : een tot do lijst waarbij je online taken kunt beheren. Sinds kort heb ik op eenvoudige wijze een koppeling gemaakt tussen deze twee applicaties. Het idee is dat er vanuit de database van het meldingensysteem een e-mail wordt gestuurd naar mijn geheime RTM e-mail adres, voorzien van relevante tags. Iedereen die zich aanmeldt bij RTM krijgt een ‘geheim’ e-mail adres. Wanneer je een bericht stuurt naar dit e-mail adres, wordt hiervan een taak voor je aangemaakt. Door in deze mail speciale codes op te nemen, kun je direct bepaalde kenmerken meegeven, zoals een categorie of een duedate.
De blunder op de 10 km van Sven Kramer op de Olympische Spelen in Vancouver houdt Nederland meer bezig dan de val van Balkenende IV. Iedereen ging er vanuit dat Kramer de gouden medaille hier wel even op zou halen. En anders dan bij de WK voetbal, waarbij we de kansen van ‘onze’ jongens vaak veel te hoog inschatten, was de verwachting hier best reëel: de afgelopen vier jaar heeft hij op één wedstrijd na alle 10 km ritten gewonnen waar hij aan meedeed.
In mijn vorige blog schreef ik over een handig tooltje dat ik heb herontdekt: Remember The Milk – deel 1. Deze keer wil ik iets dieper op ingaan. RTM biedt de mogelijkheid om tags aan je afspraken toe te voegen. Hier kun je dan weer op groeperen. Van deze tags wordt een Task Cloud gemaakt: een visuele weergave van je takenlijst. De grootte van het font geeft aan dat er veel taken zijn of veel taken met een hoge prioriteit.
Om een beetje overzicht te houden bij de taken die ik moet uitvoeren, vind ik het makkelijk om een lijstje te maken. In Outlook kun je taken toevoegen en deze zijn vervolgens weer te synchroniseren met een mobiele telefoon. Dit werkt op zich best goed.
Als je net als ik op meerdere computers werkt, is het handiger om het lijstje online bij te houden. Hiervoor bestaat een handige applicatie: Remember The Milk, ook wel RTM genoemd. De professionele versie is niet gratis maar de instapversie wel. Je kunt taken maken met verschillende categorieën (werk, hobby, etc.) en tags toevoegen om diverse selecties mee te maken. Het aardige van Remember The Milk is dat je ook de mogelijkheid hebt om een e-mail te sturen die vervolgens automatisch omgezet wordt naar een taak. Kijk, dan wordt het interessant voor ons soort mensen! Ik heb een kleine applicatie gebouwd om vanuit een tabel met datums een aantal herinneringen aan te maken en deze te e-mailen naar mijn eigen RTM e-mail adres. In een volgend bericht wil ik hier verder op in gaan.
Nee het is geen typefout: er staat echt Pasen in de titel en geen Kerst! Het is een beetje een dooddoener; een antwoord dat je bijvoorbeeld kunt geven als je kinderen vragen wanneer we naar Disneyland gaan… “Als Pasen en Pinksteren op dezelfde dag vallen”, zeg je dan, of “Als Pasen op een vrijdag valt”. Dit jaar valt eerste Kerstdag echter wel op een vrijdag. Er zijn vast veel mensen die het jammer vinden dat ze dit jaar op tweede Kerstdag geen extra vrije dag hebben. Het is nu eenmaal een vaststaand feit dat we ieder jaar op 25 en 26 december Kerst vieren. De datum waarop het Paasfeest gevierd wordt, is minder makkelijk te achterhalen.
Lees verder…
De afgelopen weken kreeg ik van twee verschillende klanten een vrijwel identieke vraag. De ene klant wilde een uitbreiding in een bestaand programma om bij een bepaalde datum de eerstvolgende werkdag te bepalen. De andere wilde in een document een datum afdrukken waarop uiterlijk gereageerd kan worden. Voor deze datum geldt als regel dat men 20 dagen de tijd krijgt om te reageren. Als oplossing voor beide vragen heb ik een SQL functie gebruikt.
Bij DTS zullen de meeste lezers aan het volgende bedrijf denken: DTS Meppel. Dat is natuurlijk prima, niets mis mee. Ik vermoed echter dat er ook lezers zijn die de afkorting DTS kennen vanuit SQL Server. DTS staat dan voor Data Transformation Services. Over die DTS gaat het hier. In de Enterprice Manager van SQL Server 2000 heb je de mogelijkheid om een DTS package te maken. Vanaf SQL Server 2005 is DTS in mijn ogen volwassener geworden. De DTS functionaliteit zit echter wel een beetje verstopt en is verweven met Visual Studio. Deze integratie kom je ook tegen in de naamgeving SSIS (SQL Server Integration Service). Onder deze afkorting kun je op Internet meer voorbeelden vinden.
Een probleem waar jullie natuurlijk zelf nooit tegenaan lopen maar andere ontwikkelaars wel, is dat het soms lastig is om een oude applicatie die je ooit hebt geschreven na een paar maanden / jaren nog te begrijpen. Om nog maar te zwijgen over de ellende die je tegenkomt wanneer je hele lappen code van een collega moet bestuderen. Met DTS heb je de mogelijkheid om op een gestructureerde manier een proces samen te stellen. In plaats van een hele brij code is het meer een kwestie van componenten bij elkaar slepen en hierbij de juiste properties in te stellen.
Ok, tijd voor een voorbeeld:
De laatste tijd ben ik weer regelmatig bezig met het maken van kleine aanpassingen in bestaande Visual Basic 6 applicaties. Ik heb daarbij vaak heel veel vensters met code geopend. CTRL + F4 dan maar om alles af te sluiten. Het is daarbij vervelend dat je in VB6 niet bij de instellingen kunt opgeven dat je het venster met code maximaal wilt vergroten. Het schijnt dat VB5 deze optie nog wel had.
Niet voor één gat te vangen, vond ik de registry instelling waarmee je deze vergeten optie zelf kunt instellen. Ik dacht dit even snel te doen met uitvoeren –> regedit.
Voor een uitbreiding van een website bij mijn opdrachtgever kreeg ik laatst het verzoek om een stored procedure te maken waarmee je documenten uit een database kunt vinden. Als zoekcriterium kun je hiervoor oa. een aantal woorden invullen dat binnen de tekst moet voorkomen. Voor deze stored procedure heb ik dynamisch SQL gebruikt. Dynamisch heeft hier de betekenis dat je de query runtime opbouwt en dan pas uitvoert. Deze techniek zul je niet vaak gebruiken, omdat juist de kracht van stored procedures is dat deze vooraf gecompileerd zijn en daardoor snel het gewenste resultaat opleveren. Ook zul je hierbij bewust moeten zijn van het gevaar van SQL injection. Bij deze opdracht heb ik toch voor dynamische SQL gekozen, omdat het aantal zoekwoorden kan variëren van 0 tot meer dan 10.
De totale stored procedure (SP) is te lang om hier in z’n geheel weer te geven. Dit verhaal zou dan ook voor sommigen saai en langdradig worden en dat is nu net wat je niet verwacht bij een artikel met ‘Dynamisch’ in de titel. Om de vaart erin te houden, wil ik in dit blog daarom de belangrijkste onderdelen even kort benoemen. Wie weet helpt het iemand op weg die ook met dynamisch SQL wil werken. Ik ben overigens best benieuwd naar andere voorbeelden van geschikte toepassingen van deze techniek.