Berichten over ‘pc’

KMess: klikbare links met het juiste programma openen

Friday, 16 January 2009

Het líjkt vanzelfsprekend. Je klikt op een link in een chatvenster en  hopla! de link opent in je browser en brengt je zo, zonder extra muisklikken, naar de juiste website, afbeelding of wat dan ook….

Totdat…. je chatprogramma alles doet behálve het juiste programma gebruiken… en een link naar youtube achtereenvolgens opent in zowat alle programma’s die op je pc te vinden zijn, maar net dat ene programma (een browser, firefox bv) niet. Frustrerend!

Blijkt dat KMess voor kde geschreven is… wat die k eigenlijk al deed vermoeden. En de browser in kde is nu niet dezelfde als die in gnome (waar ubuntu mee werkt).
Probleem dus. Of toch niet?
Er is een faq op de website van KMess.. en jawel hoor… mét een antwoord.

Ga naar ~/.kde/share/config/kdeglobals en voeg daaraan het volgende toe:

[General]
BrowserApplication=firefox

Als de [General] sectie nog niet bestaat, zul je het zelf moeten toevoegen.

Zo zie je maar, hoe simpele dingetjes soms voor enorme frustraties kunnen zorgen…. 😉


Eigen sneltoetsen in OpenOffice aanmaken.

Wednesday, 4 March 2009

Dinsdagavond, wat later op de avond (en toevallig ook m’n verjaardag).
Zij: Scha-aat? Dienen OpenOffice is niet leuk?
– Waarom niet?
Zij: Ik kan nergens sneltoetsen aanmaken…
– Oh, maar dat moet vast wel kunnen hoor

Stiekem wist ik totaal niet of het ging en als het al ging hoe…
Maar een klein beetje google-werk leverde interessante resultaten op.

Eén daarvan was extreem bruikbaar: Namelijk deze. (werkt ook in windows hoor)
Na stap-voor-stap alles uitgeprobeerd te hebben bleek alles verrassend genoeg te werken, maar er was nog een groot probleempje…
Hoe leg ik dit op een snelle manier uit? Het antwoord was snel duidelijk. Niet.
Is er dan een andere manier, en zo ja welke?
Alweer op google en ja hoor! Je kon je sneltoetsen exporteren.
Zo gezegd zo gedaan.
Alleen kreeg vriendin-lief een error voor haar neus gesmeten.
Logisch… want ik had de sneltoetsen doorgestuurd, maar niet de macro die de sneltoets zou moeten oproepen.

Kunnen macro’s ook ge-exporteerd worden? Ja! En zelfs zeer gemakkelijk.
Na het doorsturen van de geëxporteerde macro moest er enkel gedubbelklikt worden op het bestandje en de rest gebeurde vanzelf.

En ja hoor! Alles werkte zoals zou moeten…
Ik geef het toe, het is alles behalve simpel, maar… het gaat!


Drupal views: upcoming events per Organic Group

Saturday, 14 March 2009

Je wilt de komende evenementen van een bepaalde groep in een blok tonen op je Drupal website?
En je hebt al uren liggen knoeien met de instellingen?
Probleem opgelost! Importeer volgende code bij je views et voila…
Vergeet zeker je views cache niet te legen wanneer het “now” keyword niet wil werken 😉

