Atomische acties

Hedenavond 18u00 was het tijdstip vanaf wanneer men zich kon/kan inschrijven voor de tweede Barcamp Gent. Dat inschrijven verloopt via een wiki-pagina onder het motto “put your name on the list”. Zoals te verwachten, was het omstreeks 18u00 een virtueel gedrum van jewelste op die wiki-pagina. Zowel van de lijst verwijderd worden als andere mensen van de lijst verwijderen behoort tot mijn ervaring. :-/

Mensen plaatsten hun naam op de wiki, en nog geen minuut later waren er een deel verdwenen. Weer iets later bleek dat de verdwenen namen terug waren, de erbijgekomen namen waren verdwenen, en een extra naam was erbij gezet. Nogal ambetant gedrag dus, en in zekere mate onbetrouwbaar.

Het editeren van een pagina wordt blijkbaar impliciet aanschouwd als een atomische actie (een actie waarbij ondertussen niets anders kan uitgevoerd worden), maar dit wordt niet afgedwongen. Gevolg: er kan wél vanalles gebeuren met die pagina, terwijl iemand ze aan het editeren is.

Om het probleem nog anders te verwoorden: er zijn verschillende gebruikers die een bepaalde resource (de pagina) tegelijk willen gebruiken. Dit is helaas niet aangeraden, want de ene gebruiker zou dan aanpassingen van de andere teniet kunnen doen. Het gelijktijdig gebruiken van de resource wordt dus best programmatorisch verhinderd (via zogenaamde mutual exclusion of locking algoritmes).

Geen locking van de wiki-pagina.

Figuur 1: Geen locking van de wiki-pagina.

Figuur 1 toont het verloop als gebruikers Alice en Eve dezelfde versie willen aanpassen. Het resultaat is dat de versie van Eve op de Wiki-pagina terecht komt. De aanpassingen van Alice staan er niet op, omdat Eve daar geen weet van had (of negeerde dat er aanpassingen konden gebeurd zijn).

Locking van de wiki-pagina.

Figuur 2: Locking van de wiki-pagina.

Op Figuur 2 is het scenario in geval van locking beschreven. Er wordt maar 1 kopie per versie uitgedeeld, de anderen moeten maar wachten tot de lock is vrijgegeven. Dit garandeert dat er geen onverwachte evoluties kunnen gebeuren.

De wiki van wikispaces voorziet gelukkig in een geschiedenis van aangebrachte wijzigingen (deletes en inserts), waardoor de onverwachte evoluties in kaart kunnen gebracht worden.

Vanzelfsprekend is er op het internet veel uitgebreidere informatie omtrent dit probleem te vinden. Google, en vergroot uw kennis! 🙂

Disclaimer: De figuren zijn in full scale te bezichtigen door erop te klikken. Ze werden online gemaakt op Websequencediagrams.

Boskabout’s got himself a personal navigation device


Jawel jawel, ondergetekende heeft sinds vorige vrijdag een GPS-tijdssignalen-ontvanger in zijner bezit. Ook al weet ondergetekende daarmee nog steeds niet wie of wat hij is, hij weet alvast wel waar hij is! En dat is al heel wat. Verder is het zwarte doosje met reflecterend scherm ook een geluidjesafspeler, zowel van .mp3’s (zoals geafficheerd) als van .wma’s (niet zoals geafficheerd).

Up next: hacking the thing zodat het wat meer functionaliteit krijgt. Ik denk dan aan een soortement agenda/kalender, iets voor notities, filmkes afspelen, …

Het ding (ne Packard Bell Compasseo 480) draait nog op de oldskool Windows CE, dus er zal op het wereldwijde web wel vanalles over te vinden zijn (hoop ik).