De reizen blogs

Voor iedereen die denkt dat ik die vergeten ben :

Ik heb het erg druk gehad met de meestvoorkomende blogs : de gewone VKblogs die verhuizen naar wordpress.com
Ook is het zo dat ik niet altijd inspiratie had.
Want hoewel programmeren gewoon een ambacht is, en geen kunst, heb je toch inspiratie nodig om boven jezelf uit te steigen en iets nieuws te produceren waarvoor het recept niet zomaar op de plank ligt.

Daarnaast waren zijn er bij reizen-blogs en blogspot blogs een aantal technische uitdagingen die bij de anderen geen rol speelden.
Bij blogspot is er de kwestie van de foto’s, en daarnaast een probleem met de layout
( veel te veel wit ).
Wordpress heeft een eigen media library die zich automatisch laat manipuleren. Blogspot gebruikt Picasa, dat zeer onhandelbaar is.

VkReizen blogs kon ik tot nu toe wel importeren als ze bereikbaar waren via de index van VKblog, zoals bij mensen met 2 soorten blogs.
Maar als ze alleen een reisblog hadden, ging het fout.
Reizen heeft een compleet afwijkende indexpagina.
Maar wat erger is :
Ze gebruiken een techniek met de naam “Ajax” om binnen die pagina te bladeren in het archief, waar VKblog in één keer het hele archief laat zien.
Bij “Ajax” wordt niet de hele pagina vervangen, maar slechts een deel. Daarvoor worden geavanceerde technieken gebruikt, en dat was voor mij een probleem, omdat ik die techniek nog niet beheerste. Een pagina opvragen is niet zo moeilijk. Eigenlijk verschilt het niet veel van het lezen van een file.
Het kan alleen op meer manieren fout gaan.
Automatisch een formulier invullen is een stapje verder, vooral als je de inhoud van het formulier niet kan voorspellen.
Ik moet op de pagina de “volgende” knop opzoeken, en dan het aanklikken daarvan simuleren.
Probeer maar eens : ga naar deze pagina :
http://www.vkblog.nl/reizen/gebruiker/66200/Marina__Lacroix
en klik dan onder “Artikelen van deze gerbruiker” op “volgende”.
Wat er gebeurt is dat het middelste deel van de pagina ververst wordt, maar de rest blijft staan.
Gebruik je nu de “Back” button van je browser, naar ga je niet terug naar het begin van de index, zoals je zou verwachten, maar naar de plek waar je vandaan kwam.
Ajax staat voor Asynchronous Javascript And XML.
De webpagina stuurt de browser een stukje Javascript waarmee hij het invullen van een formulier simuleert. De webserver beslist aan de hand van het “formulier” wat hij vervolgens voor reply naar de webserver stuurt, waar een ander stukje javascript code het resultaat gebruikt om een deel van de pagina te updaten.
Om de hele “reizen” index te kunnen bekijken, moest ik dit in de importer nabootsen. Dat was lastig, want de importer doet wel alsof hij een browser is, maar hij verstaat beslist geen javascript. Ik heb eerst gekeken naar de javascript code, maar hoewel het niet ingewikkeld was, maakt het gebruik van een zeer complexe javascript bibliotheek. Ik had geen tijd om die te leren gebruiken. Dan maar een andere truuk : Ik sloeg de pagina op op mijn eigen computer, plaatste hem in de /var/www directory en liet mijn eigen lokale webserver de pagina aan de browser leveren. Een blik in de apache errorlog leerde me wat er gebeurde als ik op de “volgende” link klikte.
De browser wilde een pagina bezoeken die ik natuurlijk niet had.
Lege directory aangemaakt, en bingo. Er verscheen een wit vlak met de index van mijn lege directory. Hij zoekt dus naar een indexfile. Nou die had ik wel voor hem.
Ik maakte een index.php met maar 1 statement : een echo van alle velden uit het “Post” request.

Volgende probleem :
PHP bevat standaard geen commando’s om een browser na te bootsen. Een pagina opvragen is niet zo moeilijk, maar een formulier sturen gaat toch wel makkelijk als je daarvoor wat extra toeters en bellen toevoegt aan PHP. Dat leek heel simpel, maar ook dat had ik nog nooit gedaan. In Linux is alles gratis beschikbaar voor iedereen, maar als je iets wil dat afwijkt van het gebruikelijke, moet je toch wel goed zoeken. Er moest een “shared object library” gelinked worden aan PHP. Dat is de Linux versie van een .dll file.
Microsoft zou je in zo’n geval een binary file sturen, maar bij Linux wordt de sourcecode gedistribueerd en wordt er ter plekke een object gecompileerd. Dat kan, omdat je bij open-source software als Linux alles mag weten.

sudo pecl install pecl_http
[sudo] password for jan:
downloading pecl_http-1.7.1.tgz …
Starting to download pecl_http-1.7.1.tgz (174,098 bytes)
……………………………….done: 174,098 bytes
71 source files, building
running: phpize
sh: phpize: not found
ERROR: `phpize’ failed
jan@jan-desktop-2:/etc/apache2/conf.d$


En zo kwamen er nog een hele reeks fouten :

checking for curl/curl.h… not found
configure: error: could not find curl/curl.h
ERROR: `/tmp/pear/temp/pecl_http/configure –with-http-curl-requests –with-http-zlib-compression –with-http-magic-mime=no –with-http-shared-deps’ failed


Even de php.ini aanpassen, webserver herstarten…

Your PHP installation appears to be missing the MySQL extension which is required by WordPress.


Woeps…
Toen ik dacht dat ik alle probleempjes had opgelost, dacht PHP daar toch anders over :

Error : call to undefined function…


Uiteindelijk bleek ook van het cURL package de sourcecode nodig te zijn, en toen ik die ook geïnstalleerd had, kon ik inderdaad bladeren in de “reizen” index.
Intussen had ik de code van de importer aangepast, zodat hij de links naar de individuele berichten van de indexpagina kon lezen, en vanaf daar werkte alles weer normaal.
Afgezien van het feit dat de “reizen” indexpagina geen “datum/tijd” veld heeft, waardoor ik voor die blogs geen “categorie per maand” kan maken. Maar ach, meestal schrijven “reisbloggers” geen honderden berichten.

Als je het terug leest, lijkt het een kwestie van een paar uurtjes. Maar in werkelijkheid moest er heel wat voor op het net gesurfd worden om alle informatie bij elkaar te verzamelen, en moest ik ook wel een nachtje slapen over de beste strategie.

Read Offline:
This entry was posted in Wordpress and tagged , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published.