• Ik heb gelijk het gevoel

    Ik heb gelijk het gevoel dat dit niet de juiste manier is om dat beeld aan te maken. Het kan toch niet zo simpel zijn?

    <cffile action=”WRITE” file=”#expandpath(listlast(eventXML.xmlRoot.xmlChildren[thisEvent].SYS_composite_268304.path.xmlText,”/”))#” output=”#toBinary(eventXML.xmlRoot.xmlChildren[thisEvent].SYS_composite_268304.data.xmlText)#”>

    Effe tsjekke.

  • En dan nu: BASE64 proberen

    En dan nu: BASE64 proberen decoden. Hrm. Het beeld zit in een tag met de naam SYS_composite_268304. Zou die in de volgende versie dezelfde naam hebben?

    En in het algemeen: ik heb er geen flauw idee van of dat gaat lukken met die BASE 64. Maar: wel een beetje opwindend 🙂

  • Niet slèkt: reading and parsing

    Niet slèkt:

    reading and parsing event XML


    reading testEvenement.xml took 450 ms

    parsing eventXML took 22524 ms

    eventXML contains 1487 events






    looping over events


    TestNaam

    Schaken door de eeuwen heen

    test Oostendse Salsanachten
    […]
    FATALE VROUWEN

    KERSTTAFERELEN WASSEN BEELDJES
    looping over 1487 events took 1022 ms

  • Magnifiek. Culprit gevonden. Er staat

    Magnifiek. Culprit gevonden. Er staat op lijn 104.204 bijvoorbeeld dit:

    <KL_Periode>08/06/2003 09/06/2003 10/06/2003 11/06/2003 12/06/2003 13/06/2003 14/06/2003 15/06/2003 16/06/2003 17/06/2003 18/06/2003 19/06/2003 20/06/2003 21/06/2003 22/06/2003 23/06/2003 24/06/2003 25/06/2003 26/06/2003 27/06/2003 28/06/2003 29/06/2003 30/06/2003 01/07/2003 02/07/2003 03/07/2003 04/07/2003 05/07/2003 06/07/2003 07/07/2003 08/07/2003 09/07/2003 10/07/2003 11/07/2003 12/07/2003 13/07/2003 14/07/2003 15/07/2003 16/07/2003 17/07/2003 18/07/2003 19/07/2003 20/07/2003 21/07/2003 22/07/2003 23/07/2003 24/07/2003 25/07/2003 26/07/2003 27/07/2003 28/07/2003 29/07/2003 30/07/2003 31/07/2003 01/08/2003 02/08/2003 03/08/2003 04/08/2003 05/08/2003 06/08/2003 07/08/2003 08/08/2003 09/08/2003 10/08/2003 11/08/2003 12/08/2003 13/08/2003 14/08/2003 15/08/2003 16/08/2003 17/08/2003 18/08/2003 19/08/2003 20/08/2003 21/08/2003 22/08/2003 23/08/2003 24/08/2003 25/08/2003 26/08/2003 27/08/2003 28/08/2003 29/08/2003 30/08/2003 31/08/2003 31/08/2004 31/08/2005 31/08/2006</KL_Perio!
    de>

    Zeer grappig: die lijn is afgebroken na 990 karakters. Never mind dat dat gedrocht waarschijnlijk beter iets zou zijn in de zin van

    <KL_Periode begin=”08/06/2003″ eind=”31/08/2003″/>
    <KL_Periode begin=”31/08/2004″ eind=”31/08/2004″/>
    <KL_Periode begin=”31/08/2005″ eind=”31/08/2005″/>
    <KL_Periode begin=”31/08/2006″ eind=”31/08/2006″/>

    of

    <KL_Periode>
      <begin>08/06/2003</begin>
      <eind>31/08/2003</eind>
    </KL_Periode>

    of iets in die zin, of zelfs dat wellicht beter een iets minder ambigu datumformaat zou gebruikt worden, of zelfs dat ik mij met de beste wil van de wereld niet kan inbeelden dat het evenement waarover het gaat dit jaar tussen 8 juni en 31 augustus gehouden wordt, maar in 2004, 2005 en 2006 telkens op één dag, 31 augustus.

    Zucht.

  • En de encoding staat zogezegd

    En de encoding staat zogezegd op ISO 8859-1, maar in de file zelf worden wel karakters gebruikt die voor Latin-1/West European ongeldig zijn. Asshats!

  • Egads! Ze hebben verdorie

    Egads! Ze hebben verdorie de beelden voor de evenementen in de XML zelf gezet! Base bloody 64 encoded. Urgh. Ik heb zoiets nog nooit gedaan.

    Eens kijken zeker? Ahem. Vijftien megabyte XML. On verra ce qu’on verra.

    Hmm. Het inlezen lukt nog vlotter dan gedacht, op het eerste gezicht. Tussen 1500 en 2500 milliseconden. En nu loopen over die XML-structuur. Dat wordt lachen vrees ik.

    Dedju! Ze leveren ons een file van honderdduizenden regels, en die is zelfs niet valide? “Expected “</KL_PERIODE>” to terminate element starting on line 101,686” weet de parser mij e vertellen. Tommetoch.

  • Bleh. Daarjuist een XML-file met

    Bleh. Daarjuist een XML-file met 1500 evenementen binnegekregen.

    Wat zou ik eerst doen? Een converteerding schrijven om die XML om te zetten naar onze structuur? Of een XSL om de inhoud te tonen op de website? Of toch maar in Delphi een zoekfunctie naar die statussen en “ontbreekt”-dingen?

    Hmmmm… Ik denk eerst eens die conversie. Alhoewel dat het vervelendste is, zou het het minst lang moeten duren. Allez dan.

  • Zitten rondprutsen in andermans code

    Zitten rondprutsen in andermans code is niet altijd even evident.

    Ik heb daarnet een eenvoudig schermpje bij de content manager gevoegd (met per node in de boom een achttal mogelijke “ontbreekt”-velden en een zevental statusvelden, van “created” over “internal validation” tot “publication”). Dat was rap gedaan: tabje bij in de node properties, hup een paar checkboxen erop, wat vieze code in GetContent om .checked laten afhangen van een veld in de database, onClick allChange aanroepen, en dan in ApplyContent wat vieze code om de database-velden te laten zetten zoals ze .checked-prperty van de checkboxen stonden.

    Ik zeg “vieze code” trouwens omdat ik geen flauw idee heb hoe ik in Delphi een variabelenaam dynamisch kan laten evalueren. Zoals het nu is, zit ik opgescheept met monstrositeiten in de zin van

    aTemp1:=strToBool(varToStr(rs.fields[‘node_temp1’].value));
    aTemp2:=strToBool(varToStr(rs.fields[‘node_temp2’].value));
    aTemp3:=strToBool(varToStr(rs.fields[‘node_temp3’].value));
    aTemp4:=strToBool(varToStr(rs.fields[‘node_temp4’].value));

    Ik zou het misschien kunnen oplossen met een structuur of een array of zo, dynamisch die checkboxen er run-time op pleuren, maar daar ben ik bang van: het is al te lang geleden en ik zou er teveel op moeten zoeken. Mocht dit ColdFusion-achtig zijn, dan zou ik verwachten iets in de zin van het volgende te kunnen doen:

    for i:=1 to 17 do
      evaluate(‘aTemp1’+intToStr(i)):=
       strToBool(varToStr(rs.fields[‘node_temp’+intToStr(i)].value));

    …maar het is dus niet iets ColdFusion-achtig, en dat lukt allemaal niet wegens alsdat die strings uiteraard tegen dat het run-time is allang geen strings meer zijn, en dus is het vies gecodeerd, waarschijnlijk weet Stijn wel hoe het eigenlijk moet.

    Enfin dus, so far so good, dacht ik, nu nog die zooi synchroniseren. Een stukje toevoegen aan TSyncThread.UpdateNode voor de synchronisatie heen:

    for i:=1 to 17 do
      AddElem(Content,’temp’+intToStr(i)).text:=
        tbl.Fields[‘node_temp’+intToStr(i)].Value;

    …en de tegenhanger in TSyncThread.TaskNode voor de synchronisatie terug:

    for i:=1 to 17 do
      tbl.Fields[‘node_temp’+intToStr(i)].Value:=
        GetElem(content,’temp’+intToStr(i))=’1′;

    Hoplaboem, niet veel later, en ik dacht dat ik klaar was. Statusje veranderen op de site, synchroniseren… niets. Ahem. Nakijken in de database, tiens, counter wordt niet geïncrementeerd op het node-object bij een edit on-line. Dus toegevoegd

    <cfscript>
      request.app.sync=request.fnEdit.getCurrentSync();
      request.app.editSync=request.fnEdit.getIncrementSync();
      request.fnObjectsEdit.updateObject(node_id);
    </cfscript>

    aan de update-actie op de site. En nog eens synchroniseren.

    Ah tiens, de gewijzigde node verdwijnt gewoon helemaal. Opsporen, zoeken, ha! Er stond

    tbl.Fields[‘node_deleted’].Value:=GetElem(content,’deleted’)=’0′;

    en dat moest zijn

    tbl.Fields[‘node_deleted’].Value:=GetElem(content,’deleted’)=’1′;

    Opgelost? Nope. Bleek dat dezelfde actie (deleted:=true als <deleted>0</deleted>) ook nog eens uitgevoerd werd op het object zelf, dus niet op de node-als-node, maar op de node-als-object.

    Aangepast, sync, juich! Het lukt!

  • Arrested for wearing “peace” t-shirt

    Arrested for wearing “peace” t-shirt

    Stephen Downs, a lawyer, was arrested for wearing a t-shirt with the text “give peace a chance” and refusing to leave the Crossgates Mall in Guilderland, New York. According to Downs, he had just purchased the t-shirt right outside the mall.

    Security guards had first ordered him to take off the t-shirt or leave the mall. When he refused, they called the police. Police officers argued that a mall was like a private house. When he still refused to take off his t-shirt or leave, he was taken away in handcuffs.

    Downs is due in court on March 17 and risks a year in prison if convicted.

    [Secular Blasphemy]

  • Verdimme tien na negen en

    Verdimme tien na negen en geen Stijn te zien. Misschien zit hij beneden bij Suzanne? Ik zit hier in ieder geval met Myriam en Koen.

  • Bij de mensen van de

    Bij de mensen van de provincie, maar Stijn is er nog niet.

    Ik heb mij dan maar zo geïnstalleerd.

    En ik ben daarjuist dan toch niet aan de pulp begonnen: het is Rise of Western Christendom geworden. Vanmorgen eventjes de inleiding gelezen, en ik was al direkt hooked. Vooral dat de mens expliciet het wetenschappelijk werk van de laatste paar jaar meeneemt, en niet een rehash doet van Henri Pirenne (die in de jaren 30 zei dat het Romeinse Rijk niet “ineengestort” is rond 500, de “barbaarse invallen” eigenlijk niet echt zo erg waren omdat het de commercie was die Europa samenhield, en dat het pas is als de islam Carthago verovert tond 700 dat de Middellandse Zee, het echte centrum van Europa, niet meer open is voor West-Europa, waardoor de Karel de Grote mogelijk wordt). Sans Mahomet pas de Charlemagne, azzet ware.

  • Ht was wel zielig vanmorgen:

    Ht was wel zielig vanmorgen: Zelie slaapt bij Sofie en Andy, en Louis is hier alleen. Hij kwam naar beneden, en al dat er uitkwam was “zusje! zusje! zusje!”.

    Och here dat kind. Het is de eerste keer denk ik dat hij wakker wordt en dat Zelie er niet bij is.

    Voor de rest: weelde! Kunnen uitslapen tot acht uur!

  • Ik zou eigenlijk heel graag

    Ik zou eigenlijk heel graag meer weten over de vroege middeleeuwen. Overgangsperiodes. Zoals in Gent tussen pakweg 400 en 500. De Romeinen waren er niet meer en Amandus was nog niet langsgeweest. De villa van Blandius op de Blandijnberg stond er misschien niet meer, maar er moeten toch zeker nog ruïnes van geweest zijn. En de mensen zullen er zeker nog in de buurt gewoond hebben. En rond Ganda, aan de Dampoort. En in Destelbergen. En in Sint-Denijs-Westrem.

    Wat deden ze toen gedurende die honderd of honderdvijftig jaar? Wie woonde er rond de samenvloeiing van Schelde en Leie en wie was het die Amandus in het water smeet? Welke goden aanbaden ze? Wat spraken ze? Wat dachten ze? Wat aten ze?

    Het einde van Calleva Atrebatum was ook rond het jaar 500. Ik vind dat de meest interessante periode in de hele geschiedenis van West-Europa, en ik ga het mij tot het einde van mijn dagen beklagen dat ik niet verder geschiedenis gestudeerd heb. So there.

  • Mja. Van zodra het op

    Mja. Van zodra het op bbc2 gedaan is over Calleva Atrebatum kruip ik in bed. Anders geraakt League of Extraordinary Gentlemen nooit uit. Sandra kijkt naar Sex & The City, dus ik heb zeker pakweg een uur tijd.

    Zucht.

    En morgenochtend dus naar de Bestendige Deputatie. Met OCX en API.

  • Nu ja, “celebrity” :)Ik ga

    Nu ja, “celebrity” 🙂
    Ik ga dan ook bijna elke dag naar de GB aan de Dampoort.

    ‘Hij ziet er nog altijd hetzelfde uit. Lange jas, lang haar, en hij werd bijna overreden aan Sint-Jacobs terwijl hij op zijn laptop aan het tikken was.’

    Guilty as charged!

    Dat zal 22 januari geweest zijn, de enige keer dat ik bijna overreden ben dit jaar. Ha, tijd dat er een goeie en goedkope tablet PC is.