Door Koen Beijer

Product Owner

Levertijdfilter in Pricewatch en aanduiding columns - Development-iteratie #203

17-03-2021 • 10:01

62

Iteratie #203 is afgerond. In deze iteratie is een nieuw filter toegevoegd aan de Pricewatch, is het column-artikeltype beter aangeduid in het artikel zelf en zijn er veel verbeteringen achter de schermen gerealiseerd.

Levertijdfilter in de Pricewatch

Het is pricewatchers wellicht al opgevallen dat er sinds een week ofLevertijd filter twee een levertijdfilter beschikbaar is bij de productlijsten. Deze slider werkt grotendeels hetzelfde als bij de prijslijsten en gaat van een minimum van 24 uur tot een maximum van 12 dagen, met "> 12 dagen" voor geen grens. Dit filter heeft invloed op de laagste prijs en het aantal prijzen. Ook wordt het gebruikt voor de positie van een product als je op prijzen sorteert, als er helemaal geen prijzen overblijven, valt het product weg uit de lijst.

Dit is een eerste variant van een wens die al lange tijd bestaat. Vooraf was voor ons niet duidelijk of we dit met een acceptabele responstijd en belasting van onze servers konden uitwerken. Daarom hebben we deze eerste versie uitgewerkt bij wijze van proof of concept. Daarbij kozen we voor het levertijdfilter, omdat dat nu enerzijds heel relevant is bij onder andere videokaarten. Anderzijds heeft dit de eenvoudigste gebruikersinterface, waardoor we ons konden focussen op de onderliggende techniek.

Voordat we dit filter hadden, werden in de engine voor elk product alleen de laagste prijs en het aantal prijzen in het geheugen geladen. Dat volstond echter niet hiervoor; de laagste prijs kan tenslotte ook een te lange levertijd hebben.

Uiteindelijk bleek de simpelste oplossing ook de beste: bij ieder product de prijzen in een eenvoudige container met een array van prijzen zetten. Om deze bijna 2 miljoen objecten zo klein mogelijk te houden, bevatten ze alleen de prijs, een numerieke representatie van de levertijd en een referentie naar een shop. Deze worden gesorteerd op prijs bewaard. Als er geen prijsfilter actief is, is simpelweg de eerste prijs in de array de laagste en de lengte van de array is het aantal prijzen. Als er wel een prijsfilter actief is, wordt er een kopie van zo'n container gemaakt, maar dan alleen met de prijzen die volstaan. Zo konden we voorkomen dat er veel aanpassingen nodig waren waar iets met prijzen wordt gedaan.

Door bovendien het concept van een PriceFilter generiek op te zetten, werkt die code met ieder willekeurig filter. Of met iedere combinatie van filters, want we hebben ook een implementatie van de PriceFilter-interface die verschillende filters combineert.

Voorheen werkte het filteren op de laagste prijs door een ruwe selectie van de producten in de desbetreffende categorie uit een SortedMap te halen en daarna per product uit die ruwe selectie te testen of die inderdaad voldoet aan het opgegeven prijsbereik. Bij deze nieuwe situatie kon dat ook niet zomaar, want de laagste prijs kan tenslotte per pageview verschillen. Ook hier bleek de simpelste oplossing goed te werken. Als er een prijsfilter is ingesteld, wordt uiteindelijk van alle producten die in een categorie zitten, in een loop getest of ze nadat het prijsfilter is toegepast, aan dat prijsbereik voldoen.

Na onder andere de genoemde aanpassingen om de Java-code hiervoor geschikt te maken en wat benchmarks voor de prestaties bleek het uiteindelijk goed genoeg te werken om direct live te kunnen. Sterker nog, we konden zelfs nog wat optimaliseren. Die originele uitwerking met een SortedMap bleek stiekem helemaal niet zo efficiënt met kleine aantallen producten. Ook als er geen prijsfilter actief is, wordt nu dus met een eenvoudige loop het prijsbereik getest als het aantal te testen producten laag is.