$view = new view;
$view->name = 'og_event';
$view->description = 'Volgende keer block';
$view->tag = 'volgende keer';
$view->view_php = '';
$view->base_table = 'node';
$view->is_cacheable = FALSE;
$view->api_version = 2;
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
$handler = $view->new_display('default', 'Defaults', 'default');
$handler->override_option('fields', array(
'field_datum_value' => array(
'label' => '',
'alter' => array(
'alter_text' => 0,
'text' => '',
'make_link' => 0,
'path' => '',
'alt' => '',
'prefix' => '',
'suffix' => '',
'help' => '',
'trim' => 0,
'max_length' => '',
'word_boundary' => 1,
'ellipsis' => 1,
'html' => 0,
),
'link_to_node' => 0,
'label_type' => 'none',
'format' => 'default',
'multiple' => array(
'multiple_number' => '',
'multiple_from' => '',
'multiple_to' => '',
'group' => TRUE,
),
'repeat' => array(
'show_repeat_rule' => '',
),
'fromto' => array(
'fromto' => 'value',
),
'exclude' => 0,
'id' => 'field_datum_value',
'table' => 'node_data_field_datum',
'field' => 'field_datum_value',
'override' => array(
'button' => 'Override',
),
'relationship' => 'none',
),
'title' => array(
'label' => '',
'alter' => array(
'alter_text' => 0,
'text' => '',
'make_link' => 1,
'path' => '',
'alt' => '',
'prefix' => '',
'suffix' => '',
'help' => '',
'trim' => 0,
'max_length' => '',
'word_boundary' => 1,
'ellipsis' => 1,
'html' => 0,
),
'link_to_node' => 1,
'exclude' => 0,
'id' => 'title',
'table' => 'node',
'field' => 'title',
'relationship' => 'none',
'override' => array(
'button' => 'Override',
),
),
));
$handler->override_option('sorts', array(
'field_datum_value' => array(
'id' => 'field_datum_value',
'table' => 'node_data_field_datum',
'field' => 'field_datum_value',
),
));
$handler->override_option('arguments', array(
'group_nid' => array(
'id' => 'group_nid',
'table' => 'og_ancestry',
'field' => 'group_nid',
),
'date_argument' => array(
'default_action' => 'ignore',
'style_plugin' => 'default_summary',
'style_options' => array(),
'wildcard' => 'all',
'wildcard_substitution' => 'Alle',
'title' => '',
'default_argument_type' => 'date',
'default_argument' => '',
'validate_type' => 'none',
'validate_fail' => 'not found',
'date_fields' => array(
'node_data_field_datum.field_datum_value' => 'node_data_field_datum.field_datum_value',
'node_data_field_toeterdate.field_toeterdate_value' => 'node_data_field_toeterdate.field_toeterdate_value',
),
'year_range' => '-3:+3',
'date_method' => 'OR',
'granularity' => 'month',
'id' => 'date_argument',
'table' => 'node',
'field' => 'date_argument',
'override' => array(
'button' => 'Override',
),
'relationship' => 'none',
'default_options_div_prefix' => '',
'default_argument_user' => 0,
'default_argument_fixed' => '',
'default_argument_php' => '',
'validate_argument_node_type' => array(
'poll' => 0,
'faq' => 0,
'event' => 0,
'event2' => 0,
'event3' => 0,
'group' => 0,
'page' => 0,
'startpagina' => 0,
'story' => 0,
),
'validate_argument_node_access' => 0,
'validate_argument_nid_type' => 'nid',
'user_argument_type' => '',
'restrict_user_roles' => 0,
'user_roles' => array(),
'validate_argument_is_member' => 0,
'validate_argument_php' => '',
),
));
$handler->override_option('access', array(
'type' => 'none',
));
$handler->override_option('title', 'Volgende keer');
$handler->override_option('footer', '<br />');
$handler->override_option('footer_format', '2');
$handler->override_option('footer_empty', 0);
$handler->override_option('empty', 'Geen vergaderingen gevonden.');
$handler->override_option('empty_format', '2');
$handler->override_option('items_per_page', 1);
$handler->override_option('use_more', 1);
$handler = $view->new_display('block', 'Blok', 'block_1');
$handler->override_option('filters', array(
'picg' => array(
'operator' => '=',
'value' => '',
'group' => '0',
'exposed' => FALSE,
'expose' => array(
'operator' => FALSE,
'label' => '',
),
'id' => 'picg',
'table' => 'og_ancestry',
'field' => 'picg',
'override' => array(
'button' => 'Use default',
),
'relationship' => 'none',
),
'date_filter' => array(
'operator' => '>=',
'value' => array(
'value' => '2009-03-14 00:00:00',
'min' => NULL,
'max' => NULL,
'default_date' => 'now',
'default_to_date' => '',
),
'group' => '0',
'exposed' => FALSE,
'expose' => array(
'operator' => FALSE,
'label' => '',
),
'date_fields' => array(
'node_data_field_datum.field_datum_value' => 'node_data_field_datum.field_datum_value',
),
'date_method' => 'OR',
'granularity' => 'day',
'form_type' => 'date_select',
'default_date' => 'now',
'default_to_date' => '',
'year_range' => '-3:+3',
'id' => 'date_filter',
'table' => 'node',
'field' => 'date_filter',
'override' => array(
'button' => 'Use default',
),
'relationship' => 'none',
),
));
$handler->override_option('block_description', '');
$handler->override_option('block_caching', -1);

