del.icio.us cron

Twee entries zitten er in mijn crontab die verband houden met del.icio.us

Generally, crontab uses a daemon, crond, which runs constantly in the background and checks once a minute to see if any of the scheduled jobs need to be executed. If so, it executes them. These jobs are generally referred to as cron jobs.

Via de crontab kunnen we dus bepaalde programma’s op bepaalde tijdstippen laten uitvoeren. Om de crontab aan te spreken moet je beschikken over een shell login.

Er zijn twee del.icio.us zaken die ik op geregelde tijdstippen wil laten uitvoeren:

  1. De lijst met laatste 10 bookmarks genereren.
  2. Een backup van al mijn del.icio.us bookmarks maken.

Met de volgende frequentie:

  1. Elke twee uur (een beetje overdreven misschien)
  2. Dagelijks

De bookmarks kunnen we generen door de php file aan te spreken via de browser; als voorbeeld hadden we http://www.jouwwebsite.be/delciousrss.php genomen. (Tech: we gaan er maar eventjes van uit dat php geconfigureerd staat als Apache plugin en niet als CGI.)

Om die URL aan te spreken via de command line maken we gebruik van lynx: aan de prompt (we zijn ondertussen ingelogged) tikken we:

lynx http://www.jouwwebsite.be/delciousrss.php

en dat is eigenlijk hetzelfde als die URL in de browser ingeven. Met dat verschil dat we in lynx over een text-only interface beschikken. Om de browser te sluiten, tik je gewoon q, en dan y of de enter toets.

Je kan ook de browser gewoon een pagina laten oproepen, die pagina op het scherm tonen (dumpen), waarna de applicatie automatisch gestopt wordt. Het commando (voor dezelfde pagina) is

lynx -dump http://www.jouwwebsite.be/delciousrss.php

En dat is het commando dat we in onze cron job gaan gebruiken.

Hoe maken we nu die cron job aan? Aan de prompt (we zijn nog steeds ingelogged) tik je

crontab -l > cron.txt

Op die manier worden je eventuele bestaande cronjobs naar een bestand weggeschreven. Dat bestand gaan we editeren. Je kan dat doen, ofwel via aan de prompt, ofwel door het bestand cron.txt naar je eigen machine te FTP-en en daar met je text editor naar keuze te editeren (daarna opnieuw opladen naar de server).

In het bestand cron.txt voeg je dan de volgende lijn toen:

0 */2 * * * lynx -dump http://www.jouwwebsite.be/delciousrss.php

Dit zal ervoor zorgen dat elke 2 uur (die 0 */2) het commando, dat we zonet hebben besproken, zal worden uitgevoerd. Wil je dat liever elke drie uur, dan vervang je de 0 */2 door 0 */3, enz.

Let erop dat de laatste lijn in je cron.txt bestand een blanco lijn is. Eenmaal de cron.txt werd aangepast (en eventueel terug ge-upload), lezen we het bestand in, waardoor de crontab actief wordt. Je doet dat met het volgende commando:

crontab cron.txt

That’s it.

(Voor de dagelijkse backup ga je op een gelijkaardige manier tewerk. het commando vind je in een vorige entry, en dan editeer je de crontab op dezelfde manier. Let wel: vervang */2 door bijvoorbeeld 2, dan wordt de job elke dag om twee uur uitgevoerd.)

del.icio.us MT

De blogmarks zijn geconverteerd naar delicacies (del.icio.us bookmarks), en de lijst in de rechterbalk is vervangen door de del.icio.us linklijst.

Ik had er eventjes over gedacht om deze instructies te volgen (zie ook bij Michel), maar ik geef liever geen MT paswoorden aan een ander systeem vrij. Dus heb ik maar wat verder gezocht.

En uiteindelijk heb ik gekozen voor een combinatie van php en cron. Ik heb mij gebaseerd op Integrating del.icio.us with PHP and Magpie.

