Inhoudsopgave
-Voorwoord
-Updates, upgrades en opschoning kernels
-Windows 8: de verkenner en andere zaken
-Helpmij.nl prijsvraag februari
-CookiesOK
-Cursus Access - Hoofdstuk 17
-MiniWE
-Cursus Fotografie - Deel 4
-Iron, het "Google Chrome" dat geen info doorstuurt
-Postvak-in
 

De redactie bestaat uit:
profpc (Eindredacteur)
CorVerm
Dillondarko (Junior Redacteur)
Djoane
ErpCity
femke98
jackall
OctaFish

De redactie is te bereiken op nieuwsbrief@helpmij.nl. Naar dit e-mailadres géén vragen sturen die betrekking hebben op computers en dergelijke. Deze horen op het forum geplaatst te worden.

Oplage
De nieuwsbrief wordt naar 28684 unieke e-mailadressen verstuurd. Deze e-mailadressen zijn via opt-in geselecteerd.

Adverteren
Indien u een advertentie wilt laten plaatsen in deze nieuwsbrief neem dan contact op met de redactie.

nod32 bestellen

Advertentie informatie aanvragen

Aan- en afmelden
Om u aan te melden voor de nieuwsbrief kunt u naar deze pagina gaan.
Wilt u de volgende uitgaven niet meer ontvangen, dan kunt u zich hier afmelden. Is deze nieuwsbrief naar u doorgestuurd en wilt u hem zelf ontvangen? Ga dan naar deze pagina en meldt u aan. U zult dan automatisch de volgende nieuwsbrief ontvangen.

Wilt u nog eens een artikel nalezen? Wanneer u lid van de vereniging bent, kunt u hier in oude nieuwsbrieven bladeren.

DISCLAIMER
Alle handels en/of productnamen hier vermeld, zijn eigendom van de respectievelijke eigenaars. De redactie van de Helpmij Nieuwsbrief gaat uiterst zorgvuldig te werk bij de vergaring, totstandkoming en publicatie van de informatie in de nieuwsbrief. Niettemin kunnen er geen rechten worden ontleend aan de inhoud van de nieuwsbrief en sluit de redactie iedere aansprakelijkheid uit voor eventuele gevolgen, waaronder begrepen directe en indirecte schade. Het toepassen van informatie en gebruik van software is voor eigen risico. De adressen van de abonnees zullen nimmer openbaar worden gemaakt en/of verkocht aan derden. Bij misbruik van het distributiesysteem van de nieuwsbrief door onbevoegden of een mogelijke storing, van welke aard dan ook, kan de redactie niet aansprakelijk gesteld worden voor eventuele daaruit voortvloeiende schade. Het is niet toegestaan om de inhoud, of delen daarvan, zonder voorafgaande schriftelijke toestemming te gebruiken.

De redactie heeft het recht om (ingezonden) bijdragen zonder opgaaf van redenen te weigeren, dan wel te wijzigen of in te korten.


Voorwoord

Auteur: profpc

Top

Nou de afgelopen maand hebben we het mogen meemaken. Wat is er een sneeuw gevallen! Als ik me niet vergis was er vorig jaar rond deze periode ook al sneeuw gevallen. Als dit zo door gaat kunnen we beter de Kerstvakantie van de schoolkinderen een paar weken opschuiven. Dit geldt volgens mij ook voor de zomervakantie. Was het niet zo dat de afgelopen jaren het juist mooi weer werd vlak tegen het einde van de zomervakantie?

Ach ja, veel kinderen hebben plezier gehad van de sneeuw en ik heb zelfs kinderen gezien die op het ijs speelden (slootjes, meren waar laag water is). Maar de sneeuw heeft lang genoeg geduurd. Ik heb al veel mensen horen zeggen dat ze blij zijn dat de sneeuw weer weg is.

Deze maand hebben we weer een pracht aan artikelen. Dit keer zelfs een extra grote versie van de Access-cursus. We zijn alweer aan hoofdstuk 17 beland. Mocht je nou eens een reactie willen geven n.a.v. één van onze artikelen? Dit kan altijd via het mailadres nieuwsbrief@helpmij.nl. Let op: vragen die betrekking hebben op computers en dergelijke worden niet via dit mailadres behandeld. Deze kunnen gewoon op het forum worden gesteld.

Veel plezier met het lezen van de nieuwsbrief!




Updates, upgrades en opschoning kernels

Auteur: femke98

Top

Wat is het verschil tussen apt-get update, apt-get upgrade en apt-get dist-upgrade

Je kan natuurlijk de updates voor je systeem automatisch laten verlopen, maar soms wil je dit in eigen hand houden. Een veel gebruikte methode om het systeem handmatig bij te werken vanuit de terminal, is deze gecombineerde terminalopdracht:
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

Het gaat dus om drie dingen die je doet met het programma apt-get.

Met "update" werk je de pakketbronlijsten bij. Je laat het systeem weten dat je nieuwe updates wilt installeren. Er verandert dus nog niets aan je systeem.

Met "upgrade" waardeer je uitsluitend die pakketten op, die al in je systeem zijn geïnstalleerd. De upgrade vervangt dus alleen een bestaande oudere pakketversie. Het installeert alleen een pakket dat er al is.

Met "dist-upgrade" waardeer je het systeem op naar meestal een nieuwere kernel. Nieuwere kernels vervangen de oude in principe niet (tenzij het een zeer minieme verbetering betreft), de oude kernel blijft in je systeem. Een nieuwere kernel komt er dus gewoon "nieuw" bij.

Het levert je alleen maar bijgewerkte kernelversies met foutreparaties op, die zijn bedoeld voor je Ubuntu-versie. Een voorbeeld: Ubuntu 12.04 is uitgekomen met kernel 3.2.0.23. Via dist-upgrade krijg je wel kernel 3.2.0.35 of hoger, maar niet kernel 3.3.x of hoger. Ubuntu 12.04 zal altijd bij 3.2.0.x blijven.

Voor alle duidelijkheid: met bovengenoemde terminalopdracht waardeer je dus niet je hele systeem op naar een nieuwe versie van je Ubuntu (bijvoorbeeld van 12.04 naar 12.10). Daarvoor bestaat een andere opdracht, maar de meeste mensen met hun ervaring wijzen het gebruik hiervan af. Een hele verse installatie van de nieuwste Ubuntu/Xubuntu is altijd beter!

In Mint gaat het iets anders met de kernels

Wanneer je in Mint nieuwere kernels automatisch met de updates wilt krijgen, dan zul je alle niveaus in het updatebeheer moeten aanvinken. Dat gaat als volgt:

Menu>Updatebeheer>Bewerken>Voorkeuren.

Vink daar alle niveaus aan, dus 1 t/m 5. Ondanks dat er staat dat het gevaarlijke pakketten zijn, kan je niets gebeuren. Sinds ik met Mint werk (en dat is al een lange tijd kan ik je verzekeren) is mijn ervaring dat er nog nooit iets verkeerds is gegaan met de updates.

niveaus

Verwijderen van de oude kernels in je systeem

Hoe je dit het beste kunt doen, daar zijn de meningen nogal over verdeeld. De een zweert bij het handmatig verwijderen van de kernels in Synaptic, een ander vindt het programma Ubuntu Tweak daar makkelijk voor. Voor beiden meningen is wat te zeggen, na uitleg hieronder kan je zelf beslissen hoe je dit wilt doen, indien het nodig is. De opschoning via Synaptic is wel iets betrouwbaarder dan via Ubuntu Tweak.

Allereerst de vraag waarom je oude kernels zou willen verwijderen. Het antwoord hierop is simpel, je maakt er ruimte mee en je hele waslijst bij de opstart in de grub wordt stukken minder. Wel is het noodzaak om 2 kernels te laten staan, want stel je hebt toch een probleem met je systeem met de nieuwste kernel, dan kan je dus terug naar de vorige kernel die wellicht wel goed werkte.

Schoonmaken via Synaptic

Voordat je aan de schoonmaak begint, kan je in je grub kijken hoeveel kernels je hebt staan en welke twee de laatste zijn. Schrijf de nummers op zodat je je niet kan vergissen bij de schoonmaak.

Sinds Ubuntu 12.04 heeft het geen Synaptic meer aan boord dus zul je deze moeten installeren. Open het Ubuntu softwarecentrum en installeer eerst Synaptic. Klik daarna op Synaptic pakketbeheer via de Dash. Mint heeft standaard Synaptic aan boord, die vindt je terug in Menu>Beheer.

Zoekterm in Synaptic:
linux-headers
(gebruik niet het snelzoekveld maar de zoekknop ernaast, die is wat zorgvuldiger.)

Markeer alle oude geïnstalleerde kernels die je wilt verwijderen, met je rechtermuis klik je op "volledig verwijderen". Elke kernel heeft drie geïnstalleerde pakketten: linux-headers-xxx, linux-headers-xxx-generic en linux-image-xxx-generic. Verwijder ze alle drie.

Synaptic

Let er goed op dat je niet de twee laatste kernels markeert voor verwijdering, doe je dat wel dan heb je geen systeem meer. Druk daarna op de knop Toepassen.

Herstart uw computer.
Wanneer je dan de grub bekijkt, zul je merken dat je hele lijst met oude kernels is verdwenen.

Verwijderen via Ubuntu Tweak

Wanneer je Ubuntu Tweak opstart, dan ga je naar Schoonmaak. Aan de linkerkant zie je allerlei zaken staan waaronder Systeem en dan “oude kernel”. Vink “oude kernel” aan en in het rechterscherm zal je nu alle kernels geven die weg kunnen. Het mooie van Ubuntu Tweak is dat deze automatisch de laatste 2 kernels laat staan, dus die zul je niet in het hele rijtje vinden. Wil je zelf toch wat meer kernels bewaren, dan kan dat uiteraard door deze niet aan te vinken in het veld.