Formule’s in OpenOffice

Thursday, 26 March 2009

Eigenlijk is deze post vooral voor mezelf, zodat ik niet meer lang hoef te zoeken hoe je formule’s in OpenOffice invoegt.

In een gewoon writer bestand open je insert > object > Formula
Je typt dan bijvoorbeeld sqrt{125} en klikt terug op je document en je hebt de vierkantswortel van 125 op je blad staan.
Tot zover geen enkel probleem.

Maar ingewikkeldere formule’s vergen af en toe stevig denkwerk.
Zo heb je bijvoorbeeld:

formule1

sqrt{ { sum from {16} to {i = 1} { {(d sub{i}bar d )}^2} } over { n-1 } }

  • sqrt{n} Geeft de vierkantswortel van n (eigenlijk alles wat tussen { en } staat )
  • sum {} Geeft het sommatieteken weer (zo’n rare m op z’n zijkant)
  • sum from {16} to {i = 1} Geeft het sommatieteken weer met bovenaan i = 1 en onderaan 16
  • {x}^n Geeft x tot de n-de weer. (12 kwadraat is {12}^2 )
  • {n} over {m} Geeft n/m weer (een breuk dus)

Nog meer voorbeeldjes:

bar d = {sum from{i=1} to{16 }d sub{i} } over n    formule2
{{d sub {i} * sqrt{n} } over S sub d} = sqrt{79,31 * 13 over 79,59}}     formule3


Een DVD afspelen in Ubuntu (9.04 – Jaunty Jackalope)

Sunday, 10 May 2009

Mijn zus had voor haar communie de dvd gekregen van hsm3 (ze is er zowat verzot op).
Uiteraard wou ik die dvd zelf ook wel eens zien en stak dus met volle moed de dvd in m’n pc, ondertussen had ik m’n stoel al achteruit gelegd en was klaar voor 112 min filmplezier.

Maar Murphy zou Murphy niet zijn moest hij ook nu weer van zich laten horen. De ene foutmelding na de andere verscheen op m’n maagdelijk zwart scherm.  Allemaal berichten met als enige boodschat: “Hey, ik kan deze DVD niet afspelen”. Zwaar vloekend en een paar verwensingen later begon ik te zoeken naar het probleem en, nu we dan toch bezig zijn, een mogelijke oplossing. Gelukkig had ik in ’t verleden ook al zoiets voorgehad en zat Medibuntu nog in m’n lange termijn geheugen.

Na het installeren van VLC (intypen in je pakketmanager: Toepassingen > Installeren/verwijderen ) en de juiste codecs van Medibuntu (Vindt je hier) speelde de DVD probleemloos.
Akkoord, dit zijn geen actie’s die je van een gemiddelde pc-gebruiker kan en mag verwachten, maar dvd’s afspelen kan wel.
Misschien nog een puntje om in orde te brengen bij Ubuntu 😉

Ohja, en ondertussen zat ik wél achteruit in m’n zetel en heb ik uiteindelijk wel kunnen genieten van hsm3 😀