Door het filteren op prijsdetails generiek op te zetten, is ook gelijk een deel voor andere varianten, zoals filteren op een minimale shopreviewscore en uitsluiten van winkels, een stap dichterbij gekomen. Voor die laatste variant was echter vooraf al duidelijk dat een gebruiksvriendelijke interface daarvan de grootste uitdaging is.

Aanduiding column in de titel

Bij de introductie van Plus (toen nog Premium) kwam ook een nieuw artikeltype tot leven: de column. Deze opiniestukken zijn anders dan de feitelijke reviews en nieuwsberichten zoals iedereen van ons gewend is. Om extra aan te geven dat het gaat om een column, met de mening van de redacteur, hebben we dit artikeltype verwerkt in de titel van het artikel, zodat dit voor iedereen helder is bij het lezen.

Serverupgrades

Op servergebied is er het een en ander veranderd. We hebben een vrij lange periode getest met Ubuntu 20.04, maar de veranderingen van de laatste jaren aan Ubuntu bevallen ons niet heel goed. Dat geldt bijvoorbeeld voor de neiging om steeds meer van de snap-store gebruik te maken, de reclame in de motd, veranderde installers (vooral voor vm's) en de bloated installatie, zelfs als je voor minimaal gaat. Omdat alle servers herinstalleren vrij veel werk is, hebben we besloten om dat pas te doen als we de hardware vervangen en om nu eerst alle huidige Ubuntu-installaties te upgraden naar 20.04. Alle nieuwe servers worden voorzien van (een minimale) Debian-installatie. De upgrade naar 20.04 is vorige week afgerond en een aantal nieuwe servers draait zelfs al op Debian.

Reacties (62)

62
62
50
1
0
2
Wijzig sortering
Ik zou het fijn vinden om op winkel te kunnen filteren. Ik heb namelijk een aantal favoriete webshops waar ik graag shop.
Dat is een bekende wens. Deze recente toevoegingen in de engine maken het 'makkelijker' om een dergelijk filter te ontwikkelen. Binnenkort gaan we kijken wat er nog gedaan moet worden om deze te realiseren.

Kan helaas geen belofte doen wanneer ie komt, maar we hebben 'm in gedachten :)
Dan graag ook de inverse optie. Er zijn enkele winkels waar ik dusdanig slechte dienstverlening heb mogen ervaren dat ik geen zaken meer met deze wil doen.

En dus ook hun prijsindicaties niet als relevant zie.
Oftewel, het Max ICT verhaal?
Lijkt mij heel makkelijk te realiseren als je de wens van DareFace toepast, doordat je winkels kunt kiezen maar daarnaast ook een toggle "wel/niet" hebt :)
helemaal mee eens, niets is zo irritant als denken een goede deal te zien en er dan vervolgens achter te komen max-ict de enige verkoper is.
Dit idd.
Zelfde had ik ook toen ik op v&a actief was, daar had ik sommigen wilen blacklisten
jjcp trading en detmer nemen de halve feed in in v&a idd :P
Omni kan er ook wat van hahaha al hoewel ik me soms wel stuk lach om de tekst, als ik hem toevallig zie dan lees ik ze wel altijd
Ja,maar om daadwerkelijk een deal te maken...dan moet je er wel heel eat voor over hebben in meeste gevallen.
Ja alhoewel ik hun de handel wel gun filter ik ze er liever gewoon uit.
Wat ik eigenlijk zou willen, is dus een filter of kolom waar je op voorhand kan zien bij hoeveel bedrijven het product beschikbaar is. En kan aangeven dat je alleen producten wil zien indien beschikbaar bij 2 of meer bedrijven.

