Categorieën
Asides Techtalk

Project tracker: installation profile

Davy suggested to create an installation profile for my little sideproject. And so I did. I’ve put it on Github with a readme. First time I did an, albeit simple, installation profile. Quite educational.

Categorieën
Techtalk

WP Mollom and WP OpenID

These two weren’t the best friends over the past couple of weeks. Since someone notified me they weren’t compatible, it took some time to figure out what was going wrong. My initial suspects was an icky way of dealing with the action hooks. Either by my plugin or WP OpenID. But after extensive testing, I concluded that the order in which the action hooks call the different plugin functions, wasn’t problem.

I identified the problem as the comment data getting lost somewhere along the way. I tested the OpenID plugin and the transition to the Mollom plugin. In the end, I could narrow the problem down to odd behaviour of global variables in WordPress. Let’s take a look at this bit of code:


function dosomething($ds_comment) {
global $ds_comment;
print_r($ds_comment);
return $ds_comment;
}
add_action('preprocess_comment', 'dosomething');

For brevity’s sake, I ommitted the obligatory WordPress plugin header. But if you add it, put this bit in a seperate file, upload it to your plugins/ folder and activate. Now you can test if yourself. The idea is that the array containing the commentdata is shown in your browser just before putting it in the database (notice that your browser doesn’t redirect to the original page, but that’s not the issue here). In reality, you’ll get a blanco page. Meaning the array $ds_comment is in fact empty. Further on, you’ll just pass empty variables and in the end save an empty record to your database. The comment got lost into cyberoblivion. Not very nice.

Now. Just comment out or remove the global $ds_comment; bit and try again. Now, if you submit a new comment, the data will be output to the browser nicely.

Conclusion: If you make the very same variable that was passed as an argument through the function, global, the data just gets lost. Very odd. Now, if you create a new, empty, global variable within the function and assign the data from $ds_comment to it, there is no problem whatsoever.

I wonder how this could happen…

Ow. Making a lot of variables global, especially those with sensitive data, is not really best practice. There are more gracious ways of passing data around like OO programming design or paying attention to correct function reuse. In a future incarnation, I’ll try to reduce the amount of globals I use. For now, I just want the damn thing to behave like it should. 😉

Categorieën
Techtalk

Don’t try to fake it

Hm. JAVA weirdness vandaag ontdekt. Men neme een bestand foobar.txt. Vervolgens beschouwen we even deze code:

File foo = new File('foobar.txt');
System.out.println(foo.getPath());
foo.renameTo(new File('barfoo.txt'));
System.out.println('foo.getPath());

Dat zou pretty straightforward moeten zijn: de code hernoemt het foobar.txt bestand naar barfoo.txt. Voor en na de operatie wordt via de getPath() operatie het pad en de naam van het bestand opgehaald en getoond.

De logica dicteert dat nadat de bestandsnaam van het foo object is gewijzigd, de getPath() methode de nieuwe bestandsnaam zou weergeven.

Helemaal niet dus.

De getPath() methode blijft de oude naam nog altijd tonen. Mogelijk alternatief om dat op te vangen is werken met een extra File object:

File foo = new File('foobar.txt');
System.out.println(foo.getPath());
File newFoo = new File('barfoo.txt');
foo.renameTo(newFoo);
System.out.println('newFoo.getPath());

Mijns insziens niet meteen het meest propere alternatief want het kost je geheugen, zeker als je met grote operaties bezig bent, maar het werkt wel. JAVA adepten onder ons, wat denken jullie ervan?

Categorieën
Techtalk

Een nieuw jasje

De huidige opmaak van dit blogje draait ondertussen ook al weer een klein jaar mee. Ik heb er niet al teveel aan bijgeschaafd ondanks enkele serieuze tekortkomingen. Zo is de sidebar totaal niet widgetfähig. En het feit dat mijn foto’s verbannen zijn naar de footer vind ik ook niet mijn meest briljante idee. Het grootste probleem vind ik dat mijn blogje in zijn huidige vorm veel te druk is. Het krioelt van de oranje links en je weet niet waar eerst klikken. Om nog maar te zwijgen van het overdadig gebruik van de famfamfam icoontjes.

Hoog tijd om terug in de kladblok/Nano/Textedit te kruipen en een nieuw theme eruit te persen. Hieronder zien jullie het resultaat van een kleine maand code schrijven op de trein en op vrije momenten

Netsensei

Weg met al het overbodige gedoe: enkel de essentie met de focus op leesbaarheid en rust. Persoonlijk vind ik dat ik aardig in mijn opzet ben geslaagd.

Stating the obvious: ja, ik heb mij wat laten beïnvloeden door het design van Michel. Nochtans vind ik het ontwerp van zijn blog nu ook niet bepaald wereldschokkend mooi. Eerlijk gezegd draaide het er juist op uit dat ik helemaal weg stuurde van zijn design. Door gebruik te maken van een dezelfde typografie, kleurenpalet en de header, lijken we nu toch verdraaid goed op elkaar. Zo was ik in eerste instantie van plan om Helvetica te gebruiken voor alle teksten. Tot ik tot de conclusie kwam dat een Georgia een stuk aangenamer leest. Dus dat heb ik gebruikt voor de body van de blogitems. Pas later kwam ik erachter dat Michel een gelijkaardige keuze heeft gemaakt.

Waaruit we weer lering trekken dat de keuze van dergelijke details een zeer vergaande invloed kunnen hebben op uw website.

Afin, natuurlijk is mijn vraag: wat vinden jullie ervan? Op een aantal details na is alles klaar maar houd ik voorlopig alles nog even de wachtkamer tot na volgende week.

O ja, als je zelf eens websites moet screenshoppen: gebruik dan de screengrab! plugin voor Firefox! Doodmakkelijk in het gebruik.