Opgelet, opdat dit bij jou zou werken, moet je server/provider PHP en SSI ondersteunen.

  1. Download en installeer MagpieRSS. Laat u niet afschrikken: download de meest recente versie (nu was dat magpierss-0.61.tar.gz) vanop sourceforge en unzip. De installatie zelf bestaat uit niet meer dan een aantal files (rss_cache.inc, rss_fetch.inc, rss_parse.inc en rss_utils.inc) uploaden naar een directory naar keuze, en daarin de subdirectory extlib met de file Snoopy.class.inc plaatsen.
  2. Plaats in dezelfde directory (niet die subdirectory) een nieuwe file (laten we zeggen delciousrss.php), waarin de volgende code zit:

    <?php
    require_once('rss_fetch.inc');
    require_once('rss_utils.inc');
    $yummy = fetch_rss("http://del.icio.us/rss/yourusername");
    $maxitems = 10;
    $yummyitems = array_slice($yummy->items, 0, $maxitems);

    $data = '<dt>del.icio.us</dt>';
    foreach ($yummyitems as $yummyitem) {
    $data .= '<dd>';
    $data .= '<a href="';
    $data .= $yummyitem['link'];
    $data .= '">';
    $data .= $yummyitem['title'];
    $data .= '</a> / ';
    $published = parse_w3cdtf($yummyitem['dc']['date']);
    $data .= date("d.m", $published);
    $data .= '</dd>';
    $data .= "n";
    }
    $data .= '<dd>&raquo; meer <a href="http://del.icio.us/yourusername">delicacies</a></dd>';

    $save_path='/your/save/path'; #define target path
    $temp='file.tmp'; #define temporary target name
    $dest='delilist.htm'; #define final destination target name

    $fp = fopen($save_path.'/'.$temp, "w", 0); #open for writing
    fputs($fp, $data); #write all of $data to our opened file
    fclose($fp); #close the file
    #rename tmp file to dest file
    rename($save_path.'/'.$temp,$save_path.'/'.$dest);
    ?>

    Die code haalt de laatste 10 bookmarks ($maxitems = 10;) die je op del.icio.us hebt gepost. Opgelet: wijzig in de bovenstaande code nog het volgende: vervang yourusername door uw del.icio.us username (volume12 in mijn geval). Vervang /your/save/path door het pad waar je de resulterende file wil wegschrijven. (Als je met MT werkt, kan bijvoorbeeld het Local Site Path uit je weblog config gebruiken.)

  3. In de template waar je die laatste 10 bookmarks wil tonen, voeg je het volgende in:
    <!--#include virtual="/delilist.htm" -->
    Opgelet: in die template moet SSI kunnen gebruiken. Bij de meeste providers volstaat het je template de extensie .shtml te geven.
  4. Gebruik http://www.jouwwebsite.be/delciousrss.php om de lijst te genereren. (Als je die URL gebruikt –aangepast voor jouw website–, krijg je enkel een blanco pagina te zien –maar dat is goed nieuws, want dat betekent dat het bestand werd gegenereerd.)

Voila.
Je zou ook het PHP bestand (delciousrss.php) rechtsreeks in je template kunnen inbrengen ipv eerst naar een ander bestand (delilist.htm) weg te schrijven. Dit zou echter beteken dat, telkens iemand jouw pagina opvraagt, je ook de del.icio.us server aanspreekt –en dit wordt niet toegestaan:

You can fetch your links in a simple HTML feed; documentation is at /doc/html. Please do not include it with an <IFRAME> as this will cause one hit to del.icio.us per one hit on your site. Likewise, please don’t fetch it every time via PHP. This sort of behavior will be considered abusive.

In een volgende post leg ik uit hoe je de update automatisch via een cron job kan laten verlopen.

bitch

Toen ik daarnet de commentaar van Veerle Beel (PDF) op het interview van Erika Raven las (vorige week in DS – PDF), vroeg ik me af hoe ik toen niet tot een gelijkaardige conclusie was gekomen. Tot ik het interview op de site ging herlezen.

