Nog een uur en twaalf minuten en Visual Studio.NET is ook op de portable geïnstalleerd, en dan kan ik ook in mijn trekzetel van C# doen.
En ondertussen een filmpje van Hitler en Eva Braun op het deuntje "Ich woll't ich wär ein Huhn / ich hätt nicht viel zu tun / ich legte vormittags ein Ei und nachmittags wär ich frei."
En voor ik het vergeet: run, don't walk to Amazon.co.uk (of .com natuurlijk) en koop u een exemplaar van The Rise of Western Christendom: Triumph and Diversity 200-1000 AD. Lang (lang) geleden dat ik nog zo'n goed boek gelezen heb.
Ik zie er naar uit, naar Idool 2003 volgende week.
En nu op bbc2: Secrets of leadership! Ze zullen nog verschieten maandag de mannen! Ha! Heute gehört uns der Dendermondsesteenweg, morgen die Dampoort!
Ik heb compassie met Alain. Miserie met allerlei datasources en servers en sites die niet werken, en van die symptomen die veel mensen wel meegemaakt hebben, maar waar nergens oplossingen voor gegeven worden.
't Is verdorie al ver gekomen als ik dergelijke fouten maak:
if (arraylen(tempRegion) AND tempRegion[1].xmlTekst EQ "Kust") { ... }
xmlTekst in plaats van xmlText. Zucht. En daarjuist ook al veel te lang zitten zoeken naar dacht ik een bug in XPath, en dat bleek gewoon inconsistentie in de XML-file te zijn. Overal t_Veldnaam gebruikt, maar plots stond daar een T_Veldnaam natuurlijk. Dubbel zucht.
Ik heb de succesvolle conversie gevierd met foie gras (nog twee doosjes over in de GB aan de Dampoort, ik ben echt wel de enige die daar sinds kerstdag foie gras gekocht heeft) en ierse zalm. Mmmmm.
En net een uur juridisch telefoongesprek achter de rug.
Wahey! Nu doet het wat het zou moeten gedaan hebben:
4/1486 Stereo MC's
product toevoegen - object aanmaken -
array
1
xml element
XmlName t_Gemeentenaam XmlNsPrefix XmlNsURI XmlText Brussel XmlComment XmlAttributes
struct [empty] XmlChildren Convert events
1/1486 TestNaam
product toevoegen - object aanmaken - naamveld toevoegen
2/1486 Schaken door de eeuwen heen
product toevoegen - object aanmaken - naamveld toevoegen
3/1486 test Oostendse Salsanachten
product toevoegen - object aanmaken - naamveld toevoegen
4/1486 Stereo MC's
product toevoegen - object aanmaken - gemeenteveld toevoegen - naamveld toevoegen
5/1486 Cirque Du Soleil Saltimbanco
product toevoegen - object aanmaken - naamveld toevoegen
6/1486 Tentoonstelling 'Walter de Schilder' (test)
product toevoegen - object aanmaken - gemeenteveld toevoegen - naamveld toevoegen
7/1486 Postzegelbeur, thema 'Vakantie aan zee'
product toevoegen - object aanmaken - gemeenteveld toevoegen - naamveld toevoegen
Dat is wat ik nodig had. Fijn. En dan nu; naar de GB! Eten halen!
Good heavens. Bush is weer eens op zijn diplomatische best. Hij wil een nieuwe, duidelijke voer-maar-oorlog-resolutie, en iedereen die zo'n resolutie niet steunt is de facto "de vijand", en ah ja, zelfs als de resolutie er niet door komt en er binnen een paar dagen dus geen mandaat van de VN is, dan doet Bush het allemaal wel alleen.
Internationale diplomatie is dus nu officieel een spelletje blufpoker geworden. Mein Führerpresident, I can valk!
The president is now demanding that all countries "put their cards on the table", in an all-or-nothing vote on a second resolution.
In his televised press conference on Thursday evening, Mr Bush said the issue would be resolved "within days".
[...]
"If we need to act," he said, "we will act, and we really don't need the United Nations' approval to do so." [BBC]
Die conversie blijft raar doen... Om de één of andere reden weigert het ding dit evenement te converteren:
<Evenement>
<T_GemiddeldeDuurtijd/><T_Prijsindicatie/><T_url>http://</T_url>
<SYS_composite_268304>
<name/><data>DATA::BASE64</data><mediatype/><url/><itemid/><path/>
</SYS_composite_268304>
<MV_T_Classificatie>EVENTCLASS_THEMABEURZEN</MV_T_Classificatie>
<T_Organisatie/><publicatieniveau>Regionaal</publicatieniveau><T_Plaatsen/>
<T_Frequentie/><M_Prijzen/><MV_T_Eigenschappen/>
<T_Naam>GESCHENKENBEURS</T_Naam>
<Comm_Commentaar/>
<MV_T_MenSpreekt>LANGUAGE_NL</MV_T_MenSpreekt>
<ML_M_Omschrijving><NL>geschenkenbeurs.</NL></ML_M_Omschrijving>
<MV_T_Type>EVENTTYPE_BEURS</MV_T_Type>
<Evenement_Basis.FK_Evenement__>
<itemid>447661</itemid>
<Evenement_Basis.FK_Basis__>
<itemid>447652</itemid>
<Basis_Adres.FK_Basis__>
<Basis_Adres.FK_Adres__>
<Gemeente_Adres.FK_Adres__>
<itemid>447657</itemid>
<Gemeente_Adres.FK_Gemeente__>
<t_Land/><t_Postcode/><T_PlaatsTic/><t_Gemeentenaam/>
<itemid>308519</itemid><T_Hoofdgemeente/>
</Gemeente_Adres.FK_Gemeente__>
</Gemeente_Adres.FK_Adres__>
<itemid>447654</itemid><t_Subadres/>
<t_Straatnaam>Ijzerhand</t_Straatnaam><t_Nummer>17</t_Nummer>
<t_Adresnaam>WERELDWINKEL</t_Adresnaam>
</Basis_Adres.FK_Adres__>
<itemid>447659</itemid>
</Basis_Adres.FK_Basis__>
</Evenement_Basis.FK_Basis__>
</Evenement_Basis.FK_Evenement__>
<itemid>447595</itemid>
<T_ReservatieStaus/>
<KL_Periode>07/12/2002 08/12/2002</KL_Periode>
<T_Aanvangsuur>07 & 08/12/2002 - 10.00 tot 17.00 uur.</T_Aanvangsuur>
</Evenement>
Ik ga het er voorlopig uitknikkeren, we zien dan wel wat dit eventueel gemeenschappelijk heeft met eventuele andere evenementen die eventueel ook niet zouden willen lukken.
Die Clint, het is me er eentje.
The Distinction “You are not your box,” becomes remarkably useful as soon as you turn it around and apply it to the people closest to you in your work and your home life.
We react to someone because when we encounter his or her unpleasant manifestations we take it personally. We react to them because we think that “they” are doing it to “us.”
But if we make the distinction between the other person and their Box (if we disidentify them for ourselves), then we have options for relating and communicating with them that were not available to us before.
We can start over. We do not need to conclude that the unpleasantness is coming from them, but rather from their Box.
All of a sudden, they can be okay with us again. Here is the experiment. Within the next few minutes, you are almost certain to judge someone critically and get offended. In that moment, before you generate a negative story about that person, tell yourself, “They are not their Box!”
Notice what you suddenly experience.
Netwerkproblemen blijkbaar opgelost geraakt, en dev32gent2 herstart en alles.
Netwerkproblemen, stom.
Of neen, ik ga er toch maar niet naar kijken. Nieuw form is nieuwe files in Delphi, en naamgevingen en alles, en ik kan mij inbeelden dat Stijn daar liever zelf in ingrijpt.
Alla dus. Ik ga de computer van Stijn achterlaten en naar mijn eigen bureau verhuizen.
Bon, ik ga nog eventjes kijken naar een zoekscherm voor die statussen in Delphi.
Getver. Het was te verwachten natuurlijk. Dev32gent2 is ook zo dood als een pier door die //-xpath.
Oh well, wachten tot straks dus, want ik kan er niet naar terminalservicen, dus 't zal een kwestie zijn van laten uitrazen...
Pfuh. Het moest er ooit eens van komen natuurlijk: xmlsearch(thisevent,"//t_Gemeentenaam"), en dat in een loop van alle events. Gevolg: 1500x1500 keer alle t_Gemeentenaam-nodes ge-cfdumpt. En de computer zo vast als een mug in honing natuurlijk.
Zucht. En dat allemaal omdat ik één puntje vergeten was (".//t_Gemeentenaam").
't Is echt wel een soep van XPath en structKeyExists en list-operaties aan het worden, die conversie van events. Bah.
Ik ben natuurlijk niet de wereldspecialist van XML, maar er is volgens mij toch echt wel iets mis met een schema waar de gemeente waarin een evenement plaatsvindt zit onder
Evenement_Basis
FK_Evenement__
Evenement_Basis
FK_Basis__
Basis_Adres
FK_Basis__
Basis_Adres
FK_Adres__
Gemeente_Adres
FK_Adres__
Gemeente_Adres
FK_Gemeente__
t_Gemeentenaam
Misschien net iets teveel van het goede.
Euh, ja, waar was ik?
Juist: die evenementen in de juiste tabellen krijgen dus.
Feh. Die werkt dan wel weer. Tja, dan zal het zo maar moeten gaan zeker?
The mind positively boggles. Ik geraak van nergens meer aan die computer. noch als mezelf, noch als Stijn, noch via mijn computer, noch via een andere. Maar alle services draaien nog en de websites zijn zonder problemen toegankelijk.
Weird. Eens kijken of RDS nog aan staat.
...maar nu is er weer iets met de ontwikkelserver. Stom ding is nog altijd beschikbaar om op te surfen, maar filesharing is gelijk afgezet. Ik kan er niet meer op, noch via een share, noch via terminal services. Dammit. Eens kijken in het serverkot waar dat ding fysiek staat.
Ha! Het lukt! 't Is gewoon gelukt om uit die XML de jpegs te halen, ha! Nooit gedacht dat het zo simpel zou zijn. Eerst een functie definiëren voor he wegschrijven naar een file:
<cffunction name="writeBase64File" access="private">
<cfargument name="filename" type="string" required="yes">
<cfargument name="content" type="string" required="yes">
<cffile action="WRITE" file="#arguments.filename#" output="#toBinary(arguments.content)#">
</cffunction>
En dan de loop over de XML, met lelijke kludge als er meer dan alleen DATA:BASE64 in het <data>-ding staat:
<cfscript>
eventXML=xmlparse(eventXML);
numEvents=arraylen(eventXML.xmlRoot.xmlchildren);
request.fnInstall.installMsg("parsing eventXML took #gettickcount()-temp# ticks");
request.fnInstall.installMsg("eventXML contains #numEvents# events");
request.fnInstall.installMsg("looping over events", "head");
temp=gettickcount();
for (iEvent=1; iEvent LTE numevents; iEvent=iEvent+1) {
thisEvent=eventXML.xmlRoot.xmlChildren[iEvent];
eventName=thisEvent.T_NAAM.xmlText;
eventImg=thisEvent.SYS_composite_268304.data.xmlText;
request.fnInstall.installMsg("#eventName#");
if (len(eventImg) GT 12) {
eventImg=right(eventImg,len(eventImg)-find("BASE64",eventImg)-5);
eventImgName=listlast(thisEvent.SYS_composite_268304.path.xmlText,"/");
writeBase64File("#expandpath("../products/events/images/"&eventImgName)#","#eventImg#");
request.fnInstall.installMsg("---created file #eventImgName#");
}
}
request.fnInstall.installMsg("looping over #numEvents# events took #gettickcount()-temp# ticks");
</cfscript>
Jawel, die ColdFusion is wel een stuk geëvolueerd sinds pakweg 1999. Het kan natuurlijk nog altijd lelijk, daar niet van:
<cfset eventXML=xmlparse(eventXML)>
<cfloop from="1" to="#arraylen(eventXML.xmlRoot.xmlchildren)#" index="i">
<cfif len(eventXML.xmlRoot.xmlChildren[iEvent].SYS_composite_268304.data.xmlText) GT 12>
<cffile action="WRITE" file="#expandpath("../products/events/images/"&listlast(eventXML.xmlRoot.xmlChildren[iEvent].SYS_composite_268304.path.xmlText,"/"))#" output="#toBinary(right(eventXML.xmlRoot.xmlChildren[iEvent].SYS_composite_268304.data.xmlText,len(eventXML.xmlRoot.xmlChildren[iEvent].SYS_composite_268304.data.xmlText)-find("BASE64",eventXML.xmlRoot.xmlChildren[iEvent].SYS_composite_268304.data.xmlText)-5))#"></cfif></cfloop>
...maar voor wie wil, kan het ook proper. En objectgeoriënteerdachtig. En al.
Te mooi om waar te zijn:
The parameter 1 of function ToBinary, which is now "DATA:image/jpeg:BASE64/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCABIAE8DAREA AhEBAxEB/8QAGwAAAgIDAQAAAAAAAAAAAAAAAwQBBQACBgf/xAAwEAACAQMDAwIFBAEFAAAAAAAB AgMABBEFEiExQVETIgYUYXGBMkKRsaEVI1JTkv/EABoBAAMBAQEBAAAAAAAAAAAAAAECAwQFAAb/ Ex9PhbK/G9Ccup2nZ+3p9q3n5nb2Dx8SJEbI29aIPzA+M9hGI0Ece3lj1PNIZZECCoIKuNuDgd68 YizTAH980YPMghTkAV6EgEETs4IjPpT6ku1h8ojooI3CaAMuMdT1BrB6gD+l9f4M+dyY+GQrKawn so72A2hjaRj7SBliCORID1/PfpxWp1LCm7TQA9cajmlOLlna19S7uDbPI4Zm3eoUIHXgcnHHbPio oKrLk37h8gn+oOTcrJnGtcO8gKjIA4rqhaE6gyMWFSrFxvJWQZYnAXtVeNCxMHrc9PDpOUBhR3ye DhjgUhUHZEfhjB4gTUCOJ8KvtPO4HoaJJYbhGLGjceOpsDDHLjoSM4B4NeIZu8bhhDVU1jZDOzO+ MDgZNGjVCIi4i5LVCtskUlOD1B8mgLHeWbHicWomuUaPIUK6djXgCDuT44mTQqpMawn3BBjx2okt GRMTDlxmSSRIpTaC3OFPNeCmBziTQG4s10zRqQemcj60/ETK2Zitgz//2Q== " must be a Base-64 encoded string.
Tja, natuurlijk. Die DATA:image/jpeg:BASE64 staat er teveel. Afkappen die handel.
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 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 :)

Nieuws & stuff Fark - Salon - BBC - Standaard - Slashdot
Mensen Graham - Bie - Neil G. - Rene - Iwein - Merel - Free - Steven - Bruno - Stijn
| March 2003 | ||||||
| Sun | Mon | Tue | Wed | Thu | Fri | Sat |
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 | |||||
| Feb Apr | ||||||