Belgische eID in Ubuntu gebruiken

Friday, 14 August 2009

Sinds kort heeft zowat elke Belg ze op zak zitten. Een kaartje zo groot als een bankkaart dat dienst doet als elektronische identiteitskaart. Je zou er zelfs mee kunnen inloggen op het studentenportaal van Vlaanderen om zo bijvoorbeeld je leerkrediet te kunnen raadplegen of op myMinFin.be om je belastingsaangifte digitaal door te sturen.
Het enige wat je daarvoor moet doen is een programma installeren, je browser instellen et voila, het zou moeten werken.
ZOU moeten werken, want op mijn computer deed het programma alles behalve wat het moest doen. Werken dus.

Na veel rondzoeken en nog meer uitproberen heb ik eindelijk een oplossing gevonden die voor mij (Ubuntu 9.04 / Firefox  3.5.2) werkt.
Het programma dat je terug kan vinden in de repositry’s werkte voor mij trouwens niet. Net als het programma dat je op de website van de Belgische eID zelf kan vinden.

Maar wat wel werkte is dit:

(bewerking van een mail van servicedesk@fedict.be)

De installatie van de eID software op Ubuntu 9.04 is het volgende:

(Indien je eerst de software al geinstalleerd hebt van elders: best eerst alle bestanden en dirs met *beid* en eid* en siscardplugins verwijderen in de mappen /usr/local/bin en /usr/local/lib
Anders krijg je foutmeldingen omdat er al een andere versie geïnstalleerd is.)

Open een terminal venster en voer de volgende commando’s uit:
cd /tmp
wget http://eid.belgium.be/nl/binaries/beid-middleware-3%2E5%2E2-opensuse-11%2E0-i686-5775_tcm147-59631.tgz
tar xvfz beid-middleware-3.5.2-opensuse-11.0-i686-5775_tcm147-59631.tgz
cd install
sudo ./install.sh

cd /tmp
wget http://frozenfox.freehostia.com/cappy/getlibs-all.deb
sudo dpkg -i getlibs-all.deb
sudo getlibs /usr/local/bin/beidgui

Dit loste voor mij dit probleem op:
beidgui: error while loading shared libraries: libxerces-c.so.27: cannot open shared object file: No such file or directory

Om op linux uw eID te kunnen gebruiken op Internet, wordt aangeraden om Firefox te gebruiken. Om Firefox met uw eID te kunnen gebruiken dient een PKCS#11-module te worden geïnstalleerd. Meer informatie over de installatie van deze module vindt u op http://eid.belgium.be/nl/Hoe_installeer_je_de_eID/Linux/

Aangezien de PKCS11-module voor eID enkel in een 32-bits versie beschikbaar is, dient u ook een 32-bits versie van Firefox te installeren. Hoe u dit kan doen op Ubuntu vindt u hier: https://help.ubuntu.com/community/AMD64/FirefoxAndPlugins#32-bit%20Firefox%20and%20plugins

Tip: als het niet lukt om een internetpagina te openen met de 32-bits versie van Firefox, doe dan het volgende:
1. Open Firefox
2. Typ in de adresbalk “about:config”
3. Zoek naar “network.dns.disableIPv6”
4. Zet de waarde op “true”
(Dit laatste had ik niet nodig. Het werkte zo met Firefox 3.5)

Bron: http://faunaflora.blogspot.com/2009/08/installatie-beid-kaartlezer-op-ubuntu.html


Games in Ubuntu (Linux)

Tuesday, 18 August 2009

Bestaan er dan geen spelletjes met goede graphics voor Linux?
Tuurlijk wel: http://dangerdeep.sourceforge.net/gallery.html

En ’t is nog gratis ook! 😉


En uw wachtboek is?

Friday, 20 August 2010

Een kort wachtwoord is nutteloos, zo blijkt.

De reden daarvoor is simpel:
Vandaag zijn computerprocessors zo krachtig dat ze op korte tijd een wachtwoord kunnen achterhalen.
En dat hoeft geen supercomputer te zijn: een doorsnee thuiscomputer heeft vandaag evenveel rekenkracht als de krachtigste computer van tien jaar geleden.

Nu allemaal goed en wel, maar wat gaan we over 10 jaar doen? Een wachtboek intypen ter vervanging van het huidige wachtwoord?

Of misschien moeten we eens stilaan gaan nadenken over een andere manier om onze gegevens online te beschermen.


Wachtwoorden: een mogelijke oplossing

Wednesday, 9 March 2011

Een tijdje geleden schreef ik een blogpost over het feit dat moderne computers steeds krachtiger worden.
Zo krachtig zelfs dat een gewone huis-tuin-en-keukenpc in staat zal zijn om wachtwoorden te kraken.

Daarom denk ik dat wachtwoorden zoals we die nu kennen op (lange) termijn zullen verdwijnen.
Maar wat zijn dan de alternatieven?

Waarschijnlijk ben ik één van de weinige mensen die vrijwillig een wachtwoord op zijn gsm heeft staan.
Het gaat dan niet over de PIN-code maar over een wachtwoord dat je nodig hebt om wat-dan-ook te doen op je gsm.

Al is “wachtwoord” niet echt het juiste woord want in dit geval is het een patroon dat je moet tekenen.

Android-Pattern-Lock

Android-Pattern-Lock

Het nadeel daarvan is dat je met je vingers steeds hetzelfde patroon maakt op het scherm en dat het patroon, hoe ingewikkeld ook, relatief gemakkelijk te achterhalen is, juist omdat je steeds hetzelfde patroon op je scherm tekent bij ALLES wat je op je gsm wil doen.

Nog een nadeel van zo’n patroon: er zijn minder combinatiemogelijkheden. Een wachtwoord kan bestaan uit 26 verschillende letters, 10 verschillende cijfers en dan vergeet ik nog een aantal zaken zoals verschillende speciale tekens en het verschil tussen hoofd- en kleine letters. Een patroon met 9 bollen heeft uiteraard minder mogelijke combinaties.

Er zijn dus meer mogelijkheden bij een gewoon wachtwoord met karakters dan bij een patroon met negen bollen.

Een wachtwoord met karakters, met een toetsenbord ingegeven, is ook relatief gemakkelijk te achterhalen. Al was het maar door letterlijk af te luisteren wat iemand typt. (Elke toets heeft een uniek geluid, door op te nemen wat iemand typt is het redelijk eenvoudig te achterhalen wat er getypt werd. Ook het wachtwoord)
Ik denk dat het moeilijker is om zoiets te achterhalen als je een patroon tekent, maar dan een patroon dat niet elke keer hetzelfde is.

Je toont de gebruiker een virtueel toetsenbord op het scherm waarop hij zijn wachtwoord moet aanklikken. (Of de karakters aanraken in het geval van een gsm)

Een on-screen toetsenbord met karakters in random volgorde

Klik je wachtwoord aan (Eerste keer)

Om te vermijden dat je elke keer hetzelfde patroon op je scherm aanklikt/aanraakt verwisselen de karakters bij elke poging van plaats.
Zelfs als je er dan in slaagt om de coördinaten van de muis/vinger op te vangen ben je daar niets mee zolang je niet weet welk karakter overeen komt met die coördinaten.

Een on-screen toetsenbord met karakters in (een andere) random volgorde

Klik je wachtwoord aan (Tweede keer)

Op de afbeeldingen geef je twee maal het wachtwoord ( in dit geval M8_(O0)* ) in. De tweede keer staan de karakters op een andere plaats dan de eerste keer en bij de derde poging zullen de karakters opnieuw van plaats veranderd zijn.

Uiteraard is dit maar een ruwe denkoefening en zeker nog geen systeem dat direct toegepast kan worden.
Hou er ook rekening mee dat op de afbeeldingen een vereenvoudigde versie van het toetsenbord wordt weergegeven, uiteraard is het de bedoeling om meer dan 21 karakters in te kunnen geven.