Belangrijk voor elke reactie is de eerste paragraaf uit het interview:

Wie is “het kreng” waarover uw boek gaat?
Een rasechte feministische, redelijk egoïstische carrièrevrouw met weinig gevoel voor humor. En onverdraagzaam tegenover die mannen en vrouwen die zich niet volgens haar ideaalbeeld gedragen. Ze laat de anderen opdraaien voor haar levensstijl en ze vindt dat er nog meer tijdskrediet en ouderschapsverlof moet zijn waar de belastingbetaler voor moet opdraaien.

Dat lijkt mij een redelijke beperking van de vrouwelijke bevolking. Maar wie het schoentje past, trekke het aan. Typisch voor een ‘kreng’ is overigens een dergelijke reactie:

Ravens verhaal is dus gewoon oude wijn in nieuwe zakken. Dat ze er op de foto jong en fris uitziet, wil nog niet zeggen dat haar ideeën dat ook zijn.

Dat subtiele, die hint naar minderwaardigheid, de character assassination van de tegenstander: mijn stokpaardje: de argumentatie ad hominem (waar ik mij in dit argument zelf aan bezondigd heb). Jammer, want voor de rest was het betoog goed onderbouwd.

Behalve dan dat het een reactie is op iets heel anders dan wat Erika Raven in haar interview heeft verteld.

Beel verwijt Raven dat ze teruggrijpt naar vroegere idealen, toen de rollen nog duidelijk waren. Nochtans schrijft ze zelf, in de voorlaatste paragraaf van haar commentaar:

Terwijl de ene niet zonder de andere kan: geen evenwichtig gezinsleven zonder een inkomen. Mannen weten dat al lang en zijn er trots op dat zij daartoe bijdragen. Een les die we van hen kunnen leren. Wij van onze kant kunnen wat afdingen op de negatieve kanten van de arbeidsjungle: de stress, het altijd laat werken, het zelden voor kinderbedtijd thuis zijn.

En dat is geen rolbevestiging?
Overigens: excuse me?! Drie bepalende vrouwen in mijn leven (nog een geluk dat ik geen dochter heb) hebben tot nog toe een minstens even stressvol leven gehad als de mannen, en zijn zelden thuis voor bedtijd. Waarmee ik niet in het minst bedoel dat zulk gedrag beter of slechter is dan dat van hun mannelijke counterparts.

Dit vond ik een mooi stukje bij Beel:

De werkelijkheid is volgens mij veel pragmatischer dan de clichématige tegenstelling tussen huisvrouwen en krengen. Ik wed dat de meeste jonge Vlaamse gezinnen als communicerende vaten werken: wie het eerst thuis is, leegt de vaatwasser. Wie ’s avonds laat werkt, brengt ’s morgens voor vertrek het huis aan de kant. Wie in de week niets heeft kunnen doen, gaat in het weekend achter het fornuis of de strijktafel staan. Al die dingen claimen of laten we toch niet omdat we toevallig vrouw of man zijn?

Al klopt ook wat Raven zegt:

Feministen zeggen dat we mannen maar beter moeten opvoeden en hen moeten dwingen ook hun taak in het huishouden op te nemen.
Maar wat als ze het niet doen? Je kunt een hond ook niet leren miauwen. Verandering kost tijd. Ik heb verschillende van die vrouwen gekend. Ze moedigen elkaar ook aan om voet bij stuk te houden en zich niets aan te trekken van de mening van hun partner. Het draaide stuk voor stuk uit op een scheiding.

De waarheid ligt natuurlijk in het midden. Het zal veeleer een zaak van compatibiliteit binnen de koppels zijn, dan een afgelijnde wet die bepaald wie welke taken (het beste) op zich neemt. Het ideaalbeeld van Beel (no pun intended) klinkt mooi, maar ik vrees dat de werkelijkheid in vele gevallen nog steeds anders is. Je kan (moet ?) daar naar streven, maar als een van beide partners niet mee wil, dan is het buigen of barsten. Raven ging –in het interview, en ik neem aan ook in haar boek– daartegen in, met de focus op een bepaald soort carrièrevrouw. (Het moet niet altijd de man zijn. Toch?)

