Maandelijks archief: maart 2011

Valide HTML, SEO en code / tekst verhouding

Onlangs twitterde ik over de YouTube video “Is HTML validation necessary for ranking?” uit het Google Webmaster Help kanaal. Uit deze video blijkt dat Google eigenlijk helemaal niet naar de correctheid van HTML kijkt.

Collega Martijn Duker reageerde hier op met de volgende tweet:

@remcotolsma Validatie is direct niet van invloed., maar indirect weer wel, schone code is vaak kortere code = snellere laadtijd. #SEO #W3C

Ik denk dat Martijn daarmee de spijker op de kop slaat. Het werken volgens de W3C standaarden kan indirect heel veel invloed hebben op je positie bij zoekmachines. Door volgens de HTML standaarden te werken is je content in veel gevallen beter gestructureerd. Daarnaast is je code vaak ‘schoner’ en daardoor sneller.

Concullega Harmen Visser van TRES internet tweette vervolgens dat er bij schonere code er in verhouding meer content is en dat je juist daarmee goed scoort. In de zoekmachine optimalisatie wereld noemen ze dit ook wel de “Code to Text Ratio”. De “Code to Text Ratio” geeft de verhouding tussen content en code (HTML, CSS, JavaScript, etc.) aan.

@MDuker @remcotolsma Bij schonere code is er in verhouding meer content. Juist dat scoort goed bij Google.

@remcotolsma @mduker Google beoordeelt een pagina oa obv de verhouding content vs. code. Hoe minder code hoe beter de score. #SEO

Het leek mij persoonlijk heel erg onwaarschijnlijk dat juist hierdoor websites hoger scoren. Het aantal HTML elementen die gebruikt worden zouden naar mijn idee namelijk niet invloed moeten hebben op de indxering van een webpagina. Het goed structureren van content kan in sommige gevallen immers zelfs zorgen voor meer code.

Naar aanleiding van de tweet van Harmen ben ik hier even wat dieper ingedoken. Allereerst heb ik de Google Webmaster Help kanaal op YouTube eens doorzocht. Helaas kon daar ik geen video’s vinden over dit onderwerp. Eén video die hier misschien een beetje aan gerelateerd is gaat over witruimte in een webpagina.

Uit deze video blijkt dat extra witruimte eigenlijk geen invloed heeft op je positie bij Google. Kan ik daaruit concluderen dat minder of meer code ook geen invloed heeft?

Op de Wemaster Tools Help Forum van Google zijn gelukkig wel een aantal berichten te vinden gerelateerd aan de “Code to Text Ratio“. In de meeste berichten wordt duidelijk gemaakt dat de code / content verhouding nauwelijks of geen invloed heeft op je positie bij
Google. Eén persoon die stelt zichzelf de volgende vragen:

  • Heb je een tool gezien in de Google Webmaster hulppgromma’s voor de “Code to Text Ratio”?
  • Heb je hier ooit een bericht, waarschuwing en/of melding over gezien in de Google Webmaster hulppgromma’s?
  • Denk je echt dat een pagina met een eenvoudig ontwerp en minimale structuur hoger scoort dan een grotere ingewikkelde pagina met meer code?
  • Is het niet waarschijnlijker dat Google geen of weinig aandacht besteeds aan zulke dingen?

Ik denk dat dit de mensen wel aan het denken zet: de “Code to Text Ratio” daar hecht Google geen waarde aan. Dat een goede “Code to Text Ratio” juist hoog scoort bij Google is naar mijn idee in ieder geval onjuist. Ik ben echter erg benieuwd naar jullie mening over dit onderwerp.

Extra informatie

CentOS tijd instellen / synchroniseren

Tijd op een server is erg belangrijk, het is heel vervelend als de tijd van een server onjuist is. Ik had onlangs wel te maken met een Linux machine waarop de tijd verkeerd stond. Dit is gelukkig eenvoudig op te lossen door de tijd te synchroniseren met een NTP server.

Om binnen CentOS te controleren of de tijd goed is ingesteld kun je de volgende commando uitvoeren:

[ ~]# date
Fri Mar 18 21:50:43 CET 2011

Hier staat CET voor de tijdzone “Central European Time”, dit is de tijdzone voor de wintertijd. In de zomertijd zal CEST zijn, wat staat voor “Central European Summer Time. Mocht de tijd bij jou niet correct staan dan kun je hier voor NTP installeren. Dit kun je doen door de volgende commando uit te voeren:

[ ~]# yum install ntp

Als het goed is wordt nu NTP geïnstalleerd of krijg je de melding “Nothing to do” als dit pakket al op je machine staan. Vervolgens kun je het volgende commando uitvoeren om de tijd te synchroniseren:

[ ~]# ntpdate pool.ntp.org

Als je de melding krijgt dat de NTP socket al in gebruik is dan is er waarschijnlijk al een NTP proces (daemon) actief. Deze kun je uitschakelen door het volgende commando uit te voeren:

[ ~]# /etc/init.d/ntpd stop