Password Strength

Wednesday, 10 August 2011

To anyone who understands information theory and security and is in an infuriating argument with someone who does not (possibly involving mixed case), I sincerely apologize.
Via http://xkcd.com/936/
(more…)


Uitdoofsynchronisatie

Thursday, 5 April 2012

Synchroniseren. Hoe moeilijk kan het zijn? Je neemt potlood en papier en tekent snel wat schemaatjes met een aantal scenario’s die zich mogelijk kunnen voordoen bij het synchroniseren. Deze blogpost is het verhaal waarin ik op zoek ga naar de ideale manier waarop verschillende mobiele devices steeds over dezelfde informatie (vakken) beschikken én die informatie kunnen aanpassen. Simpel, toch?

  1. Data downloaden en gewoon alles overschrijven.
    Toegegeven, dit is nogal drastisch. Maar hé, het werkt. We vergeten gemakkelijkheidshalve dan wel dat ALLE data downloaden zelden nodig is, laat staan alles overschrijven…
    Eigenlijk had deze eerste stap meer als doel vertrouwd te raken met de API van de rest-server. Data versleuteld downloaden, aanmelden met Digest access authentication, gegevens versturen naar de rest-server etc.



    Your browser does not support the canvas element.Stap 1: Data downloaden en gewoon alles overschrijven.

    Stap 1: Data downloaden en gewoon alles overschrijven.

  2. Kijk welke vakken niet online staan (op basis van ID) en download enkel die vakken.
    Stap twee, we voegen basislogica toe aan het downloadproces.
    We downloaden niet meer klakkeloos alle vakken, maar enkel de vakken die we nog niet hebben. Om dat te kunnen doen, maken we twee lijstjes met alle vak-ID’s online en alle vak-ID’s offline. Daarna vergelijken we beide lijstjes en weten we welk vak ontbreekt en waar het ontbreekt.
    In het geval van het prentje hieronder ontbreekt online het vak met ID 125. Dat vak uploaden we dus naar de online database zodat we daar ook vak 125 hebben.

    Stap 2: Vergelijk ID's van vakken online met vakken offline

    Stap 2: Vergelijk ID’s van vakken online met vakken offline

  3. Kijk welke vakken offline staan, kijk welke vakken online staan en synchroniseer deze.
    Oeps! Probleem. Een ID-nummer is immers niet representatief voor een vak. Als ik offline een nieuw vak aanmaak dan zal dat nieuwe vak een nieuw ID-nummer krijgen. De kans is groot dat er ondertussen online ook een vak is aangemaakt met datzelfde ID. Hoewel het vak met ID-nummer 195 dus zowel offline als online aanwezig is, gaat het wel degelijk over een ander vak. Afgaan op ID-nummers gaat dus niet. Een vak-ID is dus enkel representatief voor één vak binnen dezelfde database. Als we met verschillende databases werken, in dit geval online en offline, dan kan een vak-ID twee keer voorkomen en toch naar een ander vak verwijzen.Het probleem ligt bij de automatische nummering in de database. Nieuwe inhoud krijgt een nummer mee dat net 1 eenheid groter is dan de vorige inzending. Als een device geen verbinding heeft met het internet en de laatste inzending 124 was dan zal de volgende inzending 125 zijn. Ook als er ondertussen door andere mensen 30 nieuwe vakken ingediend zijn en het eigenlijke ID-nummer dus 155 had moeten zijn.

    ID is hetzelfde, titel is anders

    ID is hetzelfde, titel is anders

    Een mogelijk oplossing bestaat eruit de data zelf te gaan vergelijken. Omdat het over (potentieel) gevoelige data gaat, leek het mij veiliger om niet de data zelf maar de md5-hashes van de data te gaan vergelijken. Dat werkte.
    Als we met verschillende data zitten en het ID-nummer is hetzelfde, nemen we de meest recente wijziging.

    Vergelijken van vaktitels dmv md5-hashes

    Vergelijken van vaktitels dmv md5-hashes

    Oh ja?
    Want als we zowel vak 125 online als het vak 125 offline willen behouden, dan zal dat niet gaan. We zouden 1 van beide immers overschrijven met het vak dat het laatst werd aangemaakt.

    Of stel: Jan Janssens synchroniseert in februari zijn data en vertrekt een maand op vakantie. In maart vinden er verschillende grote wijzigingen plaats in de online database. In april keert Jan Janssens terug, kan niet synchroniseren, maar maakt toch een aanpassing aan de data en wil dan zijn veranderingen online opslaan.

    Probleem! Hoewel de data van Jan Janssens wel over de recentste data beschikt, is het zeker niet zijn data die we online willen hebben.

    Data samenvoegen (mergen) met de reeds bestaande data, is door de aard van de data niet mogelijk. Oeps.

    Volgende idee: we bewaren beide vakken, wetende dat dat niet ideaal is.

  4. Bewaar beide vakken.
    Bewaar beide vakken. Ok. Maar hoe? Ze hebben hetzelfde ID. Moeten we dan nog een tabel aanmaken die het online ID koppelt aan het offline ID? Moeten we het vak-ID aanpassen? Maar hoe? En wat wanneer er al een vak bestaat met dat nieuwe ID? Gaan we bij elke synchronisatie dan op zoek gaan naar alle vrije ID’s en dat vak dan dat nieuwe ID geven? Op die manier zou het kunnen dat een vak tijdens zijn bestaan verschillende keren van ID verandert. Ook niet echt ideaal denk ik dan.

  5. Hou een logboek bij met veranderingen.
    Vanaf hier is het pure improvisatie, louter gebaseerd op een denkoefening en (nog) niet geprogrammeerd. Informatie onder voorbehoud dus.In onze database maken we een nieuwe tabel aan waarin we alle veranderingen opslaan.
    Als er bij die veranderingen bijvoorbeeld een vak aangemaakt is en online heeft er nooit zo’n actie plaatsgevonden dan weten we, ongeacht het vak-ID, dat er online een nieuw vak aangemaakt moet worden. Omgekeerd werkt dat ook uiteraard, als er online een vak is verwijderd en dat vak is nog wel offline aanwezig dan kunnen we dat vak verwijderen. Hoe weten we nu welk vak verwijderd moet worden als we vak-ID’s niet mogen vertrouwen?
    We slaan bij elke verandering een md5-hash van de data op, we vergelijken dan de md5-hash van die online data met de md5-hash van onze data offline.Zo’n tabel met alle aanpassingen wordt uiteraard in no-time gigantisch groot. We slaan immers alle data dubbel op.
    Op zich geen probleem, maar we hoeven die data niet voor eeuwig te bewaren.

  6. Vergeet veranderingen
    Offline is dat redelijk eenvoudig. Als het device verbinding gemaakt heeft met de server en alle gegevens gesynchroniseerd zijn, dan kan het volledige lokale logboek met de veranderingen verwijderd worden. Online is het iets ingewikkelder. Omdat we niet weten hoeveel devices er zijn en sommige devices maar 2 of 3 keer synchroniseren en daarna nooit meer, kunnen we onmogelijk alle veranderingen blijven bijhouden.

Deze manier van data synchroniseren is het resultaat van een persoonlijke denkoefening en dus verre van perfect. Moesten er slimme mensen op de wereld zijn die voor dit probleem een betere oplossing hebben,  lees ik hun oplossing graag in de commentaren hieronder.

Note: In dit voorbeeld gebruik ik als voorbeeld md5 om data te encrypteren. Ik ben mij er van bewust dat er andere en betere manieren bestaan om data one-way te encrypteren. Mocht je dus echt gevoelige data willen opslaan doe je er goed aan jezelf hierover eerst te informeren. ;-)