Meer moet je daar niet in lezen of van maken. Al is het al de tweede keer dat ik dit moet schrijven.

(Voor de goede orde, Beel reageert op het artikel, niet op het boek dat Erika Raven heeft geschreven –dat beweert ze toch nergens. Misschien moet ik het boek maar eens lezen.)

kort

Ge zoudt u beter hier wat mee bezig houden, en onder dat mom kreeg ik het volgende onder mijn neus geduwd.

  • “We are SO happy !”: uit De Zondag (de gratis gazet bij de bakker). Een fotowedstrijd, georganiseerd door het A. Vermeylenfonds en Linx+, in samenwerking met Kifkif en MIAT. Inzendingen tot en met 25 maart 2005. Meer inlichtingen alhier
  • Victoria Deluxe zoekt Gentse stadsreporters (uit DM). Info in deze PDF.
  • Gentenaars moeten meedenken over hun stad.

    Een stad (be)sturen is een taak voor ons allen. Daarom organiseren de Vlaamse overheid en de stad Gent op 15 november een stadsgesprek met het bestuur, specialisten, instellingen, verenigingen en burgers. Experts leggen een aantal vragen voor. Beleidsmakers reageren. En daarna kunt ú uw opinie, ervaring en praktische ideeën kwijt om het Gent van morgen leefbaarder te maken.

    Via DM; inschrijven is verplicht en kan op de site van Thuis in de Stad.

maten en gewichten (ct’d)

Remember, vorige week, toen een dronken bestuurder, die een vrouw doodreed, daar 31 dagen rijverbod, een boete van 500 EUR en drie maand voorwaardelijk voor kreeg?

Deze keer: Tien jaar rijverbod

De Gentenaar Siegfried G. (50) is door de Dendermondse politierechter veroordeeld tot zes maanden gevangenis en een rijverbod van tien jaar. Hij probeerde vorig jaar een politiecontole te omzeilen door rechtsomkeer te maken. Hij reed zonder verzekering, rijbewijs, inschrijvings- of keuringsbewijs.

Misbruiken tegen de staat zijn belangrijker dan misbruiken tegen een persoon. Of was dat de boodschap niet?
(Cynisch? Ik?)

[Disclaimer: ik ben enkel afgegaan op de (summiere) informatie in de krant.]

pief poef paf

De beroepsvereniging van de Brusselse horeca vindt de controlemaatregelen op tabaksverkoop aan jongeren onder 16 jaar onuitvoerbaar (DS 13-14/11/2004). Vanaf 1 december is het wettelijk verboden nog langer tabaksproducten aan -16jarigen te verkopen.

In de praktijk zal elke tabaksverkoper in geval van twijfel verplicht zijn de leeftijd van de koper na te gaan en geen tabak te verkopen aan minderjarigen jonger dan 16. Zo niet lopen de verkopers het risico op boetes.

De controlemaatregelen vragen onder meer om een ombouw van de tabaksautomaten. Maar in die maatregelen kan de Brusselse horeca zich dus niet vinden. Al vergeten ze daarbij waarschijnlijk dat ze gelijkaardige maatregelen moeten toepassen voor de controle op alcoholverbruik en kansspelen.

Het is een goede wet overigens. Want hoewel de wet de verkoop aan minderjarigen (onder de 16) verbiedt, is het niet verboden voor die groep om tabak te verbruiken. Alleen, door dat verbod, wordt de verantwoordelijkheid (of de mogelijkheid op controle) terug een beetje bij de ouders gelegd. (Al kan de doelgroep natuurlijk makkelijk gebruik maken van de diensten van die net iets oudere vriend(in) of broer of zus.)

