maandag, augustus 30, 2004

 

seweso is Woovi aan het herschrijven

Ondanks dat ik momenteel erg druk ben met mijn werk en mijn super lieve leuke vriendin ben ik toch weer bezig met Woovi. Theoretisch had ik al lang klaar moeten zijn met release 0.4 maar ik vond het nodig om de database-core te herschrijven. De reden hiervoor was omdat ik even een stap terug moest doen omdat ik tegen een 2-tal problemen aan liep.

1) De opslag van geserialiseerde objecten welke momenteel gewoon als nummers werden opgeslagen. Wat een probleem was omdat je dan niet meer het verschil tussen nummers en objecten kon zien. Wat weer onhandig is als je ze oo wil uitlezen en er verder mee wil werken. De reden waarom ik ze niet als objecten wil opslaan is omdat het aanmaken van objecten in Foxpro te langzaam is. Daarnaast zou ik het probleem ook op de C++ manier op kunnen lossen waar alles een nummer is en alle variabelen sterk getypeerd zijn. Dus daar denk ik nog even over na.

2) Ik ben er ook nog niet uit hoe ik lijsten moet implementeren. Voor enkele lijsten had ik namelijk simpel een get en set functie gemaakt maar dit is voor hele lijsten geen optie omdat het daardoor moeilijk is om later extra functionaliteit toe te voegen. En dat betekend dat ik een goede interface moet schrijven voor lijsten, en daarbij moet ik goed nadenken over hoe en wanneer gegevens geupdate worden vanuit een grafische (en niet grafische) omgeving.

Dus wanneer komt release 0.4? Ja eigenlijk weet ik dat niet zo goed... Ik wil graag alles in één keer goed doen zodat ik de interface tussen database én presentatie-laag niet later hoef aan te passen... maar dat is wellicht een utopische gedachte. Misschien moet ik gewoon deze lagen even houtje-touwtje aan elkaar knopen zodat het tenminste werkt. En vervolgens extra functionaliteit proberen toe te voegen en als ik dan ergens tegenaanloop de boel weer te herschrijven. *-)

Ik heb trouwens tijdens het herschrijven een officiële database-laag gemaakt zodat alleen vanaf die laag de database benadert word (en mag worden). Deze laag is zo klein en simpel mogelijk gemaakt en behelst ook het aanmaken van een nieuwe database. Verder is de laag nog steeds functioneel geschreven en niet object georienteerd maar dat komt doordat de oo langzamer is in foxpro. Maar doordat alles nu netjes is samengepakt zou het veranderen van deze laag niet zo moeilijk meer moeten zijn.

Daarnaast heb ik een concept Woovi-uitleg liggen, moet nog wel wat aan gedaan worden maar ik hoop dat woovi hierdoor al een stuk duidelijker word:

introductie
Woovi is ontstaan uit de gedachte dat je met simpele bouwblokken toch complexe systemen in elkaar kan zetten. Als bouwblokken heb ik gekozen voor objecten omdat deze het meest tot de verbeelding spreken en ook de basis vormen voor alle moderne programmeer-talen. Omdat je aan bouwblokken alleen niet genoeg hebt kun je relaties tussen objecten aanleggen, dit kun je zien als het cement.

inspiratie
Woovi is geinsprireerd door wiki's, microsoft access, formdesk en zelfs assembly. Wiki's omdat deze geweldige (zelf)beschrijvende eigenschappen heeft, intuitief werkt én waar je gegevens makkelijk kan structureren.

identificatie van objecten
Omdat alle moderne databases id's gebruiken in plaats van namen heb ik besloten dat alle objecten m.b.v. een id worden geïdentificeerd. Het nadeel van namen is dat je per ongeluk dubbele namen kan krijgen, vooral als meerdere mensen met het systeem werken én is het meteen taal-afhankelijk. Woovi is niet taal afhankelijk, in tegenstelling tot zo'n beetje alle programmeer-talen.

toch weer namen :$
Maar omdat mensen toch makkelijker met namen kunnen werken dan met nummers is er wél de mogelijkheid om met namen te werken, maar dit is alleen in de presentatie-laag. De notatie voor een woovi-object is {naam} wat zoveel zegt als "geef mij het object met de naam 'naam'".

objecten en relaties
Het object {naam} is meteen een heel leuk voorbeeld. Want dit object is tevens een eigenschap. Zo kan bijvoorbeeld een persoon of een bedrijf een {naam} hebben. Maar nog interessanter is dat bijvoorbeeld een eigenschap zoals {naam} ook een {naam} heeft. In woocode zou je dat als volgt noteren {naam}.{naam} = "naam" wat in gewoon nederlands betekent "de naam van het object naam is 'naam'". En die gegevens worden als relatie opgeslagen.

relaties
In woovi is een object zonder relaties statisch, het ís alleen. Met behulp van relaties kun je invulling aan een object geven. Zo kun je voor een object bepaalde eigenschappen invullen zoals de {naam} of de {omschrijving}, maar kun je ook meer geavanceerde dingen doen zoals aangeven welk type object het is of van welk object dit object een uitbreiding is.

opslag
Op het moment van dit schrijven is een object eigenlijk alleen een nummer, dat betekent dat echt alles word geregeld via relaties. Dat betekent dat als je een nieuw object aanmaakt je in feite alleen een nieuw nummer krijgt en als je vervolgens niks met dit object doet dan bestaat het object eigenlijk niet meer. Nergens word dus bijgehouden dat het object bestaat, dit moet je doen door relaties aan te leggen. Een relatie hang altijd aan een object, is altijd van een bepaald type (ook een object) én bevat data (wat eventueel een verwijzing naar een ander object kan zijn.

voorbeelden
// De naam van naam is naam
{naam}.{naam} = "naam"

// De omschrijving van de eigenschap naam
{naam}.{omschrijving} = "Een identificerende naam welke o.a. gebruikt word om woocode leesbaarder te maken."

// Een naam is een string
{naam}.{uitbreiding_van} = {string}

// Een naam is een unieke eigenschap
{naam}.{uniek} = .T.

// Uitleg van de eigenschap uniek
{uniek}.{omschrijving} = "Als een eigenschap uniek is dan kan maar één object een bepaalde waarde bevatten voor deze eigenschap."




Zelfbeschrijvend
Uitbreidbaar
Super generiek
Uitwisselbaar (als je guids zou gebruiken)



vrijdag, augustus 27, 2004

 

Tweakers vechten tegen kinderziekte

Tweakers.net - Nieuws [ DPC: Tweakers vechten tegen kinderziekte ]

Ik wil dat iedereen meedoet! Klik op het linkje hierboven en spread the news!

woensdag, augustus 25, 2004

 

Mirjam je bent helemaal geweldig!

Ik hou van jou! Hoewel mijn gevoel voor jou moeilijk met woorden te beschrijven is (alles lijkt ontoereikend) zal ik het toch proberen :).

Mirjam ik vind je geweldig, mooi, lief (als in cute, sweet and nice), lkkr, leuk, slim, sexy, intrigerend, grappig, vrolijk...

zaterdag, augustus 21, 2004

 

The genealogical tree of Benjamin van den Broek

maandag, augustus 16, 2004

 

Het mooiste wat de mens maakt

maandag, augustus 09, 2004

 

Privé zwembad

Sinds zaterdag ben ik de trotse bezitter van een privé zwembad! Ik heb hem zelf buiten geinstalleerd op mijn balkon. Volgens mij kun je er wel met zijn 6'en in :). En dit alles voor maar 19 euri!

Alleen jammer dat Mirjam op vakantie is, want in je eentje romantisch met kaarslicht in het water liggend naar de sterren kijken is niet helemaal optimaal...

Archives

augustus 2003   september 2003   oktober 2003   november 2003   december 2003   januari 2004   februari 2004   maart 2004   april 2004   mei 2004   juni 2004   juli 2004   augustus 2004   september 2004   oktober 2004   november 2004   december 2004   januari 2005   februari 2005   maart 2005   april 2005   mei 2005   juni 2005   juli 2005   augustus 2005   september 2005   oktober 2005   november 2005   december 2005   januari 2006   februari 2006   maart 2006   april 2006   mei 2006   juni 2006   juli 2006   september 2006   november 2006  

This page is powered by Blogger. Isn't yours?