Het is altijd zo simpel als je door hebt wat je over het hoofd ziet . Bedankt.quote:Op zondag 24 juni 2012 19:36 schreef Diabox het volgende:
[ code verwijderd ]
What Every Computer Scientist Should Know About Floating-Point Arithmetic
Nopequote:Op zondag 24 juni 2012 19:40 schreef raptorix het volgende:
[..]
Dan gebruik je gewoon een kut database omdat normale databases dat zelf wel cachen dan wel optimaliseren, we hebben het hier niet over miljoenen records mag ik aannemen.
Is wel zonder decimalenquote:Op zondag 24 juni 2012 19:46 schreef BrainOverfloW het volgende:
[..]
Het is altijd zo simpel als je door hebt wat je over het hoofd ziet . Bedankt.
1 2 3 4 5 | probability = probability/(probability+1); probability = Math.round(probability*100)/100; probability = probability.toString().split('.'); probability = probability[1] + '.' + probability[0]; alert(probability); |
Heb je het al geprobeerd met een genormaliseerd design en een reeele set testdata?quote:Op zondag 24 juni 2012 19:46 schreef WheeleE het volgende:
[..]
Nope
Ik verwacht honderden. Als het echt succesvol wordt (wat ik niet zo gauw verwacht) misschien duizeden, maar that's it.
Leuk dat er nog over mijn stelling wordt gedebatteerd hier . Ik heb inmiddels een tweede design verzonnen. Een aparte scoretabel (wedstrijdid, teamid, scorevoor, scoretegen, toto) met daarin per wedstrijd 2 records, voor elk team van de wedstrijd 1. Het is wel redundante opslag, maar maakt het volgens mij wel een stuk makkelijker om de standen te bereken.
Ik maak me niet zo'n zorgen over de performance, maar ik krijg de juiste resultaten er niet uit. Mijn querykennis is gewoon ontzettend weggezaktquote:Op zondag 24 juni 2012 19:54 schreef raptorix het volgende:
[..]
Heb je het al geprobeerd met een genormaliseerd design en een reeele set testdata?
Het probleem met denormaliseren is dat wanneer je later dingen wilt uitbreiden je vaak de web inslaat van "sloppy design".
Queries om standen op te bouwen zijn ook lastig, je ontkomt in principe niet aan aggregate queries, en die vind ik zelf ook altijd kutquote:Op zondag 24 juni 2012 19:59 schreef WheeleE het volgende:
[..]
Ik maak me niet zo'n zorgen over de performance, maar ik krijg de juiste resultaten er niet uit. Mijn querykennis is gewoon ontzettend weggezakt
Het initiele ontwerp was netjes genormaliseerd, en met enkele tientalle records testdata. Alleen kreeg ik het niet voor mekaar de complexere overzichten uit te halen. Door een aangepast ontwerp lukt dat hopelijk wel, zonder dat het ten koste gaat van performance.
Heheh, ja dat is hem precies. Ik ben ooit begonnen als beheerder+ontwikkelaar, maar de afgelopen 5/6 jaar heb ik alleen maar beheerwerk gedaan. Joinen lukt nog wel, maar al dat soort berekeningen worden een uitdaging.quote:Op zondag 24 juni 2012 21:26 schreef raptorix het volgende:
[..]
Queries om standen op te bouwen zijn ook lastig, je ontkomt in principe niet aan aggregate queries, en die vind ik zelf ook altijd kut
Zelf heb ik jarenlang behoorlijk complexe queries geschreven (bijvoorbeeld voor de eerste versie van Funda) maar laatst moest ik een simpele join doen, en dat lukte me niet meer uit me hoofd
Dit topic gaat over MySQL, die doet dat niet. Andere db's ken ik niet, maar ik betwist dat die dit wel goed kunnen cachen.quote:Op zondag 24 juni 2012 19:40 schreef raptorix het volgende:
[..]
Dan gebruik je gewoon een kut database omdat normale databases dat zelf wel cachen dan wel optimaliseren, we hebben het hier niet over miljoenen records mag ik aannemen.
Gewoon het aantal recordsquote:Op maandag 25 juni 2012 01:10 schreef Tijn het volgende:
Wat bedoel je met "dat een variabele omhoog gaat"? Is dat een getal? Bedoel je dan niet gewoon het aantal records dat is geregistreerd?
Ik zou zeggen, maak dan een tabel waarin je de unieke IP-adressen opslaat. Dit is de simpelste variant, zonder verdere velden. In een echte applicatie zijn kolommen als een uniek id en een timestamp waarschijnlijk wel handig om toe te voegen, maar niet nodig om alleen maar het aantal keer dat er op een knop is geklikt te tellen.quote:
1 2 3 4 | CREATE TABLE IF NOT EXISTS `log` ( `ip` varchar(45) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`ip`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | <?php # # KNOPPENTELLER # // verbinden met de database $mysqli = new mysqli("localhost", "username", "password", "database"); // verwerk input if($_SERVER['REQUEST_METHOD'] == 'POST') { // controleer of het meegestuurde ip-adres een geldig adres is if(filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP)) { // probeer het in de database op te slaan if($mysqli->query('INSERT INTO `log` (`ip`) VALUES("'.$_SERVER['REMOTE_ADDR'].'")')) { // gelukt :) $message = 'Bedankt!'; } else { // mislukt :( $message = 'Er is al een keer vanaf dit IP-adres op de knop gedrukt, dus het mag nu niet meer.'; } } } // haal alle logs op $result = $mysqli->query("SELECT * FROM `log`"); ?> <!DOCTYPE html> <html> <head> <title>Knoppenteller</title> </head> <body> <h1>Knoppenteller</h1> <p>Elk uniek IP-adres mag 1 keer op de knop drukken.</p> <p>De knop is tot nu toe <strong><?php echo $result->num_rows; ?></strong> keer ingedrukt.</p> <?php if(isset($message)): ?> <p><strong><?php echo $message; ?></strong></p> <?php else: ?> <form method="post" action=""> <button type="submit">de knop</button> </form> <?php endif; ?> </body> </html> |
Danku zeer!quote:Op maandag 25 juni 2012 02:03 schreef Tijn het volgende:
[..]
Ik zou zeggen, maak dan een tabel waarin je de unieke IP-adressen opslaat. Dit is de simpelste variant, zonder verdere velden. In een echte applicatie zijn kolommen als een uniek id en een timestamp waarschijnlijk wel handig om toe te voegen, maar niet nodig om alleen maar het aantal keer dat er op een knop is geklikt te tellen.
[ code verwijderd ]
Dit is een tabel met alleen een kolom die "ip" heet waarin varchars (strings) van maximaal 45 tekens kunnen worden opgeslagen, wat lang genoeg is om zowel IPv4 als IPv6-adressen op te slaan. Doordat deze kolom ook de primary key is, wordt voorkomen dat er dubbele IP-adressen worden opgeslagen.
Vervolgens zou je zo'n soort pagina kunnen maken:
[ code verwijderd ]
Kheb bij elke PHP-regel een comment gezet met uitleg wat die regel doet. Spreekt voor zich, toch?
Wat betreft de databaseverbinding: PHP biedt 3 manieren om met een MySQL-database te verbinden (klik hier voor meer info). Ik heb hier gebruik gemaakt van mysqli. Je zou ook voor PDO kunnen kiezen.
Mocht je een echte applicatie gaan bouwen dan is het waarschijnlijk een goed idee om te kijken naar een framework (Zend Framework, CakePHP, CodeIgniter om wat populaire voorbeelden te noemen) met een abstractielaag voor databasetoegang, zodat je je hier niet druk om hoeft te maken. Een goed framework is waarschijnlijk de beste manier om op een zo snel mogelijke manier een veilige applicatie te bouwen.
Zitten er allebei ook in.quote:Op maandag 25 juni 2012 02:03 schreef Tijn het volgende:
[..]
Ik zou zeggen, maak dan een tabel waarin je de unieke IP-adressen opslaat. Dit is de simpelste variant, zonder verdere velden. In een echte applicatie zijn kolommen als een uniek id en een timestamp waarschijnlijk wel handig om toe te voegen, maar niet nodig om alleen maar het aantal keer dat er op een knop is geklikt te tellen.
[ code verwijderd ]
Heb je alleen wel Linux 64 bit met 8gig geheugen voor nodig.quote:Op dinsdag 26 juni 2012 13:48 schreef remlof het volgende:
www.memsql.com volledig compatibel met en 30x sneller dan MySQL
Wat kost 8Gb nou nog tegenwoordig?quote:Op dinsdag 26 juni 2012 13:58 schreef Scorpie het volgende:
[..]
Heb je alleen wel Linux 64 bit met 8gig geheugen voor nodig.
Nop, dit is even een afkorting. Al hebben ze wel heel leuk cijfertjes in de naam. Maar heb ik niet bedacht. BAAN (Infor)quote:Op maandag 25 juni 2012 15:04 schreef raptorix het volgende:
Ik mag serieus hopen dat je die tables niet echt zo hebt genoemd?
Niks, binnenkort maar eens een VM maken met dit erop. Kijken hoe het zich verhoudt met mijn newznab instantie met 25 gig aan data.quote:
Leuk voor mensen die MySQL niet kunnen configureren en durability niet waarderen. Ik verwacht binnen niet al te lange tijd wat vernietigende blogposts.quote:Op dinsdag 26 juni 2012 13:48 schreef remlof het volgende:
www.memsql.com volledig compatibel met en 30x sneller dan MySQL
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |