Derfor vil jeg gemme oplysningerne jeg får fra facebook i en database, og så samtidig genere en kode til brugeren. Tanken bag ved at gøre det her er at gøre det så nemt som muligt for brugeren. Derfor vil jeg lave en kode der er:
- kortest mulig
- Nemmest muligt at skrive på en android telefon.
Når man normalt generer et ID i PHP og MySQL er det en integer (normaltal), der bare stiger med 1 hver gang. Med hvis jeg nu får 10.000 brugere, eller helt utopisk 60.000 brugere, som er det tal der bruger lectio, og dermed kan få noget ud af min applikation, så skal jeg have 5 tegn. Det lyder ikke af meget, men lad os se om ikke vi kan gøre den kortere ;)
Når jeg siger det på den måde så betyder det naturligvis at det er der en løsning på. Det er ikke sikkert at alle vil mene at den er vildt relevant for 5 tegn, men lad os forestille os at jeg laver et app der er 400.000 brugere der vil have, og indtaste indstillinger på facebook. Jeg kan klemme 456.975 brugere ned i et ID på 4 tegn. Hvis jeg ville kunne jeg endda få klemt 1.679.615 ind på de 4 tegn. Og hvis jeg gik helt ud i ekstremerne kan jeg måske klemme hele 2.313.440 ned på dem. Men jeg er ret sikker på at det sidste ville volde mig lidt kompabilitetsproblemer.
Måden jeg gør det på er at bruge nogle andre talssytemer end dem vi kender. Mange kender måske 2-talssystemet, også kaldet binært (10001011101 = 1117). Dette har den modsatte effekt, da det gør tallene lange. Derfor skal jeg op i nogle talssytemer der har over 10 tegn, som vores eget har. Tag og kig lidt på den tabel jeg har lavet her, hvor jeg forklarer hvilke talsystemer jeg bruger til at lave så mange brugere på 4 tegn.
Antal brugere der kan håndteres | Talsystem der er brugt | Tegn der er brugt |
2.313.440 | 39-talssystem | 0-9 og A-Æ (med W) |
1.679.615 | 36-talssystem | 0-9 og A-Z (med W) |
456.975 | 26-talssystem | A-Z (med W) |
I den øverste linje bruger jeg hele det danske alfabet (Hvorvidt W hører med kan man diskutere, men den er med her. ), men jeg kan ikke være sikker på at det virker. Linjen nedenunder består af numre og det engelske alfabet. Der er der ingen problemer. I den nederste bruger jeg kun bogstaverne i det engelske alfabet. Hvorfor jeg har taget den med kan du se nedenunder.
For det næste punkt er at det skal være nemmest muligt at skrive på en android mobil.
For det næste punkt er at det skal være nemmest muligt at skrive på en android mobil.
Billede fra Android Developers |
Til venstre ser i et billede af hvordan tastaturet på en android mobil normalt ser ud, med mindre den bruger T9.
Som i kan se, så er det kun det engelske alfabet der er på tastaturet, og der er ingen tal. Hvis man vil skrive tal skal man på en anden "side" af tastaturet.
Min applikation skal max håndtere 60.000 brugere. Derfor er det alt nok at bruge mit 26-talsystem. Selvom dette er ved at blive et ret langt indlæg, vil jeg lige fortælle hvordan sådan et 26-talsystem fungerer. Jeg vil også smide lidt kode i selv kan snuppe.
Det jeg skal have lavet er så hvert bogstav repræsenterer et tal. Mange vil nok mene at A = 1. Men hvad skal så repræsente 0? Da jeg ikke vil bruge tal, sætter jeg A til at være 0. Dermed bliver Z til 25. Det vil sige at på den første plads kan der være værdier fra 0 - 25. Dermed skal tal nummer 2 symbolisere 26. Man kan finde ud af hvor meget "pladsen" skal symbolisere ved at tage 26x hvor x er pladsen tallet står på, minus 1.
Hvis i ikke forstår min, ret kringlede, forklaring af et 26-talssystem, er du velkommen til at skrive i kommentarerne :)
Det blev et langt indlæg, måske bliver det næste kortere. Måske ikke...
Kenneth Rasmussen