In de eerste twee weken van augustus hebben we alweer de derde Scrum-iteratie afgerond. Dit keer zijn er 49 tickets opgelost. Daarvan is 'helaas' het grootste deel van technische aard of voor intern gebruik, dus de .plan is daarom ook vrij kort
Social buttons
Direct bij het introduceren van de social buttons werden we er op gewezen dat ze niet onder .plans stonden, dat hebben we bij deze rechtgezet en ze ook gelijk maar onder meukupdates gezet. Voor de duidelijkheid, ze kunnen nog steeds uitgezet worden.
Verder waren er wat bugjes met Facebooks like-button: zo werkte deze niet zo best in IE7 en IE8 en verscheen de tekst 'Like' ineens in het Nederlands. Helaas werden deze vooral door Facebook zelf veroorzaakt, maar ondertussen zijn ze ook weer opgelost.
Jobs
Deze iteratie is er wat tijd besteed aan de integratie van Jobs met de rest van de site. Bij forumtopics kunnen nu, net als bij nieuws, relevante vacatures worden getoond. We hebben gelijk de koppelingen waarop dat gebeurde wat geactualiseerd, dus hopelijk is de relevantie ook een stukje beter dan voorheen.
Pricewatch
In de pricewatch is de plek van de 'filter reset'-knop van onder het formulier naar bovenaan verhuisd. Verder kan er nu gesorteerd worden op meervoudige specificaties, die was in het verleden nog niet uitgewerkt omdat dit een nogal complexe sortering oplevert. Hoe sorteer je bijvoorbeeld 'eSATA', '2x eSATA, 2x USB 2.0' en '2x USB 2.0' met elkaar? Daar hebben we nu wel een antwoord op verzonnen, waardoor een en ander nu in ieder geval gesorteerd wordt. Die sortering zal vast niet altijd even logisch zijn, maar dat is nou eenmaal het nadeel van zulke complexe gegevens
Sessie-opslag/MongoDB
Ruim een jaar geleden verhuisden we de opslag van de sessies van MySQL naar MongoDB. Hoewel we nog steeds achter die keuze staan, bleek het toch ook wat nadelen te hebben. MongoDB kan wat minder goed overweg met data die relatief snel ook weer verwijderd wordt. En hoewel we veel trouwe bezoekers hebben, wordt het gros van de nieuw aangemaakte sessies maar één keer gebruikt. Er zijn uiteraard meerdere redenen waarom die sessies onnodig aangemaakt worden: veel zullen aan bezoekers en robots uitgedeeld worden die onze cookies niet opslaan en dus bij elke pageview als nieuwe bezoeker te zien zijn, maar ook als we naar ip's kijken komt een groot deel voor langere tijd niet meer terug.
Op dagbasis gooiden we daarom zo'n 200.000 sessies weg van bezoekers die een week lang niet teruggekeerd zijn na hun eerste pageview. Het totaal aantal sessies dat we momenteel in de database hebben schommelt zo rond de vier miljoen. Die verwijderopdracht was een ander aspect waar MongoDB niet heel goed tegen kon, hoewel veranderingen aan collections op zich wel los staan van leesacties erop, was het uiteindelijk toch een blocking operatie. Aangezien die handeling zo'n tien seconden duurde, leverde dat merkbare vertragingen op.
Om deze onnodige vulling en belasting van MongoDB te verhelpen slaan we nu de nieuw aangemaakte sessies eerst in Memcached op. Mocht iemand toch terugkeren, dan schrijven we de sessie pas weg in de meer permanente opslag van MongoDB.
De oplettende bezoeker zal merken dat we die informatie in de id van de sessie verwerken en dat de eerste paar bytes nu permanent oplopend zijn. Die laatste wijziging zorgt er voor dat nieuw aangemaakte sessies in principe niet meer op een willekeurige plek in de database terecht komen, maar altijd ergens aan het eind.