Aangezien ik niet geloof dat Tweakers betalende bedrijven zou laten wegfilteren op basis van naam. Da's niet heel goed voor de inkomsten van Tweakers
Ik heb een keer gedacht: ach, ik heb geduld, heb het niet meteen nodig, ik wacht wel even, dan zal Max-ICT wel kunnen. Werd toch snel vervelend wanneer het dan toch nog langer duurt dan gedacht :)
Eigelijk wil je vooral een filter om Amazon en MaxICT te kunnen verbergen in de resultaten.
Je kunt het ook nog aanpassen naar display:none!
Werkt dit ook met producten van te voren al filteren?
Ik dacht van niet namelijk
Niet met producten met de huidige snippets.
Mogelijk wel als je zelf wat in elkaar zet met CSS.
De pricewatch zou ook gediend zijn met een filter op type CPU cores (rocket lake, zen 3, etc), zowel bij cpu's als bij laptops/pc's.
zou leuk zijn, maar denk dat te weinig mensen voldoende voorkennis hebben dat ze zonder extra informeren dit als selectiecriteria zouden gebruiken. Ik gebruik meestal een combinatie van prijs/producent, datum ingevoerd en soms serie..

Maar ben het er wel mee eens dat het hebben van veel criteria handig kan werken..
Core-type is wat lastig, maar generatie / serie zou niet zo lastig moeten zijn. Kunnen filteren op Ryzen 5000 bijvoorbeeld, zou handig zijn.
denk dat te weinig mensen voldoende voorkennis hebben

Over welke groep mensen heb je het? Ik mag hopen dat hier op tweakers het aantal wel significant is.
Daar kan je een voorstel voor doen bij de collega's die de Pricewatch beheren. Daar zijn namelijk geen technische aanpassingen voor nodig, maar wel veel werk om dat allemaal in te voeren...
Die Levertijdfilter, is wat de webwinkel aangeeft neem ik aan?
Ik snap denk ik wel waar je op doelt (e.g. MaxICT) maar hoe zou je de werkelijke levertijd kunnen weergeven dan?
Een shopfilter zou wel handig zijn... :P
Bedrijven betalen Tweakers om in de Pricewatch te staan, dus Tweakers zal niet snel een filter maken om bedrijven uit te sluiten.
Dan nog zou een filter handig zijn.

Als ik de reviews bekijk van bv "Xstra Digital Storage", dan zou dit een winkel zijn die ik niet in de lijst zou willen zien.
De hoeveelheid shops in een shopfilter is te lang. Ik heb zelf voorgesteld om te sorteren op scores van de voorgestelde webshops, zoals ook mogelijk is bij V&A. Bij V&A kun je daardoor one-day-flies met videokaarten vermijden. Als je met zo'n filter ook Max ICT en Xstra Digital Storage kunt weren, dan is daarmee wellicht ook het doel bereikt.

Link naar de voorgestelde features: Gereserveerde advertenties filteren.

Maar goed, met dit nieuwe levertijden filter ben ik ook wel een heel eind geholpen.

[Reactie gewijzigd door Kiswum op 24 juli 2024 17:05]

Inderdaad. Het zijn telkens dezelfde shops die in de Pricewatch terugkeren met verkeerde prijzen, foutieve producten of ronduit slechte recensies.
Ik denk dat je ook de shop waardering uit de reviews wil kunnen meenemen hierin. Als een firma als MaxICT structureel slecht scoort op levertijd, dan zou je dat kunnen meenemen in het filter. Als levertijd review erg laag, dan extra uitroepteken met waarschuwing, of zo.

Dat gaat ze dan ook raken bij wel leverbare artikelen, want daar krijg je dan de waarschuwing ook. Dat zou een shop kunnen bewegen om de werkelijke levertijd te rapporteren in de Pricewatch.
Probleem met waarderingen is dat bedrijven als megekko als een malle adverteren en reviews kopen met win acties. En laat ik deze nu net willen filteren

[Reactie gewijzigd door Danny Phantom op 24 juli 2024 17:05]

Helemaal correct.
Misschien zou de PW een filter op door winkels aangeleverde prijzen kunnen zette, zodat prijzen van 3 (of meer) keer normaal niet aangegeven worden, of beter "Op aanvraag"? Als je naar enkele producten kijkt, dan zijn er prijsgrafieken bij die van 200€ naar 2500€ gaan en in de grafiek een zaagtand veroorzaken. :P
Voorbeelden :

