CategorieGeek

Meerdere draaitabellen in Excel 2013

M

Tijdens een recente les wees een leerlinge er mij op dat wanneer je verschillende draaitabellen maakt op basis van dezelfde gegevens, die draaitabellen elkaar beïnvloeden.

Draaitabellen

Een eenvoudige voorbeeldje ter illustratie?  Ik maak een draaitabel van bovenstaande gegevens “PER datum en PER opleiding”, de data ga ik groeperen per maand.  Ik maak een tweede draaitabel van deze gegevens “PER datum en PER geslacht”, de data zullen standaard al gegroepeerd zijn per maand. Meer nog, als ik die groepering verander naar per kwartaal en ik ga kijken naar mijn eerste draaitabel dan is de groepering ook daar veranderd.

Hoe komt dat? Wanneer we in Excel draaitabellen aanmaken, gaat Excel verschillende zaken voorbereiden in de achtergrond. Noem het een soort “cache”.  Onder andere de groeperingen gebeuren in die cache. Wanneer we een tweede draaitabel toevoegen aan ons Excel werkblad zal Excel automatisch diezelfde cache gebruiken voor die draaitabel.   Dit is meestal positief omdat elke keer die cache opnieuw opbouwen zowel schijfruimte als processor gebruik kost.  Maar soms moeten draaitabellen echt onafhankelijk van elkaar zijn (vb. als je verschillende groeperingen wil gebruiken.) en dan moeten we per draaitabel zo’n cache aanleggen.

Hoe doen we dat? Er bestaan een aantal manieren om ervoor te zorgen dat Excel de draaitabellen volledig onafhankelijk van elkaar maakt, met elk z’n eigen cache.  Eén ervan is gebruik maken van de Wizard draaitabellen. In Excel 2013 is die wizard echter heel goed verborgen.

Klik in Excel op “Bestand” => “Opties”. Kies in het dialoogvenster dat verschijnt voor “Werkbalk Snelle toegang”. Kies bovenaan in het dialoogvenster voor “Alle opdrachten” en scroll daaronder helemaal naar beneden om ergens onderaan de opdracht “Wizard draaitabel en draaigrafiek” te vinden. Klik op de knop “Toevoegen” om die knop toe te voegen aan de werkbalk “Snelle toegang”. Bevestig met “ok”.

Wizard Draaitabellen

 

Resultaat:

Draaitabellen

Telkens je een nieuwe draaitabel maakt, gebruik je dit knopje om de wizard te starten. Je krijgt een wizard te zien die wel uit Office 97 lijkt te komen (is wellicht ook zo) maar van zodra je met deze wizard een tweede draaitabel maakt krijg je deze vraag.

Draaitabellen

Wanneer je hier kiest voor “Nee” zal de tweede draaitabel niet gebaseerd worden op de cache die ook door de eerste draaitabel gebruikt wordt.

Wil je meer weten? Bekijk dan zeker mijn instructiefilmpjes over draaitabellen of neem gerust contact met me op.

 

Diffie-Hellman

D

Laten we misschien beginnen met te zeggen wat Diffie Hellman is. Diffie en Hellman waren twee wiskundigen die omstreeks 1976 een manier bedachten om een sleutel op een geheime manier uit te wisselen over een onbetrouwbaar medium.  In mensentaal nu?

Max en Lies zijn verliefd, ze willen elkaar liefdesbrieven schrijven maar ze willen uiteraard niet dat iemand anders die kan lezen. Ze kunnen gebruik maken van een koffertje dat enkel kan geopend worden met een geheime code. Die geheime code kan ingesteld worden door diegene die het koffertje dicht maakt. Lies en Max zien elkaar niet zo vaak, het zijn hun ouders die zorgen voor het transport van het koffertje. Het probleem van Max en Lies is om op een veilige manier de code uit te wisselen. Dat is precies wat Diffie-Hellman voor ons gaat doen.

Hoe gaan we te werk?

We spreken twee cijfers af, iedereen mag die cijfers weten.  Het eerste cijfer (laten we het X noemen) moet een priemgetal zijn, liefst niet te klein. Het tweede cijfer (laten we het Y noemen) bepaalt hoe groot onze geheime sleutel MAXIMAAL KAN zijn. Nemen we vb. 10 dan zal onze geheime sleutel tussen 0 en 10 liggen. Ook die mag je in praktijk niet te klein kiezen anders is onze sleutel te makkelijk te raden. Daarnaast kiest Max een geheim cijfer, hij vertelt het aan niemand ook niet aan Lies. Het geheime cijfer van max zullen we M noemen. Max voert nu de volgende berekening uit.

(X tot de macht M)  modulus Y (machtsverheffingen bij modulaire rekenen?)

Het resultaat van deze bewerking geef hij aan Lies. Dit resultaat is overigens GEEN geheim, iedereen mag het weten. We noemen dit getal “Max”. Lies doet precies hetzelfde: een geheim cijfer (L) kiezen en de bewerking uitvoeren … Haar uitkomst noemen we “Lies”.

Met de publieke waarden “Y” en “Max” en de geheime waarde “L” (die enkel door Lies gekend is) kan Lies nu de geheime sleutel berekenen met de volgende formule.

(Max tot de macht L) modulus Y

Max doet hetzelfde maar met de publieke waarden “Y” en “Lies” en zijn geheime sleutel “M”.

Lies en Max zullen tot eenzelfde resultaat komen, een getal tussen 0 en Y. Hoewel Max en Lies elkaars geheim nummer niet kennen hebben ze wel een gemeenschappelijk, geheim nummer waarmee de ene het kluisje kan sluiten en de andere het kluisje kan openen.  Het geheime nummer is nooit uitgesproken noch door Max, noch door Lies.

Geloof je mij niet? Een rekenvoorbeeldje!

Publieke parameters :   X = 13,  Y = 25
Geheime parameter:  M = 7, L = 9

Te berekenen publieke parameters:
Max = (13 tot de 7e macht) = 62 748 517 modulus  25 =  17
Lies = (13 tot de 9e macht) = 10 604 499 373 modulus 25 = 23

De te gebruiken geheime sleutel:
Berekening van Lies = 17 tot de macht 9 = 118587876497 modulus 25 =  22
Berekening van Max = 23 tot de macht 7 = 3404825447 modulus 25 = 22

In dit artikel gebruik ik veelvuldig machtsverheffingen bij modulair rekenen, geen idee hoe dat in zijn werk gaat? Lees mijn blogpost hierover.