Geld is natuurlijk ook een factor bij het protest van de Brusselse horeca. De -16jarigen zijn een steeds interessantere doelgroep aan het worden. Een verplichte controle (want strafbaarheid bij verkoop) zal vermoedelijk een deel van de tabaksverkoop doen teruglopen.
Goed zo. Een paar bladzijden eerder stond in die krant een reportage over verslaving. Waaruit we in deze context het volgende weerhouden:

Hoe jonger men begint met alcohol drinken, drugs gebruiken, roken, hoer groter de kans dat men er aan verslaafd raakt.

Een goede aanzet dus. Nu nog de horeca rookvrij maken.

ff 1

De final release v1 van FF is stukken beter dan de prereleases deden vermoeden.

Wellicht heeft het er ook iets mee te maken dat ik niet de ‘officiële’ release heb gedowload (op de mozilla site), maar een optimized build for PowerPC 7450. (Waarmee ik overigens geen afbreuk wil doen aan die ‘officiële’ release. Maar als het voor mijn systeem beter kan, waarom die kans dan laten liggen?)

De extensions die ik het meest gebruik werken nu ook met deze versie, inclusief Bookmarks Synchronizer. De versie waar de link naar verwijst wou niet installeren, maar op de site van de ontwikkelaar heb ik alsnog een compatibele versie gevonden: bookmarksftp1_0_1.xpi (volg de link, en klik op het bestand om de extensie te installeren).

Zeer te spreken ook over de verbeterde find. Tik / gevolgd door je zoekterm, en je zal zien wat ik bedoel. Vroeger verscheen de zoekterm gewoon in de statusbar, voorzien van relevantie informatie (zoals: find stopped of not found). Nu komt er een contextual menu bar boven de status bar. Zeer proper. En nuttig.

(Live bookmarks is voorlopig niet aan mij besteed. Toch niet terwijl NetNewsWire zo goed werkt.)

Alleen dat Go menu kan de boel nog steeds doen vastlopen.

deli me 2

En zo probeer ik het ook maar eens.

De eerste test was de ingave van de bestaande blogmarks. Dank zij de (javascript) bookmarklets was het een kwestie van de links in tabs te openen, en dan post to del.icio.us aan te klikken. (Add to del.icio.us zit nu ook in de context menu van firefox.)

Niet rap genoeg naar mijn goesting, een beetje gezocht, en terecht gekomen bij Cocoal.icio.us (A Cocoa del.icio.us Client for Mac OS X) [via Del.icio.us redux]. Open source to the rescue: hoewel Cocoal.icio.us voorlopig enkel werkt via Safari zijn er ook plannen voor support via andere browsers. En natuurlijk kan je het als stand-alone interface voor del.icio.us gebruiken. (Als je over een mac beschikt tenminste.)

Alweer via Del.icio.us redux ben ik dan bij Backing up del.icio.us terecht gekomen:

curl --user accountname:password -o myDelicious.xml -O "http://del.icio.us/api/posts/all"

(Works like a charm BTW)

En dan ook nog op Foxylicious gestoten (Foxylicious is a Mozilla Firefox extension that integrates your del.icio.us bookmarks into your browser bookmarks.). Gefundenes fressen.

Nu nog een eenvoudige manier vinden om het in MT te integreren (zie ook ergens in de onderste helft van de about page).

O ja, en hier zijn ze dan.

(Eenmaal zelf ingeschreven is het gemakkelijk om je te subscriben op de bookmarks van anderen, of op keywords. handig om nóg meer interessante links te ontdekken.)

amai

Dat was de titel van de e-mail die vanochtend in mijn inbox zat. Ik dacht al(weer), wat heb ik nu mispeuterd (duidelijk last van een slecht geweten).

Bij vervoer van een patiënt op bed, is Tessa met haar voet onder dat bed gesukkeld. Resultaat:

Vreselijke pijn, die alsmaar erger werd. […] Op de foto gelukkig niets gebroken, maar wel een zware distorsie (verzwikking). Alweer een
arbeidsongeval… Ik moet pijnstillers nemen, en heb een steunverband.

En ze heeft vannacht nog een wacht te gaan.