Een logootje knutselen

TwitterFacebookTumblr

I’m a sucker for vector art. Kunst met de kleine k zeg maar.

Behalve web geek ben ik ook nogal gek op hardlopen. Op turboslak.nl babbel ik er graag over.

Op 19 februari 2012 organiseert hardloopambassadeur Ronald Meijer − aka Running Ronald — een eenmalige marathon door Alphen aan den Rijn. In de vooraankondiging schreef hij dat een logo welkom was.

Voor de gelegenheid heb ik daarom eind vorige week een logo geknutseld. Met als uitgangspunten:

  • de letters R van Running Ronald
  • het wapen van Alphen aan den Rijn (de achtpuntige ster)
  • op een cartoonachtige manier vormgegeven — een poging de R te laten rennen
  • een vrolijke en vriendelijke uitstraling
  • de kleuren van atletiekvereniging AAV ’36
Zie hieronder voor het uiteindelijke resultaat.

  · ·

Handige SQL functie

TwitterFacebookTumblr

Vast geen wereldschokkend nieuws voor die-hard query nerds, maar voor een generalist als ik wel: MySQL heeft een handige functie: replace.

Met de replace functie kan je gemakkelijk een kolom in een databasetabel doorzoeken op de aanwezigheid van een bepaalde tekenreeks en deze vervangen door een andere tekenreeks.

Erg nuttig als je bijvoorbeeld een WordPress database hebt verhuisd van het ene naar het andere domein en je blijft zitten met harde domeinverwijzingen in de content. Die wil je natuurlijk niet allemaal handmatig opsporen en fixen. En de een of andere vage plugin heb je ook niet nodig. Met het uitvoeren van onderstaande SQL code ben je in een vloek en een zucht klaar:

UPDATE wp_posts SET post_content = replace( postcontent, ‘www.oudedomein.nl’,'www.nieuwedomein.nl’)

Voila. Een kind kan de was doen.

  · ·

SQL Server For XML

TwitterFacebookTumblr

Voor een project moet er een XML-bestand worden klaargezet op basis van content uit een SQL Server database. Nu is het natuurlijk mogelijk om een aantal queries te schrijven en de resultset van xml tags te voorzien voordat de output naar een bestand wordt weggeschreven.

Een nettere oplossing komt van SQL Server zelf. Deze heeft, in de vorm van de “FOR XML” optie, de mogelijkheid om  een xml structuur te genereren uit een query.

FOR XML komt in een aantal smaken: RAW, AUTO, EXPLICIT en PATH. De modus bepaalt hoe de xml-structuur van de query resultaten eruit komt te zien. Check Using the FOR XML Clause to Return Query Results as XML voor een gedetailleerde beschrijving van de mogelijkheden van FOR XML.

  · ·

Na 10 jaar een nieuw mandje

TwitterFacebookTumblr

Mijn allereerste domein was nullbeta.net¹.

Ancient history
Nullbeta.net heb ik in februari van het Jaar des Heren 2001 geregistreerd. 2001 … wow, da’s best wel ancient fucking history. Vastgelegd bij Vevida, want dat was 10 jaar geleden één van de weinige Nederlandse webhostingbedrijven die — naast Windows-hosting — ook nog eens de mogelijkheid van een eigen database boden.

Tijden veranderen
Hey, de tijden veranderen. Alweer een hele tijd bouw ik m’n websites liever met PHP, MySQL en WordPress dan dat ik ga lopen konkelen met ASP en een Microsoft Access database. En hoewel WordPress en IIS in principe geen onmogelijk setje vormen, blijft het toch een verstandshuwelijk. Ik bedoel, echt van harte gaat het allemaal niet.

De spagaat waarin je moet vliegen om je WordPress installatie of een plugin te updaten bijvoorbeeld. Internet Information Server gaat niet zo goed om met de bestandspermissies die nodig zijn om een WordPress plugin te installeren. Absoluut niet fijn. Daarnaast bleek de webserver waarop nullbeta.net draaide de laatste maanden helaas niet altijd even stabiel.

Al eerder overwogen, maar eind 2010 ging de kogel daadwerkelijk door de kerk: de huur bij Vevida werd opgezegd en nullbeta.net vond een nieuw onderkomen bij Oxilion.

LAMP
Op een LAMP-platform voelt WordPress zich beter thuis dan op Windows.

Installatie is a piece of cake. De boel draait ook gewoon soepeler. Ook al omdat ik van de verhuizing gebruik maakte om de PHP code van mijn templates eens onder de loep te nemen en te herschrijven. En last but not least, de installatie van de W3 Total Cache plugin bleek in de context van performancewinst zeker geen slechte keuze.

Samengevat
Conclusie: Vevida bedankt voor de verleende diensten. Na pakweg 10 jaar snort de nullbeta.net website tevreden in z’n nieuwe mandje.

¹Trouwens en voor het geval je het je afvraagt, de reden dat ik een .net TLD ( = Top Level Domain) heb is dat je toendertijd als particulier geen .nl domein kon vastleggen.

  ·

Een wordpress menu hack

TwitterFacebookTumblr

Als ik een website maak op basis van WordPress probeer ik zoveel mogelijk binnen de grenzen van het platform te blijven. Soms kan dat niet en is het nodig dat ik mijn toevlucht zoek tot een hack.

Menu-editor
De ingebouwde menu-editor van WordPress 3.0 is een grote vooruitgang ten opzichte van eerdere versies. Toen zat er namelijk geen menubuilder in de WP core en was je altijd aangewezen op plugins of wazige zelf geknutselde oplossingen. Toch heeft de menu-editor van WordPress 3.0 een paar flinke tekortkomingen. Zo zijn de ID’s die aan de menu-items worden toegekend nogal onhandig. WordPress gebruikt hiervoor het database-id van het menu-item. Aaargh!

Mijn koninkrijk voor een logisch ID
Mijn koninkrijk voor een logisch ID! Met een hack van één van de bestanden in de include directory is het wel mogelijk om de items in het WordPress menu een wat logischer ID te geven. In regel 79 van nav-menu-template.php wordt het ID aan het menu-item gekoppeld. Door

$id = apply_filters( ‘nav_menu_item_id’, ‘menu-item-’. $item->ID, $item, $args );

te vervangen door iets als

$menu_item_met_een_logisch_id = strtolower(str_replace(” “,”-”,$item->attr_title));
$id = apply_filters( ‘nav_menu_item_id’, ‘mnu-’. $menu_item_met_een_logisch_id, $item, $args );

Hierin gebruik ik het title attribuut van het menu in het ID, in plaats van een lullige nummering. Dit attribuut kun je zelf toekennen in de menu-editor.

Controle over de styling
Da’s vervolgens toch wat lekkerder declareren in je stijlblad. Bijvoorbeeld:

#mnu-nieuws.current-menu-item { doe: iets; }

De combinatie van een stijlbladdeclaratie op basis van ID én class zorgt ervoor dat je volledige controle hebt over de look and feel van het actieve menu-item.

Lelijk maar acceptabel
Ugly hack? Absoluut. De core files van WordPress moet je eigenlijk met rust laten, want je loopt het risico dat jouw wijzigingen worden overschreven bij een versie-upgrade. Als tijdelijke maatregel, in de hoop dat het in de toekomst beter geregeld wordt? Acceptabel.

Gerelateerde link
WordPress codex over wp_nav_menu

  ·