Het Diffie-Hellman algoritme is trouwens erg makkelijk in code te gieten, de uitwerking van de “mymodpow” functie vind je ook in deze blogpost. (sleutel_max en sleutel_lies zullen in onderstaand programmaatje altijd gelijk zijn en tussen 0 en 25 liggen.

int X = 13;
int Y = 25;

int M = 7;
int L = 9;

int Max = mymodpow(X, M, Y);
int Lies = mymodpow(X, L, Y);

int sleutel_max = mymodpow(Max, L, Y);
int sleutel_lies = mymodpow(Lies, M, Y);

Machtsverheffingen bij modulair rekenen

M

We spreken van “modulair rekenen” als we uitsluitend met gehele getallen werken tussen 0 en een bepaalde bovengrens die we de modulus noemen.  De verzameling getallen waarvan we ons bedienen is dus 0, 1, 2, … tot modulus –1.  Het getal dat komt na “modulus – 1” is gewoon opnieuw 0.

Een voorbeeld: Als we werken met modulus 7, dan beschikken we over de getallen 0, 1, 2, 3, 4, 5 en 6. Wanneer we 4 + 4 (mod 7) berekenen dan is het resultaat 1.  In klassieke wiskunde zou het resultaat 8 zijn, maar als we werken met modulus 7, dan komt er na de 6 een 0 en dan een 1.  Een van de gevolgen van modulair rekenen is, dat ongeacht wat je doet (optellen, vermenigvuldigen, machtsverheffingen, …) en met welke getallen je dat doet, je resultaat altijd tussen 0 en de modulus zal liggen.

We gaan nu machtsverheffingen uitvoeren bij modulair rekenen. Neem bijvoorbeeld de 23e macht van 87 modulus 34. We zijn zeker (zie hierboven) dat het resultaat een getal zal zijn tussen 0 en 33.  Maar zonder speciale technieken moeten we toch eerst uitrekenen hoeveel de 23e macht is van 87 om daarna de modulus te kunnen toepassen. Het resultaat van 87 tot de 23e macht is 406389810477299000000000000000000000000000000. Dat gaan we nu delen door 34 en de rest na deling is onze oplossing.  Heel veel rekenmachines en zelfs Excel kunnen met dergelijke grote getallen niet overweg.

Om het resultaat van een grote machtsverheffing bij modulair rekenen te vinden bestaat er gelukkig een handig algoritme. En dat gaat als volgt. Vermenigvuldig je basisgetal (87) met 1, het resultaat van deze bewerking deel je door de modulus en je neemt de rest na deling. Je herhaalt deze procedure maar nu vermenigvuldig je je basisgetal NIET met 1 maar met de rest na deling van de vorige ronde. Je herhaalt deze procedure even vaak als de exponent groot is. In ons geval dus 23 keer. In onze situatie krijgen we dus

Stap 1:  1  * 87 (mod 34) =  19
Stap 2: 19 * 87 (mod 34) = 21
Stap 3: 21 * 87 (mod 34) = 25

Stap 23: 13 * 87 (mod 34) = 9

Het grootste getal waarmee je geconfronteerd kan worden bij dit algoritme is het basisgetal * de modulus (2 958 in ons geval).

Dit algoritme is trouwens erg makkelijk in programmacode te gieten:

int mymodpow(int basis, int exponent, int modulus)
{
       int result = 1;
       for (int teller = 1; teller <= exponent; teller++)
           result = (result * basis) % modulus;

 

       return result;
 }

 

Deze blogpost past in een reeks blogposts over cryptografie. Machtsverheffingen bij modulair rekenen is een techniek die gebruikt wordt oa. in het RSA algoritme (asymmetrische encryptie) en Diffie Hellman (protocol voor geheime sleuteluitwisseling).

Nooit meer iets vergeten dankzij FollowUpThen.Com

N

Ken je dat? Je krijgt een mailtje en je denkt “die ga ik later beantwoorden”. Enkele dagen later is hij zo diep in je mailbox (en in je gedachten) weggezonken dat je er niet meer toekomt om hem te beantwoorden tot … je correspondent je een herinnering stuurt.   Dit probleem heb je nooit meer als je “FollowUpThen.Com” gebruikt.

Hoe werkt het?

De mail die je niet direct wil beantwoorden die stuur je naar 3days@followupthen.com  en je verwijdert de mail.  Over exact drie dagen zal de mail opnieuw naar je toe gestuurd worden.  “3days” is natuurlijk maar een voorbeeldje, je kan oneindig veel combinaties verzinnen zoals. “5hours”, “5months”, “nextsaturday”, “15june”, “15june2020”, “everymonday”, …   Je hoeft ook niet noodzakelijk een mail “door te sturen”, je kan uiteraard ook gewoon zelf een mailtje schrijven (vb. “Oma’s verjaardag niet vergeten”) en dat mailen naar “every15june@followupthen.com”.

Deze dienst is volledig gratis en je hoeft vooraf niet te registreren. De eerste keer dat je een mail stuurt naar FollowUpThen krijg je wel een mailtje terug waarin je je mailadres moet bevestigen.

Een extra woordje uitleg vind je op de website http://www.followupthen.com maar je kan zoals steeds ook bij mij terecht als je vragen of opmerkingen zou hebben.

Wat weet Google van mij?

W

Wat weet Google van jou? Misschien wel meer dan je denkt, laten we samen eens kijken.  Als je een Google account hebt (vb. voor GMail of YouTube) dan log je daar af en toe mee in, right?

Het zou wel eens kunnen dat Google dat heel nauwkeurig bijhoudt: wanneer je inlogt, vanop welk toestel je dat doet en bij benadering van waar ter wereld je dat doet. Kijk maar eens op:  https://security.google.com/settings/security/activity

Het zou ook wel eens kunnen dat Google bijhoudt waar jij allemaal naar zoekt, en … op welke zoekresultaten jij allemaal klikt.  Kijk maar eens op: https://history.google.com/history/

Als je een Google driven device hebt (een Android smartphone of tablet) waarop je de store gebruikt, dan zou het wel eens kunnen dat Google nauwkeurig registreert waar jij de afgelopen maanden/jaren hebt uitgehangen. Kijk maar eens op: https://maps.google.com/locationhistory/b/0

De laatste twee dingen kan je uitzetten in de instellingen van je Google Account of je kan erop letten telkens af te melden bij Google.

Excel bestanden genereren … met GenerateData.Com

E

Elke leerkracht die zelf Excel oefeningen verzint kent het wel: basisbestanden “genereren” om oefeningen op te maken. Namen, bedragen, straten, postcodes, … verzinnen om de leerlingen mee te laten werken. Dankzij de website http://www.generatedata.com/ is dat nu voltooid verleden tijd.

Op de website kan je op een eenvoudige manier aangeven welke kolommen je wil hebben en je kan exporteren naar heel wat verschillende formaten waaronder Excel.

Wie een stapje verder wil gaan, de broncode van dit project is gratis te downloaden op GitHub.

Je facebook wachtwoord

J

Net zoals bij de meeste diensten is ook bij Facebook je wachtwoord hoofdletter gevoelig.  Wanneer je vb. “FaCeBooK” neemt als wachtwoord zal je niet kunnen aanmelden met “facebook” of met “FACEBOOK”.  Daar zijn echter twee uitzonderingen op. Wanneer je wachtwoord begint met een kleine letter, dan mag je het wachtwoord ook met een hoofdletter ingeven. (Dus als je wachtwoord “facebook” is, zal het wachtwoord “Facebook” ook aanvaard worden.)  De reden daarvoor is dat veel smartphones/tablets de eerste letter van een “zin” omzetten in een hoofdletter zonder dat de gebruiker daar erg in heeft.

Een tweede uitzondering op de hoofdlettergevoeligheid is dat Facebook ook toelaat dat je AL je kleine letters omzet in HOOFDLETTERS + omgekeerd. Is je wachtwoord dus “FaCeBooK” dan mag je ook intikken “fAcEbOOk”.  Zo zal je ook succesvol kunnen aanmelden als je CAPS LOCK per ongeluk aanligt.

Als je daar vragen over hebt, dan kan je mij steeds contacteren.

 

Active vs Passive FTP

A

Het FTP protocol is een “raar” protocol omdat het gebruik maakt van twee totaal verschillende verbindingen tussen de client en de server.  Enerzijds heb je de control connection (de verbinding waarover client en server met elkaar praten zeg maar) en anderzijds heb je de data connection (de verbinding waarover client en server data (= bestanden) met elkaar uitwisselen).

De control connection is de eenvoudigste om te omschrijven.  Deze (op TCP gebaseerde) verbinding wordt opgezet op vraag van de client tussen poort 21 van de server en een willekeurige poort boven de 1024 van de client. Dit is +/- altijd zo en het doet er niet toe of je een “active” of een “passive” ftp verbinding gebruikt. Deze verbinding wordt ook in stand gehouden zolang de FTP sessie duurt en wordt oa. gebruikt om informatie uit te wisselen over de manier waarop de data connectie moet opgezet worden.

De data connection kan op twee manieren verlopen.  We beginnen met de “active” ftp sessie. Hierbij zal er een tweede verbinding opgezet worden op vraag van de server tussen poort 20 van de server en een poort op de client.  De poort op de client werd eerder door de client gekozen en doorgegeven aan de server (over de control connection) middels een PORT commando.

Zo’n PORT commando ziet eruit als volgt:

PORT 199,174,116,17,17,170

De eerste vier getallen zijn het IP adres van de client, de laatste twee getallen zijn de poort waarmee de server verbinding moet maken. Neem het eerste van de twee getallen, vermenigvuldig het met 256 en tel er het laatste cijfer bij. In dit geval gaat het dus om het IP 199.174.116.17 en poort 4522.

Dit werkt prima op voorwaarde dat de server het juiste IP adres van de client krijgt en hier wrikt het schoentje. Wanneer je client zich achter een firewall bevindt die de NAT techniek toepast (omzetten van private in publieke ip adressen) dan zal je client het private IP adres aanbieden aan de server. De server zal proberen om met dat private IP adres een data connection op te bouwen maar uiteraard zal dat niet lukken.

Het heeft ook geen zin om je client aan te leren dat hij het publieke IP adres moet doorgeven aan de server. De NAT router/firewall zal deze verbinding niet toelaten. (NAT routers laten geen verbindingen toe behalve als ze van binnen uit geïnitieerd worden.)

Daarom bestaat een twee techniek: passive ftp. Hierbij zal de client tegen de server zeggen “jij moet geen data connection proberen op te zetten, dat doe ik wel”.  Daarop zal de server antwoorden “ok, maak jij dan maar verbinding met mijn poort XXX”, waarbij XXX een poort is boven de 1024.  De client zal daarop een data connection opzetten tussen een willekeurige poort op de client en de eerder doorgegeven poort op de server.  De commando’s daarvoor zijn als volgt:

Client: PASV
Antwoord v/d server: Entering passive mode (199,10,17,154,50,103)

Ook hier zijn de zes cijfers uit te splitsen in de eerste 4 (het IP adres) en de laatste 2 (het eerste * 256 + het tweede = het poort nummer van de server die klaar gemaakt is om een data connectie te ontvangen van de client)

Deze manier van werken werkt wel als de client achter een NAT router/firewall zit.

Als u vragen hebt over deze techniek of dit artikel, of u wil er meer over weten, dan hoor ik graag van u.

De map “Opstarten” in Windows 8

D

Tot en met Windows 7 had je in het startmenu een mapje “Opstarten” waarin je alle programma’s kon plaatsen die samen met de computer moesten gestart worden.  Met de introductie van Windows 8 is het start menu verdwenen en bijgevolg ook de map “Opstarten”.

Het is te zeggen je ZIET het startmenu niet meer, maar het is er wel nog … en dus ook de map “Opstarten”.  Open het venster “uitvoeren” met de sneltoets CTRL+R, geef het commando “AppData” in en druk op “OK”. Je krijgt een verkenner venster te zien, waarin je achtereenvolgens de volgende mappen aanklikt: Roaming, Microsoft, Windows, Menu Start, Programma’s (het mapje, niet de snelkoppeling) en ten slotte “Opstarten”.

Plaats hier snelkoppelingen naar de programma’s die moeten opstarten samen met Windows. Werkt perfect zoals in vorige Windows versies.

Heb je hier vragen of opmerkingen bij, dan hoor ik graag van je!

Afbreekzone in Word 2013

A

Al sinds mensenheugenis kan MS Word woorden splitsen in lettergrepen. En al even lang kan je een zogenaamde “Afbreekzone” instellen. De afbreekzone is de afstand vanaf de rechtermarge die leeg mag zijn, voor het eerste woord op de volgende regel wordt afgebroken om de huidige regel wat meer te “vullen”.  Met andere woorden hoe groter de afbreekzone, hoe minder er gesplitst wordt.

Anyway … wanneer je in Word 2013 probeert om de afbreekzone in te stellen dan is dit venstertje uitgeschakeld. Soms … meestal … af en toe …   Na wat zoekwerk vond ik waarom dat zo was.

Het instellen van een afbreekzone is niet langer mogelijk omdat de algoritmes voor het splitsen van woorden dermate beter is geworden dat het instellen van een dergelijke zone overbodig is geworden. Het invulvenstertje staat er nog voor oudere documenten maar wordt dus uitgeschakeld voor documenten met een 2013 indeling.

http://support.microsoft.com/kb/2740483/en-u

http://blogs.office.com/b/microsoft-word/archive/2012/08/21/layout-in-the-new-word.aspx

Heb je hier vragen of opmerkingen bij, dan hoor ik graag van je!

Laatste berichten