Als het goed moet je vervolgens wel de ntpdate commando kunnen uitvoeren.

[ ~]# ntpdate pool.ntp.org
18 Mar 22:05:57 ntpdate[24291]: adjust time server 204.62.14.98 offset -0.010934 sec

Vervolgens kun je de NTP deamon weer starten door het volgende commando
uit te voeren:

[ ~]# /etc/init.d/ntpd start

Als ik het goed begrepen heb worden processen binnen CentOS niet automatisch gestart. Als je het NTP proces automatisch wilt laten starten dan dien je het volgende commando uit te voeren:

[ ~]# chkconfig ntpd on

Het kan overigens ook zijn dat de tijdzone niet correct staat ingesteld op je machine. Voor het instellen van de tijdzone moet je een symlink maken naar een zoneinfo bestand. Voor de Nederlandse tijdzone zal dat er zo moeten uitzien:

/etc/localtime -> /usr/share/zoneinfo/Europe/Amsterdam

Je kunt deze symlink aanmaken door het voglende commando uit
te voeren:

[ ~]# ln -sf /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime

Zang verwijderen uit MP3 liedje

Voor de 50e verjaardag van mijn vader hebben we een liedje geschreven op
de melodie van een bestaand liedje. Helaas konden we van dit liedje niet
een karaoke versie vinden. Gelukkig zijn er allerlei programma’s die de
zang uit een liedje kunnen verwijderen.

Voor het verwijderen van de zang heb ik gebruik gemaakt van de
“Vocal Remover” Winamp plugin van Brian Andrews. Zodra je deze plugin activeert kun je procentueel aangeven hoeveel zang er verwijderd moet worden. Voor de beste resultaten zul je hier een beetje mee moeten spelen.

Zodra je plugin heb gedownload en geïnstalleerd kun je de plugin activeren:
“Opties » Voorkeuren…” (sneltoets Ctrl + P) en vervolgens naar
“Plugin-ins » DSP/Effect” en klikken op “AnalogX Vocal Remover [dsp_vr.dll]”.

De plugin werkt helaas niet voor alle liedjes even goed, maar voor een
gratis plugin is het zeker niet verkeerd. Zodra je de plugin goed hebt
afgesteld kun je er voor kiezen het aangepaste liedje op te slaan in een WAV
bestand. Hiervoor ga je naar: “Opties » Voorkeuren…” (sneltoets Ctrl + P)
en vervolgens naar “Plugin-ins » Uitvoer” klikken op “Nullsoft Disk Write v2.14 [out_disk.dll]” en het liedje afspalen.

WordPress media bestanden met rare tekens

Onlangs hebben we een nieuwe WordPress website gelanceerd bij Pronamic. De opdrachtgever heeft deze website netjes gevuld op de ontwikkel- en testomgeving van Pronamic. Vervolgens hebben we deze verplaatst naar de productieomgeving. Hierbij liepen we echter tegen een probleem aan. Veel geüploade bestanden hadden in de bestandsnaam rare tekens, zoals copyright (©) tekens. Op de ontwikkel- en testomgeving leverde dit geen problemen op, maar helaas op de productieomgeving wel.

Aangezien het om een flink aantal bestanden ging was het handmatig aanpassen of opnieuw uploaden niet een optie. Ik kon helaas ook geen geschikte WordPress plugin vinden die dit probleem kon verhelpen. Om die reden heb ik zelf maar even een oplossing ontwikkeld. Allereerst heb ik een MySQL query bedacht die alles © tekens vervangt met een gewone c teken.

UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, '©', 'c') WHERE meta_key = '_wp_attached_file';
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, '©', 'c') WHERE meta_key = '_wp_attachment_metadata';
UPDATE wp_posts SET guid = REPLACE(guid, '©', 'c') WHERE post_type = 'attachment';

Vervolgens moesten de bestanden in de WordPress uploads mag ook gewijzigd worden. Hiervoor heb ik eenvoudig PHP script geschreven en uitgevoerd in de uploads map:

<?php

$rdi = new RecursiveDirectoryIterator('./');
$rii = new RecursiveIteratorIterator($rdi);

foreach($rii as $file) {
	$name = $file->getPathname();

	$copyrightPosition = strpos($name, '©');

	if($copyrightPosition !== false) {
		$newName = str_replace('©', 'c', $name);

		$renamed = rename($name, $newName);

		echo $name, ' = ', $newName, ' = ', ($renamed ? 'renamed' : 'failed'), '<br />';
	}
}

Uiteindelijk heb ik voor de zekerheid alle afbeelding en bijbehorende thumbnails opnieuw laten generen met de Regenerate Thumbnails plugin. Mocht je ook ooit een dergelijke probleem hebben dan hoop ik dat je met bovenstaande code fragmenten dit snel kunt oplossen. Eventueel kan Pronamic ook een plugin voor je ontwikkelen die geautomatiseerd je probleem kan verhelpen. Mocht je nog vragen, opmerkingen en/of tips hebben laat dan gerust een reactie achter.