pricewatch: Bomann KM 398 CB
pricewatch: KAPSOLO KAP10470 (EliteBook 1030 G1)
pricewatch: Hikvision DS-2CD7146G0-IZS
pricewatch: Belkin SCREENFORCE InvisiGlass Ultra (iPhone SE 2nd gen, iPhone 8...
pricewatch: Lexmark X792

|:( 8)7 :+
Dat soort beveiligingen hebben we al, maar die wordt minder streng naarmate er minder prijzen zijn; want hoe zou onze code anders moeten besluiten welke prijs verkeerd is? Het komt ook wel eens voor dat de prijzen significant anders zijn en dat dat correct is...

Al die historie analyseren die jij en ik in een oogopslag kunnen en daarbij ook nog beredeneren dat sommige prijzen onzinnig hoog zijn... dat kan onze code iig niet.

Dus er zullen inderdaad producten zijn waar rare prijzen staan. Die kan je overigens melden als je over een prijs hovert en dan "Onjuiste prijs melden". Dan kunnen de collega's die dat verwerken ervoor kiezen dat product te blokkeren bij die winkel.
Thx voor de info, dát er iets van beveiliging in zit. Ik ben al een actieve melder, maar de absurd hoge prijzen vallen mij pas op bij een (dan absurde) prijsdaling. 😊
Dat geldt bijvoorbeeld voor de neiging om steeds meer van de snap-store gebruik te maken, de reclame in de motd, veranderde installers (vooral voor vm's) en de bloated installatie, zelfs als je voor minimaal gaat.
Maar je hoeft de snap store toch niet te gebruiken ? MOTD kan je ook veranderen (en is dat nou echt een reden :? ). Dat over VM's snap ik niet helemaal waar je het over hebt. Maar als je de Ubuntu installer zelf bedoeld, ja die is eens veranderd. Snap niet waarom het zo een probleem is als dingen veranderen. Maar dat bloated kan ik me dan wel weer voorstellen.

Ik ben verre van een Ubuntu fanboy en ik snap dat er voor Debian wordt gekozen. Maar ik vind de argumenten wat zwak.
De argumenten zijn ook niet zo heel sterk, maar iets sterker dan we in 't artikel hebben gezet.

Vooropgesteld: Ik ben zelf een Ubuntu-gebruiker sinds 2006; en heb het sindsdien altijd op een of meerdere systemen gebruikt. Tot op de dag van vandaag gebruik ik Ubuntu. Ook nieuwe Linux-gebruikers raad ik graag Ubuntu aan.

Wat we echter zien is dat Ubuntu een richting uitgaat die ons niet echt zint. De snap 'store' is daar een goed voorbeeld van: ik begrijp dat ze het aanbieden want het maakt dependencies zo ontzettend veel makkelijker. Dit komt ook je updates ten goede, dus betere beveiliging. Zeker voor desktop kan dit interessant zijn. Alleen lijkt het er op dat ze de snap store steeds meer willen gaan gebruiken, eerst naast apt, daarna de melding dat je via apt een oudere versie krijgt en nu met bijv. de chromiumpackage is het niet meer mogelijk deze via apt te installeren (want die doet onderhuids een snap installeren). Niet dat je hier op de server direct last van hebt, maar wij willen geen gebruik maken van snap. We voorzien echter wel dat als de focus van Canonical verschuift naar snap, apt steeds minder relevant wordt. En da's wel weer een potentieel een risico.

Een MOTD kun je aanpassen (gelukkig wel!), maar het feit dat de standaard MOTD elke keer metrics stuurt naar Canonical zoals uptime en CPU info doet ons de wenkbrouwen fronsen. Natuurlijk zullen ze dit met de beste bedoelingen doen, en is het uitschakelen (zelfs voor meerdere servers) triviaal; het steekt wel een beetje.

Vwb de vm's: we missen de minimal image. Voor xenial en bionic waren die er nog, maar voor focal niet, dus mag je aan de slag met een image van 2 GiB. Ook de volledig automatische installatie die bij bionoic nog mogelijk was, is bij de upgrade naar focal niet meer. Het zijn dingen waar je een oplossing voor kan vinden (zelf je base-image bouwen bijvoorbeeld), maar dat kost wel weer extra werk.

CloudInit is ook iets waar je met Ubuntu Server nu steeds vaker op 'geattendeerd' worden. Dit zal vast geen slecht product zijn, maar ook daar zitten we niet op de wachten.

Allemaal geen dingen die ons doen besluiten hals-over-kop de servers allemaal te herinstalleren met een andere OS, of om Ubuntu af te kraken, maar heeft ons wel aan 't denken gezet of een andere OS wellicht beter geschikt is voor ons. Zo lijkt debian iig minder 'post-installation' aandacht nodig te hebben (zoals MOTD aanpassen/snap wegwerken), en aangezien Ubuntu op Debian is gebaseerd is de learning curve ook niet al te hoog. We gaan in ieder geval aan de slag met Debian, en zullen daar vast ook tegen dingen aanlopen, maar dan zijn we voorbereid voor het moment dat we weer nieuwe servers installeren.
Dankjewel voor je uitgebreide reactie ! Dit vind ik interessant om te lezen _/-\o_
Alleen lijkt het er op dat ze de snap store steeds meer willen gaan gebruiken, eerst naast apt, daarna de melding dat je via apt een oudere versie krijgt en nu met bijv. de chromiumpackage is het niet meer mogelijk deze via apt te installeren (want die doet onderhuids een snap installeren).
Hmm dit wist ik niet, slechte ontwikkeling als je het aan mij vraagt en eigenlijk ook gewoon heel irritand.
Vwb de vm's: we missen de minimal image.
Aha ik was aan het twijfelen of dit bedoeld werd maar dacht het al. Inderdaad was voor mij in het begin ook erg vervelend. Dat ze die automatische installaties hebben weggehaald wist ik ook niet en ik snap dat dat vervelend is.

In ieder geval snap ik nu de redenering erachter een stuk beter, dank!

Mijn originele comment is een directe reactie op wat er wordt geschreven in het artikel. Waarom dit nou weer een 0 verdiend is mij een raatsel, maar goed.
Ik zou eigenlijk ook wel een filter willen om alleen producten te zien met X aantal shops leverbaar. Zoek bijvoorbeeld naar laptops kun je soms veel verschillende SKUs vinden die amper leverbaar zijn. Ik focus mij dan vooral op producten waar er meer dan 3 winkels zijn omdat dit de gangbare en ook leverbare SKUs zijn.
Precies, ooit in het verleden kon je geloof ik sorteren op het aantal aanbieders van een product. Helaas kan dat al een tijd niet meer.

En dat terwijl het aantal aanbieders een goede indicatie is van hoe gangbaar/populair een product is, hoe goed verkrijgbaar en de kans dat er een scherpere prijs voor wordt gevraagd.
Dat geldt bijvoorbeeld voor de neiging om steeds meer van de snap-store gebruik te maken,
Ook voor server packages?
Ook, hoewel je prima de snap store kan verwijderen *na* installatie.

Het grootste risico is voor ons dat als Canonical besluit meer focus te gaan leggen op de snap store, dat de apt-packages daar misschien onder lijden. De richting die ze uitgaan lijkt dus niet overeen te komen met onze wensen.
Mooi om te zien dat dir is toegevoegd.
super goeie feature die levertijd filter! ben ik erg blij mee!
vooral webshops die goedkoop artikelen prijzen maar niks op voorraad hebben maakt het zoeken naar items soms erg lastig!
Mooie toevoeging :) Dit maakt de pricewatch al een stuk beter bruikbaar.

Maar ik hoop dat dit leidt tot de mogelijkheid om bepaalde winkels uit te sluiten in het productoverzicht. Los van levertijd, als een 'blacklisted' winkel de laagste prijs heeft dan wil ik liever de op-1-na laagste prijs zien in het overzicht :)

Op dit item kan niet meer gereageerd worden.