Zoals je ziet is mijn lijst aardig lang en dus kan er wel wat weggehaald worden. Ik wil kernel 35 bewaren en dus vink ik deze niet af. Daarna kan je gewoon op verwijderen klikken. Ik zie gelijk dat ik 1,8 GB aan ruimte ga winnen!

Ubuntu Tweak

Na opschoning (en als je zo'n lange lijst hebt, dan is het wel noodzakelijk dat je wat geduld hebt) dan zie ik dat nummer 35 keurig is blijven staan:

kernel 35

Als je in Ubuntu Tweak dan toch bezig bent, dan kun je de rest ook opschonen. Wanneer je dan Pakketconfiguratie aanvinkt, dan zul je zien dat ook daar nog verwijzingen worden verwijderd van de oude kernels die je net al opgeschoond hebt.

Pakketconfiguratie

Als je alles hebt doorlopen, dan zul je het volgende te zien krijgen:

Cool

Let wel: alles wat hierboven is beschreven over het verwijderen van oude kernels is geheel op eigen risico! Omdat de opschoning met Ubuntu Tweak bij mij wel is goed gegaan, betekend dat niet dat het op jouw systeem ook goed zal gaan. M.a.w. je hebt geen garantie! Denk daaraan!!

Veel succes!




Windows 8: de verkenner en andere zaken

Auteur: CorVerm

Top

Windows 8 naar je eigen inzicht laten werken hoe doe je dat?

In de door mij geschreven artikelen betreffende Windows 8 gaat het over het feit hoe we zo simpel mogelijk met dit besturingssysteem kunnen werken. Zoals eerder gezegd heeft lang niet iedereen de behoefte om vanaf het Startblad, voorzien van (app)-tegels, te werken, zeker de “gewone” computergebruiker niet. Lees in dat verband dit artikel er nog maar eens op na. Om een beter beeld te krijgen van wat het uitgangspunt over het werken met Windows 8 is, zonder gebruik te maken van de nieuwigheden, lees dan ook dit artikel nog maar eens even.

De verkenner

De verkenner van Windows 8 is uitgerust met een lint (Ribbon) zoals we dat kennen van de Microsoft Office versies vanaf versie 2007. Weliswaar is het lint in de verkenner een stuk overzichtelijker dan dat van Office, maar de vraag is of het lint geen overdaad aan allerhande knoppen bevat. Misschien zijn al die knoppen wel werkzaam bij het gebruik van een aanraakscherm, maar het vele klikken met de muis is minder interessant. De verkenner in Windows 7 voldeed en voldoet nog steeds prima.

Wat opvalt is dat de verkenner nog steeds niet is op te delen in twee vensters, het verplaatsen van bestanden is en blijft dus nog steeds een nare klus. Je had toch, te midden van al die veranderingen in Windows 8, kunnen en mogen verwachten dat een dubbel venster in de verkenner nu eindelijk eens tot de mogelijkheden zou behoren. Jammer maar helaas. We blijven voor het fatsoenlijk verplaatsen van bestanden, zeker als het om veel bestanden gaat, afhankelijk van een extern programma.

 februari 2013: verplaatsen_kopiëren..jpg

Alhoewel, Microsoft maakt het ons op hun manier best wel gemakkelijk om bestanden te verplaatsen en/of te kopiëren in Windows 8 . In ieder geval is het een stapje vooruit ten opzichte van vorige Windows versies. Aan de andere kant blijft het hinken op twee gedachten. Het is en blijft overzichtelijker om bestanden in een dubbel venster te verplaatsen en/of te kopiëren.

Om hen, die niet over Windows 8 beschikken, een beeld te geven hoe het verkenner lint in Windows 8 er uitziet de onderstaande (verkleinde) afbeeldingen. Klik op de afbeeldingen  om de ware grootte te zien in een nieuw venster. De breedte van de nieuwsbrief laat het niet toe om hier de afbeeldingen op ware grootte te tonen.

februari 2013: verkenner 1klein..jpg
De tab Start

februari 2013: de tab delen klein..jpg
De tab Delen

februari 2013: de tab beeld klein..jpg
De tab Beeld

Gooi het functielint uit de verkenner van Windows 8. Dat is althans een van de meningen die ik zo hier en daar lees. Is het dan echt zo erg met het lint in de verkenner gesteld? Op zich valt dat best wel mee. Het is maar, net zoals zoveel andere zaken in Windows 8, waar je de voorkeur aan geeft.

Maar als je van het lint af wilt dan is dat een kleine moeite. Download Ribbon Disabler for Windows 8 en schakel in een handomdraai naar het verkenner menu van Windows 7. Pak het gedownloade .zip-bestandje uit en klik op het bestandje Ribbon disabler2.exe (32-bit) of op Ribbon disabler2 x64.exe voor een 64 bit systeem.

februari 2013: ribbon disabler..jpg

Krijg je spijt? Start dan het programmaatje opnieuw op om terug te keren naar het originele Windows 8 verkenner lint.

Sneltoetsen in Windows 8

Net als in vorige Windows versies zijn er een aantal sneltoetsen voorhanden onder Windows 8. Uiteraard geven de sneltoetsen onder Windows 8 andere resultaten dan onder de eerdere versies.

Hieronder een lijstje met nuttige toets combinaties:

 

Sneltoets

Gebeurtenis

1

Windows-toets + X

Computerbeheer

2

Windows-toets + F

Charm bestanden zoeken

3

Windows-toets + Q

Zoeken in apps

4

Windows-toets + W

Zoeken in instellingen

5

Windows-toets + R

Uitvoeren

6

Windows-toets + L

Computer bevriezen

In plaats van voor iedere instelling eerst de zoek charm te moeten openen is het veel handiger om van sneltoetsen gebruik te maken. Het biedt de mogelijkheid om alweer een stuk simpeler onder Windows 8 te werken. Vooral toetscombinatie 1 geeft een ruim aanbod aan mogelijkheden.

 februari 2013: apparaatbeheer..jpg

Op de plaats waar voorheen het startmenu zat komt nu een lijst met direct te benaderen opties tevoorschijn. Door eenmaal de toetscombinatie in te drukken en eenmaal met de muis te klikken ben je snel in bijvoorbeeld het Configuratiescherm, Computerbeheer Taakbeheer, of in Apparaatbeheer aanbeland.

De andere toetscombinatie is nummer 6 in het lijstje. Moet je snel achter de computer vandaan dan druk je de bij nummer 6 aangegeven toetscombinatie in en de computer “bevriest”. Om opnieuw op te starten is het wachtwoord vereist. Niemand die dus even snel een blik op je werk kan werpen tijdens je afwezigheid.

Taakbeheer

Open om Taakbeheer te openen de charm Zoeken, typ Taakbeheer in en tik of klik op Taakbeheer. Dat is volgens Microsoft de weg om in Taakbeheer terecht te komen. Uit het oogpunt van Microsoft gezien is dat een logische gang van zaken, zij zijn tenslotte overgestapt op werken met apps en de bijbehorende  interface, het Startblad. Van daaruit dienen wij (in de optiek van Microsoft) te werken. Wij weten inmiddels wel beter, want wij gebruiken de toetscombinatie Windows-toets + X. Of, zoals altijd al mogelijk was: klik met rechts op de taakbalk en kies aldaar voor Taakbeheer.

februari 2013: taakbeheer lkein..jpg

Met het nieuwe Taakbeheer kun je eenvoudig zien welke apps en processen de middelen op je computer gebruiken. Wil je bepalen welke apps (programma’s) bij het opstarten moeten worden uitgevoerd? Dat is allemaal makkelijk te vinden en uit te voeren. Voor technisch georiënteerde gebruikers is de nodige info te vinden onder de andere tabs.

Het valt op dat het venster erg simpel is gehouden. Bij de eerste opstart krijg je enkel een lijst te zien met de actieve programma’s en apps. Om een vastgelopen programma te beëindigen,

klik je het aan en klik je op Beëindigen. Klik op Meer details om alle onderdelen van Taakbeheer in beeld te krijgen.

februari 2013: taakbeheer processen..jpg
De tab Processen

 februari 2013: taakbeheer apps..jpg
De tab App-geschiedenis

Al met al kunnen we met Windows 8 Taakbeheer best wel tevreden zijn.




Helpmij.nl prijsvraag februari

Auteur: Helpmij.nl

Top

Ook in februari is er weer een leuke prijs te winnen met onze prijsvraag, doe dus (weer) mee!

februari 2013: pt1080_270..jpg Stuur een e-mail met het juiste antwoord op de onderstaande twee vragen vóór 28-02-2013 naar wedstrijd@helpmij.nl en maak kans op dit handige Brother P-Touch PT-1080 professioneel beletteringssysteem! Bovendien ontvangt de winnaar een licentie voor Nod32 antivirus software van ESET

De vragen:

  1. Hoeveel beheerders heeft Helpmij.nl
  2. Wat zijn hun "nicknames" op het forum

De prijswinnaar van onze januariprijsvraag:

De prijswinnaar van de maand januari is Theo Hoogsteder uit Rijen. Hij ontvangt de schitterende Dell 1250c LED kleurenlaserprinter. Bovendien ontvangt de winnaar een licentie voor Nod32 antivirus software van ESET

De prijzen worden aangeboden door:

oktober 2012: Logo HM..jpg januari 2013: Azerty logo..jpg
oktober 2012: SpicyLemon-logo..png

*Bestuur en wedstrijdcommissie zijn uitgesloten van deelname!

*De winnaar wordt bekend gemaakt in de maart editie van onze nieuwsbrief.




CookiesOK

Auteur: CorVerm

Top

Sinds 26 mei 2011 is de cookiewet van kracht. Dat houdt in dat er op zeer veel websites een melding verschijnt dat de cookies geaccepteerd dienen te worden, vaak middels (zeer) storende, irritante vensters.

Ben jij die vensters ook zat? CookiesOK probeert mensen de mogelijkheid te bieden om in één keer bijna alle meldingen goed te keuren en daarmee het web weer zo maken zoals het voorheen was. Zonder vervelende vensters die je vragen om cookies te accepteren.

Ga naar deze site om iets meer te lezen over cookies en wat die nou eigenlijk doen. Op die site vind je ook de links waar de plug-ins zijn te downloaden om CookiesOk in je browser te installeren.

De plug-ins zijn vooralsnog alleen voor Firefox en Google Chrome voorhanden.

Het bovenstaande is één kant van het verhaal. Gewoon domweg alle cookies accepteren, geen vervelende vensters meer en klaar. Het cookieprobleem kan ook anders aangepakt worden. Je kunt cookies weigeren door de instellingen in je browser selectief aan te passen. Alle cookies weigeren levert vaak geen goed werkende websites op. Aangezien browsers onderscheid maken tussen nuttige cookies en cookies van derden is het beter om cookies inderdaad selectief toe te staan. Dat doe je op de volgende manier:

Cookies van derden weigeren in Internet Explorer

  1. Ga naar Extra > Internetopties > tab Privacy. Klik onder Instellingen op Geavanceerd.
  2. Vink Automatische cookieverwerking opheffen aan. Ga naar Directe cookies en zet een vinkje voor Accepteren. Zet achter Indirecte cookies een vinkje voor Blokkeren en klik op OK.

In Firefox

  1. Ga naar Extra > Opties. Onder het tabje Privacy kiest u in de lijst bij Geschiedenis de optie Aangepaste instellingen gebruiken voor geschiedenis.
  2. Vink Cookies van derden accepteren uit en klik op OK.

In Chrome

  1. Klik op het steeksleuteltje rechts bovenin > Opties > tab Geavanceerde opties > Instellingen voor inhoud...
  2. Kies in de linkerlijst Cookies, vink Alle cookies van derden zonder uitzondering blokkeren aan en klik op Sluiten.



Cursus Access - Hoofdstuk 17

Auteur: OctaFish

Top

Variabele gegevens gebruiken (Normaliseren vervolg)

Vanaf het begin van de cursus Access heb ik regelmatig het begrip ‘Normaliseren’ laten vallen. En ook op het forum kom je die term regelmatig tegen in berichten. Maar wat zijn de valkuilen van een te goed genormaliseerde tabel? En hoe ver moet je überhaupt gaan met normaliseren? Op die vragen ga ik nu proberen een antwoord te geven.

Om nog even op te frissen hoe normaliseren ook al weer werkt, een kort fragment uit Hoofdstuk 2 van de cursus:

Het normaliseren van  een database

Normaliseren is, zoals we waarschijnlijk nu wel weten, het proces waarbij we de structuur van de database beoordelen op o.a. het voorkomen en voorkomen (wat is onze taal toch mooi: één woord met twee totaal verschillende betekenissen: vóórkomen en voorkómen bedoel ik dus J) van dubbele gegevens, de zogenoemde dataredundantie. Daarom slaan we in een tabel Bestellingen niet alle klantgegevens op, maar alleen een KlantID. Want op basis van dat klantID kun je de voor de bestelling noodzakelijke gegevens middels een query makkelijk opzoeken. En voor het bestelde artikel vullen we het ArtikelID, en niet alle artikelgegevens.

Een proces om gegevensverzamelingen te optimaliseren is het normaliseren van de tabellen.

 Daarbij wordt per tabel bekeken welke gegevens we willen gebruiken, en hoe die gegevens zich verhouden tot de overige gegevens in dezelfde tabel. We onderscheiden daarbij een aantal niveaus:

  • 1e Normaalvorm
  • 2e Normaalvorm
  • 3e Normaalvorm
  • 4e Normaalvorm
  • 5e Normaalvorm
Boyce-Codd Normaalvormen

Deze normalisatie vorm is vastgelegd in de Boyce-Codd normaalbeschrijving. In het lijstje geldt dat elk opvolgend niveau het vorige niveau overerft, en er nieuwe voorwaarden aan toevoegt.
De 2e normaalvorm voldoet dus aan de 1e normaalvorm en voegt nieuwe eisen toe; de 3e normaalvorm voldoet aan de 2e normaalvorm (en dus automatisch ook aan de 1e) en voegt nieuwe voorwaarden toe.

Meestal wordt een database genormaliseerd tot de 3e normaalvorm; dat is voor een gemiddelde database doorgaans genoeg. In deze cursus gaan we dan ook niet verder dan de 3e normaalvorm.

Nevenaspecten van normaliseren

Normaliseren is prachtig, en helpt je bij het voorkomen van dubbele gegevens. Tot zover dus niks dan goeds. Maar sommige gegevens fluctueren regelmatig, en laten zich niet zomaar normaliseren. Om dat te visualiseren, hoef je alleen maar naar de tabel Klanten te kijken.

Klantgegevens zijn doorgaans stabiele gegevens. Een klantnaam verandert zelden, zijn adres zelden. In die gevallen dat er een mutatie is, kun je die simpel doorvoeren in de tabel Klanten. Contactpersonen zullen wat sneller veranderen, maar daarvoor heb je de tabel Contactpersonen, en die bekijk je dan weer op dezelfde manier: het geslacht van een CP zal niet heel snel veranderen, zijn naam ook niet etc. Misschien de functie of telefoonnummer, maar die zijn ook snel aangepast.

Anders wordt het als je naar de Klanten kijkt in relatie tot een Bestelling. De klant(gegevens) liggen redelijk vast, maar wat te denken van het Afleveradres? Een klant kan een bestelling laten afleveren op zijn bekende adres, maar een specifieke bestelling kan net zo goed ergens anders afgeleverd moeten worden. Dus waar is dat afleveradres dan van afhankelijk? Van de klant, of van de bestelling? Je zou zeggen: het afleveradres is een eigenschap van de Bestelling, niet van de klant!

Kortom: de Normalisatie zou zeggen: klantID à Klantadres, maar bij een bestelling kun je net zo goed aparte velden nodig hebben voor de aflevering. Hoe je dat oplost, is een ander verhaal (in tabel Bestellingen, of middels een gekoppelde tabel Afleveradressen bijvoorbeeld).

Ander voorbeeldje: adressen. Normaliseren schrijft voor dat je herhalende gegevens uit de tabel verwijdert en in een eigen tabel opslaat. In extremis kun je zeggen dat straatnamen en huisnummers in een grote tabel met adressen ook herhalend zijn. Toch zal niemand het in zijn hoofd halen om huisnummers en straatnamen in eigen tabellen onder te brengen, en ze te koppelen. Al kun je, als je echt wilt standaardiseren, natuurlijk een koppeling maken met een postcodetabel, en adressen evalueren a.d.h.v. postcode + huisnummer.

Kortom: Normaliseren is een goede basis, maar zonder gezond verstand kun je eigenlijk geen goede database maken.

Case: de variabele artikelprijzen

In een database die in de 3e Normaal staat, heb je een aparte tabel voor Bestellingen met daarin de klantgegevens en bestellinggegevens, en een aparte tabel met de bestelde artikelen. Die zijn dus uit de tabel Bestellingen genormaliseerd door in de tabel [tBestellingRegels] een veld [BestellingID] op te nemen, en de tabel [tBestellingRegels] is op zijn beurt weer gekoppeld aan de tabel [tArtikelen] op basis van het veld [ArtikelID].

Een tabel [tBestellingRegels] zou er dus zo uit kunnen zien qua velden:

BestelRegelID, BestellingID, ArtikelID, Aantal, Datum_Geleverd

Bij elk nieuw artikel in de bestelling wordt dus een nieuw record toegevoegd, waarbij verwezen wordt naar het Bestelnummer, en het Artikelnummer. Uiteraard moet je wel het aantal te leveren artikelen per artikel invoeren, en is een veld Datum_Geleverd per artikel ook wel nuttig, omdat het kan voorkomen dat bij een aflevering niet alle bestelde artikelen geleverd kunnen worden. Die blijven dan in backorder staan.

De tabel [tArtikelen] bevat dan deze velden:

ArtikelID, Artikel, Prijs, BedrijfID, Opmerkingen, Inactief

In een query (voor een factuur bijvoorbeeld) kun je dan een volledige bestelling genereren door uit tBestellingen, tBestellingRegels, tArtikelen en tKlanten de juiste velden te selecteren, zoals [Prijs] uit [tArtikelen] en [Aantal] uit [tBestellingRegels]. In die query kun je dan een veld maken met de formule =[Aantal] * [Prijs] en daarmee weet je dan wat de totaalprijs is voor dat bestelde artikel.

Deze constructie is fantastisch genormaliseerd, maar heeft minstens één groot nadeel: als de prijs in de tabel [tArtikelen] verandert, dan heb je een stevig probleem! Niet zozeer voor de klant, want die heeft (bijvoorbeeld per mail) een document ontvangen met daarop de bedragen die hij moet betalen. Het probleem ligt in de db, waarin de ontvangen bedragen na verloop van tijd (namelijk vanaf het moment dat de eerste prijs is gewijzigd) niet meer kloppen met de overzichten die je zelf gebruikt, bijvoorbeeld als je een Totalen query maakt om de maandomzet te berekenen. Bij elke prijsverandering verandert de maandomzet. En dat mag natuurlijk niet!

De oplossingen!

De oplossing is op een aantal manieren uit te voeren, waarvan ik er in dit hoofdstuk 4 ga behandelen. En om het simpel te houden, zijn die oplossingen weer onder te verdelen in twee hoofdgroepen: een oplossing met behoud van (prijs)historie, en een oplossing zonder historie. De laatste variant is daarbij het simpelst, dus daar gaan we mee beginnen!

Oplossing 1: prijzen opslaan zonder historie

Als je wilt voorkomen dat de prijzen in een bestelling niet meer kloppen, dan is er maar één oplossing: de prijs opslaan in de tabel! En daartoe heb je dus een extra veld nodig in de tabel [tBestellingRegels], die je dan natuurlijk [Prijs] noemt. De tabel ziet er dan zo uit:

BestelRegelID, BestellingID, ArtikelID, Aantal, Prijs, Datum_Geleverd

Dit levert dan wel gelijk weer een probleem op, want hoe ga je dat vullen met de juiste artikelprijs? Het ArtikelID halen we uit de tabel tArtikelen, waar ook de prijs staat. Je kunt natuurlijk een keuzelijst maken voor ArtikelID, en één voor ArtikelPrijs. Maar dat is niet erg handig, want dat laat de mogelijkheid open om een verkeerde prijs bij een artikel te selecteren. En we willen natuurlijk geen fouten inbouwen.

Laten we eens kijken naar een voorbeeldje op basis van een Reiskosten formulier. Dat maakt gebruik van deze tabel:

 Eenvoudige prijzentabel

Je ziet een viertal brandstoftypes met hun prijs. Het datumveld is niet eens nodig, want je doet daar niet zoveel mee, anders dan controleren of de medewerkers de prijs wel op de juiste dag hebben bijgewerkt. Maar het gaat natuurlijk om het veld [Prijs].

In het formulier Reiskosten gebruiken we de tabel [Reiskosten] als basis. We slaan een datum op, het aantal liters, en middels de keuzelijst Brandstofsoort selecteren we het juiste type brandstof. De tabel is al aangepast volgens de techniek die hierboven is uitgelegd, dus we slaan de prijs van de brandstof per invuldag op.

 Reiskosten formulier

Normaal gesproken zouden we, als we de prijs niet opslaan, maar wel willen gebruiken, voor txtLiterPrijs een niet-afhankelijk veld gebruiken, en de prijs uit de keuzelijst cboBrandstofsoort halen. Die heeft deze code als Rijbron:

SELECT DISTINCT PrijsID, Switch([BrandstofType]=1,"Euro Normaal",[BrandstofType]=2,"Super",[BrandstofType]=3,"Diesel",
[BrandstofType]=4,"Gas") AS Brandstof, Prijs FROM tBrandstofprijs_eenvoudig;  

In de query zit de functie SWITCH die nog niet in de cursus aan bod is gekomen, en die misschien enige uitleg behoeft. De functie kun je gebruiken als een vervanger van de IIF functie, als het gaat om het vervangen van een veldwaarde door een vervangende waarde of tekst. Je geeft in de functie aan om welk veld het gaat, wat de waarde moet zijn en wat dan de vervangende waarde is. In algemene zin:

Switch([Veld]=Waarde1;”Nieuwe tekst 1”; [Veld]=Waarde2;”Nieuwe tekst 2”)

Switch is in tegenstelling tot IIF eendimensionaal; je moet de functie dus niet gebruiken om functies te nesten. In IIF kun je maximaal 7 niveaus diep nesten, en met wat trucjes kun je dus zo’n 14 verschillende waarden substitueren. Switch heeft die beperking niet; bovendien is de syntax vele malen overzichtelijker dan een  op 7 niveaus geneste IIF functie. In dit geval wordt de Switch functie gebruikt om de keuzelijst voor brandstof van de juiste tekst te voorzien. De keuzelijst in de tabel maakt gebruik van twee kolommen, waarbij kolom 1 de getallen 1-4 bevat, en de tweede kolom de naam van de brandstof. En met de Switch worden de getallen weer terugvertaald naar tekst.

Het tekstvak Literprijs vul je door als besturingselementbron de formule = cboBrandstofsoort.Column(2) te gebruiken, zoals in de afbeelding.

Maar dat levert dus het eerder aangehaalde probleem op, dat de prijs steeds verandert al naargelang de waarde in de tabel tBrandstof. Het veld [Prijs] moet dus gekoppeld zijn aan het tekstveld. De oplossing is, dat we het tekstveld txtLiterPrijs vullen vanuit de keuzelijst. Oftewel: als we een brandstof kiezen, dan wordt de prijs daarvan gelijk ingevuld in het tekstveld txtLiterPrijs. Je kunt dat doen bij de gebeurtenis van de keuzelijst. Tegelijkertijd kun je dan een formule maken die daarna de Totaalprijs berekent, want als je de prijs weet, en het aantal liters is ingevuld, dan kun je [Aantal] * [Prijs] uitvoeren om de totaalprijs te berekenen. De code op de keuzelijst ziet er dan zo uit:

Private Sub cboBrandstofsoort_Click()
    Me.txtLiterprijs = Me.cboBrandstofsoort.Column(2)

    Me.txtTotaalprijs = Me.txtLiterprijs * Me.txtLiters
End Sub

Korte uitleg: in de keuzelijst cboBrandstofsoort zitten 3 velden, waarvan het derde veld de prijs bevat. Deze wordt met Column(2) uitgelezen (lees de eerdere hoofdstukken als je niet weet waarom dit is).
Vervolgens wordt de berekening uitgevoerd.

Voordelen van deze methode:

  • Makkelijk  te implementeren (veld toevoegen, en koppelen in het formulier)
  • Betrouwbaar

Nadeel:

  • Geen historie op prijzen
  • Extra veld nodig voor de prijs
  • De prijs is simpel aan te passen in de tabel, dus data lastig te locken

Of het nadeel ook echt een nadeel is, moet je natuurlijk zelf bepalen. Ben je niet geïnteresseerd in de historie van je prijzen, dan kan deze methode prima werken, en hoef je niet verder te lezen!

Oplossing 2: opslaan met historie

Wil je de prijshistorie vastleggen, dan het je een iets andere werkwijze nodig. Om te beginnen: in de tabel [tBrandstofprijzen] volstaat het om een datumveld te hebben en een Prijs veld. Voor een bruikbare indeling hoef ik eigenlijk alleen naar de afbeelding van de tabel uit de vorige case te verwijzen, want dat is exact de tabel die we nu ook gebruiken. Alleen dus met meer records. Een voorbeeldje is bijvoorbeeld deze tabel:

Prijzentabel met datums

Je ziet dat er inmiddels voor elke brandstof wel een aantal prijswijzigingen is geweest, en dat de tabel dus een stevig aantal records bevat. De meest logische gedachte is natuurlijk, dat als je het reiskosten formulier invult, dat dan de meest recente records worden gebruikt. Oftewel: op 18 januari zij de actieve prijzen als volgt:

  • Euro normaal:        € 1,69.9
  • Super:                   € 1,85.2
  • Diesel:                   € 1,47.2
  • Gas:                      € 0,99.3

Dat betekent dus, dat we de keuzelijst cboBrandstofsoort van het formulier zodanig moeten aanpassen dat alleen deze waarden te kiezen zijn. Als dat mogelijk is, werkt het formulier eigenlijk hetzelfde als in de vorige situatie: we slaan netjes de prijs op bij het record, en dat verandert dan niet meer. Hoe vaak ook daarna de prijs nog wijzigt.

Omdat de hele situatie verder niet verandert, hoef ik alleen maar te laten zien hoe de query van de keuzelijst er nu uit komt te zien. En dat is als volgt:

SELECT DISTINCT PrijsID, Switch([BrandstofType]=1,"Euro Normaal",
[BrandstofType]=2,"Super",[BrandstofType]=3,"Diesel",
[BrandstofType]=4,"Gas") AS Brandstof, Prijs, Wijzigingsdatum FROM
tBrandstofprijs WHERE (PrijsID In (SELECT Last(PrijsID) AS LaatstePrijsID
FROM tBrandstofprijs GROUP BY BrandstofType;));

De query maakt, net als in het vorige voorbeeld, gebruik van de Switch voor de brandsoort. Wat nu het onderscheid maakt, is de WHERE voorwaarde. Zoals je in de tabel kunt zien, zijn er per brandsoort meerdere records. De opdracht is dus om de tabel zodanig te filteren dat van elke brandstofsoort het laatste record wordt opgezocht. Daarvoor wordt een subquery gebruikt, die groepeert op BrandstofType, en daarvan het laatste PrijsID pakt. Dit werkt alleen als er van elke brandstof minstens één record is, dus als je met een lege tabel begint, moet je wel voor elke brandstof één record aanmaken. Die fungeert dan als laatste, en wordt dan getoond in de query. In het voorbeeld wordt de query dan als uitkomst vertaald naar:

Where PrijsID In(18;19;20;21)

Kortom: de subquery maakt een filter van (in dit geval) 4 records, en dat zijn de brandstofprijzen die in de keuzelijst te kiezen zijn.

De werking van het formulier (en de tabellen) is dus in principe identiek aan het eerste voorbeeld, alleen bewaar je nu de oude prijzen, en bouw je een historie op. Altijd leuk om daar later weer grafiekjes op los te laten.

Voordelen van deze methode:

  • Redelijk makkelijk  te implementeren
  • Opbouwen van prijshistorie
  • Behoorlijk betrouwbaar

Nadeel:

  • Lastige query voor de keuzelijst
  • Extra veld nodig voor de prijs
  • Data makkelijk te wijzigen, en dus niet te locken

Deze oplossing is redelijk makkelijk te maken, en je legt de prijshistorie op de achtergrond ook nog vast.

Oplossing 3: Genormaliseerde tabel met twee datumvelden

De moeilijkste oplossingen maken geen gebruik van een extra (prijs)veld, en daarmee blijft de database dus goed genormaliseerd. Dat betekent, dat we de prijs moeten gaan bepalen op basis van het datumveld (of velden) in de tabel met prijzen. Die datums gaan we dan vergelijken met de declaratiedatum. Daarbij stuiten we echter al heel snel op een probleem. Kijk eens naar de datums in de volgende afbeelding waarop de prijzen van Euro Normaal zijn verhoogd. Ik pak er even twee uit: 06-01-2013 en 16-01-2013. Als je een declaratie invult op die twee datums, dan krijg je prima resultaat: € 1,66.2 en € 1,69.9 resp. Maar als de declaratiedatum 11-01-2013 is, heb je in Access een probleem.

In Excel zou zo’n klusje heel eenvoudig zijn, want je zoekt de datum dan simpel op met Vert.Zoeken. Deze functie zoekt ‘fuzzy’ naar een datum, en als die datum niet gevonden wordt, naar de eerstvolgende lagere datum. Oftewel: als je zoekt op 11-01-2013, dan vind je in de zoektabel 06-01-2013. En het resultaat dat je terugleest is dan de prijs die op die datum is vastgesteld. Simpel dus: Access zal ook wel zo’n functie hebben? Nee dus. Vandaar dat we een moeilijke oplossing moeten gaan maken.

Maar ook moeilijke oplossingen komen in gradaties, dus ook hier: twee varianten. Daarbij is de eerste variant een stuk simpeler dan de tweede, dus daar moesten we maar mee beginnen!

De prijzentabel ziet er nu zo uit:

Prijzentabel met datums

Zoals je ziet, is er een veld bijgekomen: het veld Einddatum. Elk record met een prijs heeft nu dus een startdatum, en een datum waarop periode afloopt. Die einddatum ligt logischerwijs één dag voor de begindatum van de volgende periode. Zo zie je dat de periode die ik net al noemde op 06-01-2013 en op 15-01-2013 eindigt, en de volgende periode op 16-01-2013 begint en geen einddatum heeft. En dat is gelijk een indicatie van de actieve periode, want die is al wel begonnen, maar nog niet afgelopen. Er is derhalve nog geen einddatum. In de query gaat dat straks een klein probleem opleveren, maar gelukkig hebben we daar een simpele oplossing voor, zoals je kunt zien.

Het formulier dat we gebruiken om de records aan te maken is vergelijkbaar met dat van oplossing 2, dus daar besteden we nu geen aandacht aan. Het enige dat niet nodig is, is het opslaan van de feitelijke prijs van de brandstof. Die gaan we tenslotte dynamisch genereren. In de reiskosten tabel staan dan ook alleen deze gegevens:

Tabel Reiskosten

Voor de berekeningen (denk aan rapporten etc.) hebben we een query nodig, die de bovenstaande gegevens laat zien, en uit de tabel met de prijzen de juiste prijs ophaalt voor het betreffende brandstoftype. Daarvoor gebruiken we een Cartesisch product. We hebben die al eens eerder gemaakt, dus het principe ervan zal ik niet al te uitgebreid uitleggen. Waar het op neer komt: je pakt twee tabellen die (al dan niet) gemeenschappelijke velden hebben, en die tabellen koppel je niet aan elkaar. Als je de query nu uitvoert, worden alle records uit Tabel1 gekoppeld aan alle records uit Tabel2. In ons voorbeeld: 20 (Tabel Brandstof) X 10 (tabel Reiskosten) records = 210 records. Een deel ervan zie je hier:

Cartesisch product

Op zichzelf is dit een onbruikbare query; TankID 1 zien we bijvoorbeeld 20 keer terug, met de daarbij horende gegevens. Aan de velden BeginDatum en EindDatum kun je al een beetje zien wat de bedoeling is. Die velden komen uit [tBrandstof], en geven de verschillende periodes aan waarin een prijs geldt. Het veld [Brandstoftype] komt ook uit [tBrandstof]. Omdat elke tankbeurt maar één product bevat, kunnen we de lijst al een heel stuk inkorten door de velden [tBrandstof].[Brandstoftype] en [tBrandstof].[ Brandstofsoort] aan elkaar te koppelen. Daarmee wordt de lijst al een stuk zinniger:

Gedeeltelijk Cartesisch product

Er zitten nog steeds herhalingen in de recordset. Maar voor elke tankbeurt zijn er nu nog maar 5 records i.p.v. 20. Je kunt nu al wel zien welke records we moeten hebben, en welke de verkeerde prijs laten zien. Kijken we bijvoorbeeld naar TankID 0004, dan zien we dat tankdatum (26-12-2012) in de eerste record de verkeerde prijsrecord koppelt. De datumrange loopt namelijk van7-12 t/m 23-12. De tweede record is wel goed (26-12 ligt in de reeks 24-12 t/m 28-12) en de derde en vierde record zijn weer fout: de begindatums liggen al voorbij de tankdatum. Op basis van deze tabel kunnen we al bepalen hoe de query gefilterd moet worden: de tankdatum moet groter (of gelijk) zijn aan de begindatum, en kleiner (of gelijk) aan de einddatum. Zoals gezegd: het tweede record voldoet aan dit criterium.

Gewapend met deze kennis kunnen we de query gaan maken. Dat doen we natuurlijk in het queryraster. En dat ziet er dan zo uit:

Query met Koppeling

Alle belangrijke verbindingen zijn  in deze afbeelding ondergebracht: de koppeling op basis van het veld [Brandstofsoort], en de velden BeginDatum en EindDatum met hun respectievelijke criteria.

Het resultaat is nu:

Prijzentabel met Opzoekdatum

Zoals je kunt zien, wordt bij elke tankbeurt de juiste prijs opgezocht in de tabel. En op basis van de prijs en het aantal liters, is het nu simpel om de totaalprijs uit te rekenen.

Voordelen van deze methode:

  • Flexibele opslag en historie van prijzen
  • Prijzen gefixeerd, en niet te veranderen en dus veilig
  • Database is nog steeds redelijk genormaliseerd

Nadeel:

  • Moeilijkheidsgraad ligt al redelijk hoog
  • Lastige query om de prijs uit te rekenen
  • Extra veld (Einddatum) nodig voor de prijs
  • Het extra datumveld vergroot de kans op verkeerde waarden in de tabel, want er is geen relatie tussen de einddatum en de startdatum van de volgende periode

Deze methode is een stuk lastiger te maken, omdat je goed moet nadenken hoe de subquery er uit moet zien. In het voorbeeld is een wat uitgebreider criterium opgenomen (op brandstoftype). Heb je één artikel, dan hoeft dat natuurlijk niet en wordt de query wat simpeler. Je kunt hem a.d.h.v. het voorbeeld hopelijk nu ook uitbreiden met meer voorwaarden; de structuur daarvoor blijft hetzelfde.

Oplossing 4: genormaliseerde prijsberekening

De lastigste oplossing bewaren we uiteraard voor het laatst. Deze oplossing bouwt voort op oplossing 3, maar nu op basis van een tabel met maar één datumveld voor de prijswijzigingen. Dat maakt het invoeren van prijswijzigingen een heel stuk simpeler, want er is nu maar één mutatiedatum.

Prijzentabel met enkele datum

Probleem is nu wel: hoe kun je op basis van één datum kijken of een tankdatum in een bepaalde periode valt? Je hebt nu immers alleen de startdatum van de periode, en niet de einddatum. Wel, die zal op de een of andere manier berekend moeten worden! En dat kan door een hulptabel in te voeren d.m.v. een query. Die query levert als eindresultaat straks een tabel op die er precies zo uitziet als de prijstabel die we in oplossing 3 hebben gebruikt. En dat is ook logisch, want we hebben per prijsmutatie een begindatum en een einddatum nodig. We kunnen dat bereiken door een subquery te gebruiken als basis voor een extra veld. Tot nu toe hebben we subqueries gebruikt om recordsets te filteren (ook weer in dit hoofdstuk). Maar dus nog niet om een nieuw veld te maken. We concentreren ons nu dus op die specifieke techniek.

SELECT PrijsID, BrandstofType, Prijs, Wijzigingsdatum AS BeginDatum, (SELECT MIN(tmpBrandstof.Wijzigingsdatum) FROM tBrandstofprijs AS tmpBrandstof WHERE tmpBrandstof.Wijzigingsdatum > tBrandstofprijs.Wijzigingsdatum AND tmpBrandstof.BrandstofType = tBrandstofprijs.BrandstofType)-1 AS VolgendeDatum FROM tBrandstofprijs;

Zoals je gewend bent in een query, benoem je na SELECT de velden in de query. De subquery is er daar één van. Het stuk code waar het om gaat is dus:

(SELECT MIN(tmpBrandstof.Wijzigingsdatum)
FROM tBrandstofprijs AS tmpBrandstof    
WHERE tmpBrandstof.Wijzigingsdatum > tBrandstofprijs.Wijzigingsdatum
AND tmpBrandstof.BrandstofType = tBrandstofprijs.BrandstofType)-1
AS VolgendeDatum

Wat gebeurt hier nu eigenlijk? We maken een query die de kleinste waarde van het veld Wijzigingsdatum opzoekt in de tabel tBrandstofprijs, die ook nog eens met zichzelf vergeleken wordt. Oftewel: als je deze query als zelfstandige query zou maken, dan moet je de tabel tBrandstofprijs twee keer toevoegen aan je raster. De twee tabellen worden vervolgens niet aan elkaar gekoppeld (geen INNER JOIN), maar zoals je in de code ziet, wordt er wel gefilterd op basis van het BrandstofType. Want we willen natuurlijk datums zien voor de gebruikte brandstofsoort.

Het datumveld wordt verder gefilterd op het datumveld uit tBrandstofprijs, dat als criterium heeft dat er records moeten worden getoond die groter zijn dan de datum in de andere tabel. Dat zijn er uiteraard een hele hoop, als je meerdere records hebt. Daarom wordt met MIN de laagste uitkomst gefilterd. Kortom: we hebben een query gemaakt die alle datums laat zien die groter zijn dan de startdatum, en daar pakken we de kleinste waarde van. En de kleinste is natuurlijk maar één waarde, en dat is uiteindelijk het resultaat dat in de query wordt getoond. Een deel van het resultaat zie je hier:

Prijzentabel - Resultaat

Je ziet, dat voor alle mutatiedatums een extra datum is gevonden, namelijk de volgende mutatiedatum voor dat brandstoftype. En, ook niet onbelangrijk, er is nog steeds geen einddatum voor de meest recente wijziging. Omdat we nu met een query werken, en niet met een tabel, is dat nog wel op te lossen met een extra IIF op het veld. De code ziet er nu zo uit:

SELECT PrijsID, BrandstofType, Prijs, Wijzigingsdatum AS BeginDatum, IIf((SELECT MIN(tmpBrandstof.Wijzigingsdatum) FROM tBrandstofprijs AS tmpBrandstof WHERE tmpBrandstof.Wijzigingsdatum > tBrandstofprijs.Wijzigingsdatum AND tmpBrandstof.BrandstofType = tBrandstofprijs.BrandstofType) Is Null,Date(),(SELECT MIN(tmpBrandstof.Wijzigingsdatum) FROM tBrandstofprijs AS tmpBrandstof WHERE tmpBrandstof.Wijzigingsdatum > tBrandstofprijs.Wijzigingsdatum AND tmpBrandstof.BrandstofType = tBrandstofprijs.BrandstofType)-1) AS VolgendeDatum FROM tBrandstofprijs;

Het resultaat wordt dan:

Prijzentabel - Eindresultaat

In deze afbeelding zie je alleen de laatste records, want daarin wordt de variabele datum (Date() ) uitgerekend.

Voordelen van deze methode:

  • Flexibele opslag en historie van prijzen
  • Slechts één datumveld nodig voor de mutaties
  • Prijzen gefixeerd, en niet te veranderen en dus veilig
  • Database is nog steeds goed genormaliseerd

Nadeel:

  • Moeilijkheidsgraad ligt behoorlijk hoog
  • Lastige query om de prijs uit te rekenen
  • Het extra datumveld vergroot de kans op verkeerde waarden in de tabel

Wat voor oplossing 3 geldt, is bij deze oplossing ook waar, en wel dat hij best lastig is. Je zult dus zelf moeten afwegen of de flexibiliteit en gegevensstabiliteit die je ervoor terugkrijgt opwegen tegen de tijd die je moet investeren om hem te doorgronden en toe te passen in je eigen situatie.

Samenvatting

We hebben in dit hoofdstuk een lastig onderwerp behandeld, dat toch erg belangrijk is voor de juiste werking van de databases die we maken en dat is de vraag: hoe gaan we om met gegevens die regelmatig veranderen? Ik heb daarvoor 4 methodes aangereikt die elk hun eigen voordelen en nadelen hebben. Er zijn vast meer oplossingen denkbaar en in omloop; heb je zelf een oplossing die je wilt delen, post die dan in het forumdraadje dat bij deze cursus hoort:

https://www.helpmij.nl/forum/showthread.php/591915-Vragen-Opmerken-Reacties-en-Tips-voor-de-Access-cursus

Daar vind je ook de uitwerking van de verschillende opgaves.

Volgende Aflevering

In de volgende aflevering gaan we verder met het principe van een Frontend-Backend database. We maken dan in een gesplitste database een frontend die middels een losse connectie de gegevens inlaadt.




MiniWE

Auteur: profpc

Top

Ik zal dit artikeltje met een vraag beginnen: hoe ziet je bureaublad eruit? Zijn alle mappen, snelkoppelingen en andere bestanden mooi geordend of is het een warboel van allerlei iconen door elkaar heen? In dit laatste geval moet je steeds terug naar je bureaublad om dat ene Word-documentje te openen. Het programma MiniWE kan hier een uitkomst voor bieden.

MiniWE zorgt er namelijk voor dat alle snelkoppelingen, mappen en bestanden via één knop te benaderen zijn op je taakbalk. Het programma kun je downloaden van de website of klik deze link aan om de download direct te starten. MiniWE werkt op elke Windows waarop .Net 3.0 is geïnstalleerd. De download is een zip-bestand, dus zorg dat deze eerst is uitgepakt voordat je op het setup-bestand klikt om het programma te installeren.

februari 2013: Hm.nl..jpg

Als het programma is geïnstalleerd dan zie je dat je een knop op de taakbalk krijgt. Als je op deze knop drukt zie je alle bestanden, snelkoppelingen en mappen in een handig schermpje. Zo kun je doorgaan met werken op je computer zonder steeds naar je bureaublad te gaan. Rechtsonderin het scherm kun je nog de instellingen aanpassen.

Zo wordt er automatisch een aantal kolommen icoontjes getoond, maar als je er bijvoorbeeld maar 4 getoond wilt hebben dan kun je dit instellen. Standaard worden ook alleen de icoontjes getoond en dat is niet handig als je bijvoorbeeld verschillende Word-documentjes hebt. Je kan in het instellingenmenu dan "Show file name" aanvinken. Nu worden dan de namen van de icoontjes getoond.

Met de zoomknop in het midden kun je het schermpje met icoontjes groter of kleiner maken. In de afbeelding hierboven zie je dat het schermpje meer dan de helft van het totale scherm in neemt, dit kun je dus kleiner maken als je dat prettig vindt.

Standaard is het programma bedoelt om makkelijk in je desktopbestanden te komen, maar met het knopje linksonder kun je ook in andere mappen op je computer komen. Met het knopje kom je steeds in de bovenliggende map. Zo kun je bijvoorbeeld browsen naar de map afbeeldingen om je gewenste afbeelding te openen.

Nadeel is wel dat het programma in het Engels is. Getoonde standaardmappen van Windows worden ook in het Engels weergegeven als je de Nederlandstalige versie van Windows hebt.




Cursus Fotografie - Deel 4

Auteur: OctaFish

Top

Filmgevoeligheid en Sensor

We hebben het in de vorige hoofdstukken gehad over de fysieke (zichtbare) aspecten van de camera. Het derde aspect dat een belangrijke rol speelt bij het maken van een foto, kun je niet beetpakken. Dat wil zeggen: je kunt de sensor aanraken, maar daarna kun je de camera vermoedelijk gelijk afschrijven, of voor een dure reparatie wegbrengen. Niet doen dus! De titel is dus eigenlijk een beetje misleidend, want in een digitale camera stop je echt geen film, maar hooguit een schijfje. Maar omdat de gebruikte terminologie rechtstreeks uit de analoge fotografie is afgeleid, gun ik mij deze dichterlijke vrijheid.

(film)Gevoeligheid dus. Eerst een klein stukje geschiedenis voor de mensen die nog nooit een analoge camera hebben gebruikt; een groep die alleen maar groter gaat worden. Vroeger kocht je een film die je in de camera deed. En daarmee had je dan al gelijk een aantal belangrijke beslissingen genomen: fotografeer ik in kleur of in zwart-wit? Maak ik dia’s of negatieven? Kies ik een film met een fijne structuur en lage snelheid, of juist een grove korrel en hoge snelheid?

Al die vragen moest je beantwoorden voordat je met je rolletje naar de kassa liep, want zodra je het fimpje in de camera had gespoeld, was je gedwongen om (met een kleinbeeld camera doorgaans) 36 opnames te maken op hetzelfde materiaal. Een situatie die nu totaal niet meer bestaat, omdat we per opname kunnen switchen van modus. Maar daarover later.

Eenmaal een filmpje gekocht kon je dus gaan schieten tot het filmpje vol was, en daarna herhaalde het hele proces zich. De keuze tussen kleur en zwart-wit is met een digitale camera eigenlijk weg, want in het nabewerkingsproces kun je altijd nog beslissen of je de foto in zwart‑wit wilt hebben of niet. Hetzelfde geldt enigszins voor dia of negatief, waarbij de kanttekening dat we het negatiefproces eigenlijk niet zien, omdat we foto’s altijd in positief zien; alleen de printer ziet de foto nog als negatief object. En bijna niemand maakt digitale foto’s die vervolgens als dia worden geprint.

Groter is beter…

Dat gold vroeger in het analoge tijdperk zonder enige twijfel: een kleinbeeld film was beduidend slechter dan een 6x6 film, die het weer moest afleggen tegen een 4x5 inch vlakfilm. Groter was gewoonweg beter, want een film met een groter oppervlak had meer zilverdeeltjes, en er kon dus een beter beeld worden vastgelegd.

Nu zitten we in een tijd waarin fabrikanten zoveel mogelijk pixels op eenzelfde vlak (de sensor) proberen te krijgen. Daarbij is er maar één mogelijkheid om meer pixels in hetzelfde vlak te krijgen: de pixels verkleinen. En dat heeft helaas een prijs. Daarover later meer.

De ASA waarde

Hoe zat het ook al weer vroeger? We maakten onderscheid tussen films met een lage gevoeligheid, en films met een hoge gevoeligheid. Het verschil bestond er in dat de films met een lage gevoeligheid meer zilverkorrels hadden dan films met een hoge gevoeligheid. Dat is schematisch in de volgende afbeelding uitgedrukt:

Hooggevoelige film
Film met hoge gevoeligheid

Laaggevoelige film
Film met lage gevoeligheid

Licht valt bij de opname op een zilverdeeltje, dat vervolgens reageert. Bij films met een hoge gevoeligheid hoeven er veel minder lichtdeeltjes op de film te vallen als bij de lage gevoeligheid. En dat (weinig licht t.o.v. veel licht nodig) bepaalde de gevoeligheid.

De filmgevoeligheid werd vroeger met twee standaarden gemeten: in Europa met DIN, en in Amerika met ASA. Daarbij was de ASA-instelling makkelijker te begrijpen, omdat die lineair werkt: een verdubbeling van het getal is een verdubbeling van de gevoeligheid. Films kon je kopen in gevoeligheden zoals 100 ASA, 400 ASA, 1600 ASA etc. Hoe hoger het getal, hoe hoger de gevoeligheid.

Als (zwart‑wit)fotograaf kon je dan in de DOKA nog invloed uitoefenen op het resultaat door de film op bepaalde manieren te ontwikken. In dit proces kon er ook van alles fout gaan, en menig fotograaf heeft dan ook wel eens stevige taal gebezigd na een avondje ontwikkelen, als na het spoelen bleek dat het ontwikkelen was mislukt!

De ISO waarde

Komen we bij de digitale camera. Hoe werkt de gevoeligheid daar? We hebben niet het probleem van het moeten wisselen van films, en het equivalent van het aantal zilverkorrels dat de gevoeligheid bepaalt speelt ook geen rol, want de digitale camera beschikt over een vast aantal pixels. Toch speelt hetzelfde probleem ons nog steeds parten. Wat is het geval? Het licht van de opname valt nu op een sensor, en die sensor is gevoelig voor licht. Die gevoeligheid heeft een bepaalde waarde, maar die is doorgaans vrij laag. En dat houdt in dat je nogal wat licht nodig hebt om een foto te kunnen maken. Om derhalve ook bij minder licht te kunnen fotograferen, kunnen camera’s de gevoeligheid verhogen door het signaal van de sensor te versterken. En die mate van versterking wordt uitgedrukt in ISO waarden. Om (vermoedelijk) historische redenen wordt de gevoeligheid van de camera’s in ISO uitgedrukt; een schaal die exact gelijk is aan de oude ASA-schaal. Een gevoeligheid van 3200 ISO is dus exact gelijk aan 3200 ASA.

Wat is nu het effect van het verhogen van de ISO-waarde? Zoals gezegd: het aantal korrels (of pixels in een digitale camera) neemt niet toe, want dat is bepaald door de sensor. Maar door het signaal te versterken, gebeurt er wel iets anders: je verhoogt het ruisniveau van de foto. Dat kun je heel goed vergelijken met een audio versterker. Als je daar het geluidsniveau van verhoogt, dan hoor je meer ruis dan als je het niveau verlaagt. De ruis wordt dan minder tot onhoorbaar.

Kijk maar eens naar deze twee voorbeelden:

 februari 2013: image005..jpg

In de linker foto is de camera ingesteld op ISO 100, en in de rechter foto op ISO 1600. Het verschil is aanzienlijk: de linker foto bevat meer details als de rechter foto. Wel lijkt de rechter foto scherper, maar dat komt omdat de overgangen tussen de verschillende grijstinten is weggevallen. Zou je de foto extreem uitvergroten, dan zou blijken dat de linkerfoto scherper is dan de rechterfoto. Schijn bedriegt dus!

Nog een voorbeeldje, nu van extreme uitsnedes:

Hoge ISO waarde
Een foto gemaakt op ISO 3200
Lage ISO waarde


Dezelfde foto, maar nu op 200 ISO

De mate waarin een camera in staat is om het ruisniveau te controleren, bepaalt voor een groot deel de kwaliteit van die camera. Het zal hopelijk duidelijk zijn dat een camera met een grote sensor beter in staat is om het ruisniveau laag te houden dan een camera met een kleine sensor. Oftewel: de camera in een telefoon heeft doorgaans een vrij kleine sensor, en zal dus minder goede opnames maken dan een amateur spiegelreflex camera. Die zal het op zijn beurt weer afleggen tegen een (semi) professionele camera met een full-frame sensor.

Kortom: hoe groter de sensor, hoe beter de kwaliteit van de ruisonderdrukking. Het aantal megapixels speelt daarbij niet eens zo’n grote rol. Sterker nog: hoe meer megapixels, hoe meer ruis je krijgt, want bij een gelijke sensorgrootte moeten de pixels wel kleiner zijn bij de camera met meer pixels. En hoe kleiner de pixel, hoe groter de ruis. Het heeft dus zin om bij de aanschaf van een camera een goede afweging te maken tussen veel pixels of betere ruiskwaliteit!

De optimale ISO instelling

Wat is nu de beste ISO instelling voor een opname? Welnu, die optimale instelling bestaat niet. Wat je ook doet en fotografeert, je moet altijd een keuze maken uit een aantal eisen die je zelf stelt aan de foto. Wil je een foto met een hoge scherpte en een zeer fijne ruis? Gebruik dan een langzame ISO-waarde, want daarmee krijg je een optimaal beeld met een grote scherpte. Wil je een feestje ’s avonds fotograferen en je wilt niet flitsen? Gebruik dan een snelle ISO-waarde, want daarmee kan je goed bij bestaand licht fotograferen! Je moet dan wel het verhogen van de ruis op de foto’s voor lief nemen!

Bekijk de volgende tabel maar eens:

ISO

           Indeling

50

°           zeer grote scherpte

°           zeer lage ruis

°           grote detailweergave

200

°           middelgoede scherpte

°           acceptabele lage ruis

°           goede detailweergave

800

°           acceptabele scherpte

°           minder mooie ruis

°           acceptabele detailweergave

3200

°           verlaagde scherpte

°           grote ruis

°           slechte detailweergave

De tabel laat niet alle combinaties zien; het ruisniveau, scherpte en de detailweergave lopen geleidelijk mee bij het aanpassen van de ISO-waarde.

Een kenmerk van de aangegeven waarden in de tabel is, dat de gevoeligheid steeds een factor 4 ten opzichte van de vorige of volgende waarde. In een digitale camera kun je allerlei tussenwaarden instellen, waarvoor in beginsel geldt dat je het gevoeligheidsverschil met de vorige waarde makkelijk kunt berekenen.

Het belang van de ISO waarde

Hoe bepaal je nu welke ISO waarde je moet gebruiken voor een opname? Zoals al eventjes gemeld, kun je voor elke opname een andere waarde instellen; je bent niet meer verplicht om van te voren te bepalen welke ISO-waarde je instelt. En dat is een fantastisch voordeel van digitale fotografie. Je kunt voor verschillende takken van fotografie de ISO-waarde anders instellen.

Wanneer je opnamen van snelbewegende onderwerpen maakt, is het belangrijk om met korte belichtingstijden te werken. Je kunt er dan voor kiezen om het ISO-bereik hoog in te stellen, zo rond de 1000 ISO. Voor die waarde kun je ook kiezen als je een hoge dieptescherpte nodig hebt.

Maak je veel stillevens en heb je de beschikking over een statief, dan is de sluitersnelheid van geen enkel belang en zul je eerder voor een hoge scherpte en een goede detailweergave kiezen, dus een lage ISO die een lage ruiswaarde geeft.

Omdat je op één dag verschillende omstandigheden kunt treffen bij het fotograferen, is het zaak om bij elke opnamesessie na te denken over de ISO waarde die je het beste kunt gebruiken.

Meer is beter?

Ik heb al een paar keer aangegeven wat de maat van de sensor voor invloed heeft op een foto. Net als vroeger bij de analoge film, is de regel: groter is beter. Maar daar houdt de vergelijking ook op. Het formaat van de camera (kleinbeeld, middenformaat, grootformaat) bepaalde de maat van de film, maar de kwaliteit van de film (hooggevoelig, laaggevoelig) kon nog steeds verschillen. En daarmee dus ook de dichtheid van de lichtgevoelige deeltjes in die film. Bij digitale fotografie licht de dichtheid vast, en blijft er één regel over: hoe groter de sensor, hoe beter.

De ontwikkelingen op het gebied van de sensortechniek staan nog lang niet stil: wat 5 jaar geleden nog een uitstekende fotosensor was, met voldoende megapixels voor een prima afdruk op 30*40 cm, is nu volkomen achterhaald, en aan de straatstenen niet meer te slijten. Probeer maar eens een 8 megapixel camera te kopen (die niet in een telefoon zit); niet meer te doen! Op het moment van schrijven heeft Nikon als topmodel een camera die 36 Megapixels bevat. Dat is een maat die een aantal jaren geleden alleen maar mogelijk was in een middenformaat sensor. De vraag is natuurlijk: hoe zinvol is dat nu allemaal?

Het antwoord luidt: bitter weinig! Met een camera van 3,3 Megapixels van 10 jaar geleden kon je prima foto’s maken die er op een 10x15 cm afdrukje uitstekend uitzagen. 13x18? Geen probleem. Pas bij A4 kon je in de problemen geraken. Geen nood: binnen de kortste tijd was het aantal pixel al 6 MP, en dat was uitstekend geschikt voor A4 en A3. Maar dat bleek allemaal niet genoeg; het aantal megapixels wordt al lang met dubbele cijfers geschreven. En de maat van de afdrukken die je met die bestanden kunt maken, groeit dus navenant mee. Met de bestanden die we tegenwoordig maken, kun je ruimschoots afdrukken maken van 2x3 meter. Niemand die het in zijn hoofd haalt om dat te doen, want de aanslag op de portemonnee is aanzienlijk, maar aan de bestandsgrootte zal het niet liggen!

De pixel race heeft zoals ik zal aantonen een groot nadeel: de beeldkwaliteit gaat er zienderogen op achteruit! Hoe meer pixels, hoe kleiner de pixel wordt. En momenteel zijn de pixels al dermate klein, dat hij nog nauwelijks in staat is om een photon (het lichtdeeltje dat de lichtenergie overbrengt) te vertalen naar een elektrisch signaal. Als voorbeeldje een foto die ik uit een nogal technisch artikel heb gehaald, van een gemiddelde compact camera van een gerenommeerd merk:

 februari 2013: image008..jpg

De foto is gemaakt onder bijkans ideale omstandigheden:

ISO:      100
Sluitersnelheid:  1/500 sec
Diafragma:        4,6

En toch is de foto (het is een kleine uitsnede) waardeloos! De camera is een 12 megapixel camera (dus voor een hoop mensen al hopeloos gedateerd) die een doorsnee sensor gebruikt die we veel in compact camera’s tegenkomen. Gevolg van deze combinatie: de pixels zijn dermate klein, dat het licht niet goed meer verwerkt kan worden, en er beeldruis ontstaat. Dat vervolgens door de elektronica van de camera wordt gecorrigeerd, met als resultaat dit soort onbruikbare foto’s.

De eerder aangehaalde Nikon met zijn 36 MP is kwalitatief dermate goed, dat Nikon (weer op het moment van schrijven) maar 6 objectieven levert die in staat zijn om met die hoeveelheid pixels acceptabele foto’s te maken. Met de overige lenzen krijg je beeldfouten in je foto als hierboven, al zal dat op een kwalitatief ander niveau zijn. Het is niet voor niks dat de nieuwe Canon camera’s aan die megapixel wedloop niet meedoen; bij Canon onderkennen ze het probleem dat een keten zo sterk is als zijn zwakste schakel. De topmodellen van Canon gaan op dit moment dan ook niet verder dan 22 megapixel. Wat uiteraard meer dan voldoende is om een foutloze foto af te drukken waarmee je een wand van een gemiddelde huiskamer prima kunt behangen!

De megapixel mania heeft dus als resultaat dat je er slechtere foto’s mee maakt als je met camera’s van een paar jaar geleden zou maken. Daarbij speelt ook nog het aspect dat de gemiddelde amateur geen grotere afdrukken wil dan hij vroeger had. Als hij foto’s al afdrukt, want vaak worden foto’s alleen nog maar op sociale media geplaatst. Die op hun beurt de grote afbeeldingen niet accepteren, en ze standaard weer verkleinen. Kortom: bij een goede camera geldt: Meer Is Minder! En dat lijkt mij een mooie afsluiting van dit hoofdstuk!

Samenvatting

Camera’s vangen het licht op met sensoren; hoe groter de sensor, hoe beter. Op een sensor zitten pixels, die het eigenlijke werk doen: photonen die in het licht zitten omzetten naar elektronische signalen. Hoe meer pixels, hoe beter in beginsel het beeld, want hoe beter de detaillering in de foto. Ook geldt: hoe groter de pixel, hoe lager de ruis in de foto en hoe beter de beeldkwaliteit.

Camerafabrikanten proberen zoveel mogelijk pixels aan de man te slijten, onder het mom: meer is beter. Maar helaas geldt dat niet voor de fotografie. Een kleinere pixel is niet in staat om een correct beeld op te vangen. En een sensor met een grote hoeveelheid pixels is dus niet per definitie beter als een camera met minder pixels.

De hoeveelheid pixels bepaalt in grote mate de grootte van de mogelijke afdrukken: hoe meer pixels, hoe groter je kunt afdrukken.

In een digitale camera kun je de gevoeligheid van de pixel verhogen door de ISO-waarde hoger in te stellen. Dit heeft als gevolg dat het ruisniveau van de pixel wordt verhoogd, met meer ruis (zichtbaar als gaten in de pixels tot gevolg).

Volgende aflevering

In de volgende aflevering gaan we echt fotografen, en leg ik de samenhang uit tussen de 3 hoofdrolspelers Diafragma – Sluitertijd – ISO-waarde. Door op de juiste manier te spelen met die elementen, kun je uiteindelijk betere foto’s maken. Ook wordt dan uitgelegd waarom een moderne fotocamera eigenlijk absoluut niet in staat is om goed belichte opnames te maken…




Iron, het "Google Chrome" dat geen info doorstuurt

Auteur: CorVerm

Top

Soms lees je aanbevelingen voor software waarvan je denkt dat het een goede zet is om mee in zee te gaan. Zo ook als het gaat over een op Chromium gebaseerde browser met de naam Iron, ofwel voluit: SRWare Iron.

Hieronder tref je de beschrijving aan zoals die op de site van Computeridee (en op meer sites) is te lezen. Naar mijn idee is het een enigszins wazige beschrijving waar je (althans ik) niet echt veel wijzer van wordt.

Wie bewust een browser kiest heeft het niet makkelijk. Internet Explorer is voor velen maar zozo, Firefox heeft geweldig veel plugins maar is het laatste jaar minder stabiel en teistert je met voortdurende updates en Chrome is prettig, maar wel van Google dat via haar browser nog meer over u te weten hoopt te komen dan via de zoekmachine al het geval was.

Wie zijn privacy hoog heeft zitten, heeft gelukkig een aantrekkelijk alternatief en dat is gemaakt van ijzer. Goed, ijzer glimt wat minder mooi dan chroom, maar bij de Iron-browser merkt u daar niets van. Iron is gebaseerd op dezelfde software als Chrome, maar doet een aantal zaken niet die Googles browser wél doet. We hebben het dan vooral over het doorgeven van informatie over het gebruik van de browser. Ook biedt Iron een ingebouwde adblocker (download daarvoor  www.srware.net/downloads/adblock.ini).

Wikipedia bevat ook een pagina die gewijd is aan Iron, lees maar eens wat daar geschreven is over die browser. In tegenstelling tot wat in het citaat gezegd wordt heeft Iron volgens de Wikipediapagina gewoon een advertentiefilter aan boord en hoef je die dus kennelijk niet zelf te downloaden en installeren. Wat heb je trouwens aan een .ini bestand? Windows gebruikers niets, Linux gebruikers doen juist veel met .ini bestanden.

Maar goed, het beste wat er te doen valt is het programma dan maar te downloaden, installeren, testen en beoordelen.

Laten we het eerst maar eens zijn over het feit dat Google alle moeite doet om zoveel mogelijk van ons te weten te komen. Niks nieuws onder de zon dus. Maar wie zegt ons dat SRWare (de maker van Iron) dat niet doet? Dat ondanks hun bewering dat zij braver zijn dan Google, want zij doen immers niet wat Google wel doet. We zullen zien wat de bevindingen met Iron zijn, want ook daar treffen we zaken aan waarvan je (althans ik) niet vrolijk van wordt.

De installatie van Iron is geen probleem en verloopt gladjes, bovendien is de browser  in het Nederlands te installeren. Het grote moment is daar als de browser geopend wordt en … Ja wat en…?

februari 2013: iron1..jpg

Het eerste wat we te zien krijgen is een melding waar we al helemaal niet op zitten te wachten. Nee, logisch niet. Hoe kan er in vredesnaam in een aantal seconden even “gezien” zijn dat er 15 fouten gerepareerd moeten worden? Los van dat, je verwacht zoiets niet van een browser die dus braver zou moeten zijn dan die van Google.

 februari 2013: iron5..jpg

De boosdoener is de startpagina van Iron, iron-start.com. De makers van Iron weten dus van wanten, want ongetwijfeld zullen zij inkomsten genereren als men op OK klikt.

Niet dat het echt onlogisch is dat men voor een gratis gebeuren inkomsten wil genereren, zo bedoel ik het niet. Bovenal lijkt het me een min of meer duistere zaak, aangezien je maar nooit weet waar je terecht komt als je op OK klikt. Ik kan het je niet vertellen, door mij wordt de goede gewoonte gehanteerd om nooit op een dergelijk voorstel in te gaan.

Twee bladwijzers staan er in de bladwijzerbalk die linken naar bild.me-imagehosting en naar het forum van Iron. Een kijkje op hun forum levert direct een probleem op met de Flash Player. Raar, want de andere browsers die door mij gebruikt worden geven die melding niet en een probleem met Flash Player heb ik ook niet.

februari 2013: iron2..jpg

Dan is er nog zo één, niet intrappen is de boodschap en gewoon laten voor wat het is.

 februari 2013: iron3..jpg

Nog eentje dan. De grootste lulkoek (vergeef me de uitdrukking) is de boodschap dat er geïnfecteerde bestanden op mijn computer zijn gevonden. Ook hier trap ik, zoals gewoonlijk, niet in. Want uiteraard heb ik een gedegen programma op mijn computer staan waardoor ik heel goed beschermt wordt tegen allerlei rottigheid.

 februari 2013: iron4..jpg

Nu we het in het kader van deze browser toch over geïnfecteerde bestanden en andere troep hebben maak ik van de gelegenheid gebruik om te waarschuwen tegen het bezoeken van duistere sites. Want die sites leveren de grootste kans op om besmet te raken met van alles en nog wat waar je niet op zit te wachten.

Maar doet de browser waarvoor die uiteindelijk bedoeld is? Nou, die doet het gewoon goed, erg goed zelfs. Tenminste, nadat je de startpagina hebt ingesteld naar die van je eigen keus. Want anders blijf je met die ellendige meldingen zitten. De instellingen van Iron vind je op precies dezelfde plek waar ook de instellingen voor Chrome zitten.

Maar nu een ander aspect. In het hierboven gegeven citaat wordt een aantal browsers een beetje onderuit gehaald. De kern van het verhaal is echter dat Chrome informatie doorstuurt naar Google en dat verbaast me, zoals gezegd, niks. Iron wordt daarentegen als het “schone” alternatief voor Chrome gegeven. Een op dezelfde leest geschoeide browser als Chrome, maar dan een browser die geen informatie doorstuurt naar Google. Mijn grote vrees is, dat er weliswaar geen info naar Google gestuurd wordt, maar wel naar een andere “instantie”. Hard maken kan ik het niet, maar gezien het hierboven beschrevene vrees ik met grote vreze.




Postvak-in

Auteur: Redactie

Top

Deze maand zijn er geen vragen voor het Postvak-in binnengekomen.