Ek is seker jy het al van strepe gehoor of 'n toepassing saam met een gebruik. Maar al ooit gewonder hoekom strepe so gewild en kragtig is? Wel, daar is die ooglopende een dat toepassings soveel as moontlik van u aandag wil hê, maar afgesien daarvan, het u geweet dat toe die gewilde leertoepassing Duolingo iOS-legstukke bekendgestel het om strepe te vertoon, gebruikerstoewyding met 60% gestyg het. Sestig persent is 'n massiewe verskuiwing in gedrag en demonstreer hoe "streak"-patrone gebruik kan word om betrokkenheid te verhoog en gebruik te bevorder. Op sy mees basiese is 'n streep die aantal opeenvolgende dae wat 'n gebruiker 'n spesifieke aktiwiteit voltooi. Sommige mense definieer dit ook as 'n "gespeelde" gewoonte of 'n maatstaf wat ontwerp is om konsekwente gebruik aan te moedig. Maar strepe oorskry verder as 'n metriek of 'n rekord in 'n toepassing; dit is meer sielkundig as dit. Menslike instinkte is maklik om te beïnvloed met die regte faktore. Kyk na hierdie drie faktore: vordering, trots en vrees om uit te mis (algemeen genoem FOMO). Wat het al hierdie in gemeen? Poging. Hoe meer moeite jy met iets doen, hoe meer vorm dit jou identiteit, en dit is hoe strepe in die wêreld van gedragsielkunde deurkruis. Nou, met groot krag kom groot verantwoordelikheid, en daarom is daar 'n donker kant aan strepe. In hierdie artikel gaan ons in op die sielkunde-, UX- en ontwerpbeginsels agter die bou van 'n effektiewe streepstelsel. Ons sal kyk na (1) hoekom ons brein amper instinktief reageer op streepaktiwiteit, (2) hoe om strepe te ontwerp op maniere wat gebruikers werklik help, en (3) die tegniese werk betrokke by die bou van 'n streeppatroon. Die sielkunde agter strepe Om 'n effektiewe streepstelsel te ontwerp en te bou, moet ons verstaan hoe dit in lyn is met hoe ons brein bedraad is. Soos, wat maak dit so effektief in die mate dat ons soveel intense toewyding voel om ons strepe te beskerm? Daar is drie interessante, goed gedokumenteerde sielkundebeginsels wat ondersteun wat strepe so kragtig en verslawend maak. Verlies afkeer Dit is waarskynlik die sterkste krag agter strepe. Ek sê dit omdat jy dit meestal in die lewe amper nie kan vermy nie. Dink so daaraan: As 'n vriend jou $100 gee, sal jy gelukkig wees. Maar as jy $100 uit jou beursie verloor het, sal dit baie meer seermaak. Die emosionele gewig van daardie situasies is nie gelyk nie. Verlies maak veel meer seer as wat wins goed voel. Kom ons neem dit verder en sê dat ek jou $100 gee en jou vra om 'n dobbelspel te speel. Daar is 'n 50% kans dat jy nog $100 wen en 'n 50% kans dat jy die oorspronklike $100 verloor. Sal jy dit neem? Ek sou nie. Die meeste mense sou nie. Dit is verlies afkeer. As jy daaroor dink, is dit logies, dit is verstaanbaar, dit is menslik. Die konsep agter verliesafkeer is dat ons die pyn voel om iets twee keer soveel te verloor as die plesier om iets van gelyke waarde te kry. In sielkundige terme bly verlies meer as winste. Jy sien waarskynlik hoe dit met strepe verband hou. Om ’n merkbare streep te bou, verg dit inspanning; soos 'n streep groei, begin die motivering daaragter vervaag; of meer akkuraat, dit begin sekondêr word. Hier is 'n voorbeeld: Sê jou vriend het 'n streep van drie dae wat hul "Move Rings" op hul Apple Watch sluit. Hulle het amper niks om te verloor as om hul doel te bereik en konsekwent te wees nie. Terselfdertyd het jy 'n indrukwekkende reeks van 219 dae aan die gang. Die kans is goed dat jy vasgevang is deur die vrees om dit te verloor. Jy dink heel waarskynlik nie op hierdie stadium aan die prestasie nie; dit gaan meer daaroor om jou belêde poging te beskerm, en dit is verliesafkeer. Duolingo verduidelik hoe verliesaversie bydra tot 'n gebruiker se onwilligheid om 'n lang streep te breek, selfs op hul luiste dae. Op 'n manier kan 'n streep in 'n gewoonte verander wanneer verliesaversie intree. Die Fogg-gedragsmodel (B = MAP) Noudat ons die vrees verstaan om die moeite wat in langer strepe belê is, te verloor, is 'n ander vraag: Wat laat ons in die eerste plek die ding doen, dag na dag, nog voordat die reeks groot word? Dit is waaroor die Fogg-gedragsmodel gaan. Dit is relatief eenvoudig. 'n Gedrag (B) vind slegs plaas wanneer drie faktore - Motivering (M), Vermoë (A) en Aansporing (P) - op dieselfde oomblik ooreenstem. Dus, die vergelyking B=MAP. As enige van hierdie faktore, selfs een, op daardie oomblik ontbreek, sal die gedrag nie gebeur nie. Dus, vir 'n streepstelsel om doeltreffend en herhalend te wees, moet al drie faktore teenwoordig wees: Motivering Dit is broos en nie iets wat konsekwent teenwoordig is nie. Daar is dae wanneer jy isgepomp om Spaans te leer, en dae wat jy nie eers 'n jota wilskrag voel om die taal te leer nie. Motivering op sigself om 'n gewoonte te bou is onbetroubaar en 'n verlore stryd van dag een af. Vermoë Om te kompenseer vir die beperkings van motivering, is vermoë van kritieke belang. In hierdie konteks beteken vermoë die gemak van aksie, dit wil sê die poging is so maklik dat dit onrealisties is om te sê dit is nie moontlik nie. Die meeste toepassings gebruik dit doelbewus. Apple Fitness het net nodig dat jy vir een minuut in 'n uur staan ​​om 'n regmerkie vir jou Stand-doelwit te verdien. Duolingo benodig slegs een voltooide les. Hierdie take verg nie soveel moeite nie. Die versperring is so laag dat jy dit selfs op jou slegste dae kan doen. Maar die gesamentlike poging van 'n voortgesette reeks is waar die idee om daardie reeks te verloor inskop. PromptDit is wat die vergelyking voltooi. Mense is van nature vergeetagtig, so ja, vermoë kan ons 90% daar kry. Maar 'n opdrag herinner ons om op te tree. Strepe is aanhoudend deur ontwerp, so gebruikers moet voortdurend daaraan herinner word om op te tree. Om te sien hoe kragtig 'n aansporing kan wees, het Duolingo 'n A/B-toets gedoen om te sien of 'n klein rooi kenteken op die toepassing se ikoon konsekwente gebruik verhoog het. Dit het 'n toename van 6% in daaglikse aktiewe gebruikers opgelewer. Net 'n rooi kenteken. Modelbeperkings As dit alles gesê word, is daar 'n beperking op die Fogg-model waarvolgens kritici en moderne navorsing opgemerk het dat 'n ontwerp wat te sterk op opdragte staatmaak, soos aggressiewe kennisgewings, die risiko loop om geestelike moegheid te skep. Konstante kennisgewings en oortyd kan veroorsaak dat gebruikers terugtrek. So, pasop daarvoor. Die Zeigarnik-effek Hoe voel jy wanneer jy 'n taak van projek halfklaar laat? Dit irriteer baie mense omdat onvoltooide take meer geestelike ruimte in beslag neem as die dinge wat ons voltooi. Wanneer iets klaar is en weg is, is ons geneig om dit te vergeet. Wanneer iets ongedaan gelaat word, is dit geneig om op ons gedagtes te weeg. Dit is presies hoekom digitale produkte kunsmatige vorderingsaanwysers gebruik, soos Upwork se profielvoltooibalk, om 'n gebruiker te laat weet dat hul profiel slegs "60% voltooi" is. Dit stoot die gebruiker om klaar te maak wat hulle begin het.

Kom ons kyk na 'n ander voorbeeld. Jy het vyf take in 'n doenlys-toepassing, en aan die einde van die dag gaan jy net vier van hulle na as voltooi. Baie van ons sal onvoltooid voel as gevolg van daardie een onvoltooide taak. Dit, net daar, is die Zeigarnik-effek. Die Zeigarnik-effek is gedemonstreer deur sielkundige Bluma Zeigarnik, wat beskryf het dat ons geneig is om onvoltooide take langer in ons geheue aktief te hou as voltooide take. 'n Streeppatroon sluit natuurlik hierby aan in UX-ontwerp. Kom ons sê jy is op dag 63 van 'n leerreeks. Op daardie stadium is jy in 'n deurlopende patroon van onafgehandelde sake. Jou brein sal selde daarvan vergeet aangesien dit in jou agterkop sit. Op hierdie stadium word jou brein die een wat vir jou kennisgewings stuur. Wanneer jy hierdie sielkundige kragte saamvoeg, begin jy werklik verstaan ​​hoekom strepe nie net 'n gereelde toepassingskenmerk is nie; hulle is in staat om menslike gedrag te hervorm. Maar iewers langs die lyn - ek kan nie presies sê wanneer nie, aangesien dit vir almal verskil - bereik dinge 'n punt waar 'n streep verskuif van "pret" na iets wat jy voel jy nie kan bekostig om te verloor nie. Jy wil nie hê dat 58 dae se moeite tot niet gaan nie, doen jy? Dit is wat 'n streepstelsel doeltreffend maak. As dit reg gedoen word, help strepe gebruikers om verstommende gewoontes te bou wat 'n doelwit bereik. Dit kan wees om daagliks te lees of konsekwent na die gimnasium te gaan. Hierdie herhaalde aksies (soms klein) vererger met verloop van tyd en word duidelik in ons daaglikse lewens. Maar daar is twee kante aan elke muntstuk. Die dun lyn tussen gewoonte en dwang As jy saamgevolg het, kan jy reeds sien dat daar 'n donker kant aan streepstelsels is. Gewoontevorming gaan oor konsekwentheid met 'n herhaalde doelwit. Dwang is egter die konsekwentheid om aan 'n doel te werk wat nie meer nodig is nie, maar vasgehou word uit vrees of druk. Dit is 'n vlym-dun lyn. Jy borsel elke oggend jou tande sonder om te dink; dit is outomaties en instinktief, met 'n duidelike doel om goeie asem te hê. Dit is 'n streep wat 'n goeie gewoonte vorm. ’n Etiese streepstelsel gee gebruikers ruimte om asem te haal. As jy om een ​​of ander rede nie soggens borsel nie, kan jy teen die middag borsel. Onvolmaaktheid word toegelaat sonder vrees om 'n lang poging te verloor. Dwang neem die teenoorgestelde roete, waardeur 'n streep jou angstig maak, jy skuldig of selfs uitgeput voel, en soms voel dit of jy niks bereik het nie, ten spyte van al jouwerk. Jy tree nie op omdat jy wil nie, maar omdat jy onbewustelik bang is om te sien hoe jou vordering na nul teruggestel word. Iemand het dit selfs perfek beskryf: "Ek het gevoel dat ek bedrieg, maar het eenvoudig nie omgegee nie. Ek is niks sonder my streep nie". Dit wys die uiterste houstrepe wat 'n individu kan hê. In die mate dat gebruikers hul eiewaarde begin koppel aan 'n arbitrêre maatstaf eerder as die oorspronklike doelwit of rede waarom hulle die streep in die eerste plek begin het. Die streep word wie hulle is, nie net wat hulle doen nie. 'n Goed ontwerpte etiese streepstelsel moet vir die gebruiker soos aanmoediging voel, nie druk of verpligting nie. Dit hou verband met die balans van intrinsieke en ekstrinsieke motivering. Ekstrinsieke motivering (eksterne belonings, vermyding van straf) kan gebruikers aan die gang kry, maar intrinsieke motivering (om die taak vir 'n persoonlike doel te doen soos om Spaans te leer omdat jy werklik met 'n geliefde wil kommunikeer) is sterker vir langtermynbetrokkenheid. 'n Goeie stelsel behoort na intrinsieke motivering te beweeg met versigtige gebruik van ekstrinsieke elemente, dit wil sê gebruikers herinner aan hoe ver hulle gekom het, nie dreig met wat hulle kan verloor nie. Weereens, dit is 'n fyn lyn. 'n Eenvoudige toets wanneer jy 'n streepstelsel ontwerp, is om eintlik tyd te neem en te dink of jou produkte geld verdien deur oplossings te verkoop vir angs wat jou produk geskep het. Indien wel, is daar 'n groot kans dat u gebruikers uitbuit. Die volgende vraag word dus: As ek kies om streak te gebruik, hoe ontwerp ek dit op 'n manier wat gebruikers werklik help om hul doelwitte te bereik? Die UX van Good Streak System Design Ek glo dit is waar die meeste projekte óf 'n doeltreffende streepstelsel spyker óf dit heeltemal deurmekaar maak. Kom ons gaan deur 'n paar UX-beginsels van 'n goeie streepontwerp. Hou dit moeiteloos Jy het dit waarskynlik al gehoor, miskien uit boeke soos Atomic Habits, maar dit is die moeite werd om te noem dat een van die maklikste maniere waarop gewoontes gevorm kan word, is deur die aksie klein en maklik te maak. Dit is soortgelyk aan die vermoënsfaktor wat ons uit die Fogg-gedragsmodel bespreek het. Die eerste reël van enige streepontwerp moet wees om die vereiste aksie so klein as menslik moontlik te maak terwyl daar steeds vordering gemaak word. As 'n daaglikse aksie wilskrag vereis om te voltooi, sal daardie aksie dit nie verby vyf dae haal nie. Hoekom? Jy kan nie vyf dae in 'n ry gemotiveer word nie. Geval in punt: As jy 'n meditasie-toepassing bestuur, hoef jy nie gebruikers deur 'n sessie van 20 minute te laat gaan net om die streep te handhaaf nie. Probeer eerder 'n enkele minuut, miskien selfs iets so klein soos dertig sekondes. Soos die spreekwoord sê, klein druppels water maak die magtige oseaan). Klein pogings vorm mettertyd groot prestasies. Dit behoort die doel te wees: verwyder wrywing, veral wanneer die oomblik moeilik kan wees. Wanneer gebruikers gestres of oorweldig is, laat hulle weet dat om bloot op te daag, selfs vir 'n paar sekondes, as moeite tel. Verskaf duidelike visuele terugvoer Mense is van nature visueel. Meestal moet ons iets sien om te glo; daar is hierdie behoefte om dinge te visualiseer om dit beter te verstaan ​​en dinge in perspektief te plaas. Dit is hoekom streeppatrone dikwels visuele elemente gebruik, soos grafieke, regmerkies, vorderingsringe en roosters, om moeite te visualiseer. Kyk na GitHub se bydraegrafiek. Dit is 'n eenvoudige visualisering van konsekwentheid. Tog asem ontwikkelaars dit soos suurstof in.

Die sleutel is om nie 'n streepstelsel abstrak te laat voel nie. Dit moet eg en verdien voel. Byvoorbeeld, Duolingo en Apple se Fitness-aktiwiteitsringe gebruik skoon animasie-ontwerpe na voltooiing van 'n streep, en GitHub toon historiese data van 'n gebruiker se konsekwentheid oor tyd.

Gebruik goeie tydsberekening Ek het vroeër genoem dat mense oor die algemeen vergeetagtig van nature is, en dat aansporings kan help om vorentoe momentum te behou. Sonder opdragte vergeet die meeste nuwe gebruikers om voort te gaan. Die lewe kan besig raak, motivering verdwyn en dinge gebeur. Selfs langdurige gebruikers baat by opdragte, hoewel hulle die meeste kere reeds binne die gewoonte-lus gesluit is. Nietemin kan selfs die mees toegewyde persoon per ongeluk 'n dag mis. Jou streepstelsel het beslis aanmanings nodig. Die vinnigste herinnerings wat die meeste gebruik word, is stootkennisgewings. Tydsberekening maak regtig saak wanneer jy met stootkennisgewings werk. Die tipe toepassing maak ook saak. Om 'n kennisgewing om 09:00 te stuur wat sê "Jy het nie vandag geoefen nie" is net vreemd vir 'n leertoepassing, want baie het dinge om te doen in die dag voordat hulle eers daaraan dink om 'n les te voltooi. As ons egter van 'n fiksheidstoepassing praat, is ditis redelik en dalk selfs verwag om vroeër die dag herinner te word. Stootkennisgewings verskil aansienlik volgens programkategorie. Fiksheidsprogramme sien byvoorbeeld groter betrokkenheid by vroeë oggendkennisgewings (07:00–08:00), terwyl produktiwiteitsprogramme vroegmiddag beter kan presteer. Die sleutel is om jou program se tydsberekening A/B te toets op grond van jou gebruikers se gedrag eerder as om te aanvaar dat dinge een-grootte-pas-almal is. Wat vir 'n meditasie-toepassing werk, werk dalk nie vir 'n koderingsspoorsnyer nie. Ander vinnige metodes is rooi kolletjies op die toepassingsikoon en selfs toepassingslegstukke. Studies verskil, maar die gemiddelde persoon ontsluit hul toestel tussen 50-150 keer per dag (PDF). As 'n gebruiker 'n rooi kol op 'n toepassing of 'n legstuk sien wat 'n huidige streep aandui elke keer as hulle hul foon ontsluit, verhoog dit toewyding. Moet dit net nie oordoen nie; die aansporing moet dien as 'n herinnering, nie 'n nag nie. Vier mylpale 'n Streepstelsel moet probeer om mylpale te vier om emosies weer aan te wakker, veral vir gebruikers wat diep in 'n streep is. Wanneer 'n gebruiker Dag 7, Dag 30, Dag 50, Dag 100, Dag 365 tref, moet jy 'n groot saak daaruit maak. Erken prestasies - veral vir jarelange gebruikers.

Soos ons vroeër gesien het, het Duolingo dit uitgepluis en 'n geanimeerde grafika geïmplementeer wat mylpale met konfetti vier. Sommige platforms gee selfs aansienlike bonusbelonings wat gebruikers se pogings bevestig. En dit kan voordelig wees vir toepassings, sodat gebruikers geneig is om hul mylpale in die openbaar op sosiale media te deel. Nog 'n voordeel is die afwagting wat kom voordat mylpale bereik word. Dit is nie net om die streep eindeloos aan die lewe te hou nie; gebruikers het iets om na uit te sien. Gebruik genademeganismes Die lewe is onvoorspelbaar. Mense word afgelei. Enige goeie streepstelsel moet onvolmaaktheid verwag. Een van die grootste sielkundige bedreigings vir 'n streepstelsel is die harde herstel na nul na net 'n enkele dag wat gemiste is. 'n "Etiese" streepstelsel behoort die gebruiker 'n mate van slapheid te gee. Kom ons sê jy het 'n 90-dae skaak leerreeks. Jy is al drie goeie maande lank konsekwent, en eendag gaan jou foon dood terwyl jy reis, en net so word 90 0 - alles, al daardie moeite, word uitgewis, en vordering verdwyn. Die gebruiker kan heeltemal verpletter wees. Die gedagte om dit van nuuts af te herbou, is so demoraliserende dat die moeite nie die moeite werd is nie. In die ergste geval kan 'n gebruiker die toepassing laat vaar nadat hy soos 'n mislukking gevoel het. Oorweeg dit om 'n "genade"-meganisme by jou streepstelsel by te voeg:

Streak Freeze Laat gebruikers toe om doelbewus 'n dag te mis sonder boetes. Ekstra tyd Laat 'n paar uur (2–3) verby die gewone sperdatum toe voordat 'n terugstelling geaktiveer word. VervalmodelleIn plaas van 'n harde terugstelling, verminder die streep met 'n klein hoeveelheid, bv. 10 dae word van die streep per gemiste dag afgetrek.

Gebruik 'n bemoedigende toon Kom ons vergelyk twee boodskappe wat aan gebruikers gewys word wanneer 'n streep breek:

"Jy het jou 42-dae-reeks verloor. Begin oor." "Jy het vir 42 dae aaneen opgedaag. Dis ongelooflike vordering! Wil jy dit weer probeer?"

Albei dra dieselfde inligting oor, maar die emosionele impak is anders. Die eerste boodskap sal heel waarskynlik 'n gebruiker gedemoraliseer laat voel en veroorsaak dat hulle ophou. Die tweede boodskap vier wat reeds bereik is en moedig die gebruiker sagkens aan om weer te probeer. Streak Systems Ontwerp Uitdagings Voordat ons ingaan op die tegniese besonderhede van die bou van 'n streepstelsel, moet u bewus wees van die uitdagings wat u in die gesig staar. Dinge kan ingewikkeld raak, soos jy kan verwag. Hanteer tydsones Daar is 'n rede waarom die hantering van tyd en datum een van die moeilikste konsepte is waarmee ontwikkelaars te doen kry. Daar is formatering, internasionalisering en nog baie meer om te oorweeg. Laat ek jou die volgende vra: Wat tel as 'n dag? Ons weet die wêreld loop op verskillende tydsones, en asof dit nie genoeg is nie, het sommige streke Daylight Saving Time (DST) wat twee keer per jaar plaasvind. Waar begin jy selfs hierdie randsake hanteer? Wat tel as die "begin" van môre? Sommige ontwikkelaars probeer dit vermy deur een sentrale tydsone te gebruik, soos UTC. Vir sommige gebruikers sal dit korrekte resultate lewer, maar vir sommige kan dit met 'n uur, twee uur of meer af wees. Hierdie inkonsekwentheid verwoes die gebruikerservaring. Gebruikers gee minder om hoe jy die tyd agter die skerms hanteer; al wat hulle verwag, is dat as hulle 'n streep-aksie om 23:40 uitvoer, dit op daardie presiese tyd, in hul konteks, moet registreer. U moet "een dag" definieer op grond van die gebruiker se plaaslike tydsone, nie die bedienertyd nie. Natuurlik, jy kan rustig vatroete en herstel strepe wêreldwyd vir alle gebruikers om middernag UTC, maar jy skep baie onregverdigheid. Iemand in Kalifornië het altyd agt ekstra ure om hul taak te voltooi as iemand wat in Londen woon. Dit is 'n onregverdige ontwerpfout wat sekere gebruikers straf weens hul ligging. En wat as daardie persoon in Londen net op besoek is, 'n taak voltooi en dan terugkeer na 'n ander tydsone? Een effektiewe oplossing vir al hierdie is om gebruikers te vra om hul tydsone eksplisiet in te stel tydens aanboord (verkieslik na eerste verifikasie). Dit is 'n goeie idee om 'n subtiele nota in te sluit dat die verskaffing van tydsone-inligting slegs gebruik word vir die toepassing om vordering akkuraat na te spoor, eerder as om as persoonlik identifiseerbare data gebruik te word. En dit is nog 'n goeie idee om dit 'n veranderlike omgewing te maak. Ek stel voor dat enigiemand vermy om tydsone-logika direk in 'n toepassing te hanteer. Gebruik beproefde datumbiblioteke, soos Moment.js of pytz (Python), ens. Dit is nie nodig om die wiel weer uit te vind vir iets so kompleks soos hierdie nie. Gemis dae en randgevalle Nog 'n uitdaging waaroor u u moet bekommer, is onbeheerbare randgevalle soos gebruikers wat oorslaap, bedienerstilstand, vertraging, netwerkfoute, ensovoorts. Die gebruik van die idee van genademeganismes, soos dié wat ons vroeër bespreek het, kan help. 'n Grasieperiode van twee uur kan beide gebruiker en ontwikkelaar help, in die sin dat gebruikers nie streng gestraf word vir onbeheerbare lewensomstandighede nie. Vir ontwikkelaars is genadevensters nuttig in daardie onbeheerbare oomblikke wanneer die bediener in die middel van die nag afgaan. Vertrou bowenal nooit die kliënt nie. Bevestig altyd aan die bedienerkant. Die bediener moet die enkele bron van waarheid wees. Bedrogvoorkoming Weereens, ek kan dit nie genoeg beklemtoon nie: Maak seker dat u alles aan die bedienerkant bevestig. Gebruikers is mense, en mense kan bedrieg as hulle die geleentheid kry. Dit is onvermydelik. Jy kan dalk probeer:

Berging van alle aksies met UTC-tydstempels. Die kliënt kan hul plaaslike tyd stuur, maar die bediener kan dit onmiddellik na UTC omskakel en teen die bedienertyd valideer. Op dié manier, as die kliënt se tydstempel verdag is, kan die stelsel dit as 'n fout verwerp, en die UI kan dienooreenkomstig reageer. Gebruik gebeurtenisgebaseerde nasporing. Met ander woorde, stoor 'n rekord van elke aksie met metadata insluitend inligting soos die gebruiker se ID, die tipe aksie wat uitgevoer is, en die tydstempel en tydsone. Dit help met validering.

Bou 'n Streak System Engine Dit is nie 'n kode-tutoriaal nie, so ek sal vermy om 'n klomp kode op jou te stort. Ek sal dit prakties hou en beskryf hoe dinge oor die algemeen 'n streepstelsel-enjin bedryf wat argitektuur, vloei en betroubaarheid betref. Kern argitektuur Soos ek verskeie kere gesê het, maak die bediener die enkele bron van waarheid vir streepdata. Die argitektuur kan so iets op die bediener verloop:

Stoor elke gebruiker se data in 'n databasis. Stoor die huidige streepstoor (verstek as 0) as 'n heelgetal. Stoor die tydsonevoorkeur, dit wil sê IANA Tydsonestring (óf implisiet vanaf plaaslike tydstempel óf eksplisiet deur gebruiker te vra om hul tydsone te kies). Byvoorbeeld, "America/New_York". Hanteer alle logika om te bepaal of die streep voortduur of breek, met 'n tydsonekontrole wat relatief tot die gebruiker se plaaslike tydsone is.

Intussen, aan die kliënt-kant:

Vertoon die huidige streep, gewoonlik van die bediener af gehaal. Stuur handeling gedoen in die vorm van metadata na die bediener om te bevestig of die gebruiker werklik 'n kwalifiserende streep-aksie voltooi het. Gee visuele terugvoer gebaseer op die bedienerantwoorde.

Dus, in kort, die brein is op die bediener, en die kliënt is vir vertoondoeleindes en die indiening van gebeure. Dit spaar jou baie foute en randgevalle, en maak opdaterings en regstellings makliker. Die logiese vloei Kom ons simuleer 'n deurbraak van hoe 'n minimale doeltreffende streepstelsel-enjin sal verloop wanneer 'n gebruiker 'n aksie voltooi:

Die gebruiker voltooi 'n kwalifiserende streepaksie. Die kliënt stuur 'n gebeurtenis na die bediener as metadata. Dit kan wees "Gebruiker X het aksie Y by tydstempel Z voltooi". Die bediener ontvang hierdie gebeurtenis en doen basiese validering. Is dit 'n regte gebruiker? Is hulle geverifieer? Is die aksie geldig? Is die tydsone konsekwent? As dit slaag, haal die bediener die gebruiker se streepdata van die databasis af. Skakel dan die ontvangde aksie-tydstempel om na die gebruiker se plaaslike tydsone. Laat die bediener die kalenderdatums (nie tydstempels nie) in die gebruiker se plaaslike tydsone vergelyk: As dit dieselfde dag is, dan is die aksie oorbodig en daar is geen verandering in diestreep. As dit die volgende dag is, verleng die streep en verhoog dit met 1. As daar 'n gaping van meer as een dag is, breek die streep. Dit is egter waar jy genade-meganika kan toepas. As die grasiemeganisme gemis word, stel dan die streep terug na 1.

As jy kies om historiese data vir mylpaalprestasies te stoor, werk dan veranderlikes op soos "langste streep" of "totale aktiewe dae". Die bediener werk dan die databasis op en reageer op die kliënt. Iets soos hierdie:

{ "huidige_streep": 48, "langste_streep": 50, "totale_aktiewe_dae": 120, "streak_extended": waar, }

As 'n verdere maatreël moet die bediener óf herprobeer óf verwerp en die kliënt in kennis stel wanneer enigiets tydens die proses misluk. Gebou Vir Veerkragtigheid Soos voorheen genoem, is gebruikers wat 'n streep verloor as gevolg van foute of bedienerstilstand verskriklike UX, en gebruikers verwag nie om die val daarvoor te vat nie. Jou streepstelsel behoort dus beskermingsmaatreëls vir daardie scenario's te hê. As die bediener af is vir instandhouding (of watter rede ook al), oorweeg dit om 'n tydelike venster van bykomende ure toe te laat om dit reg te stel sodat aksies laat ingedien kan word en steeds tel. U kan ook kies om gebruikers in kennis te stel, veral as die situasie 'n deurlopende streep kan beïnvloed. Let wel: Vestig 'n admin-agterdeur waar data met die hand herstel kan word. Foute is onvermydelik, en sommige gebruikers sal jou program uitroep of uitreik om te ondersteun dat hul streep gebreek het vir 'n rede wat hulle nie kon beheer nie. Jy behoort die strepe handmatig te kan herstel as die gebruiker na ondersoek reg is. Gevolgtrekking Een ding bly duidelik: strepe is regtig kragtig as gevolg van hoe menslike sielkunde op 'n fundamentele vlak werk. Die beste streepstelsel daar buite is die een waaraan gebruikers nie bewustelik dink nie. Dit het 'n roetine geword van onmiddellike resultate of sigbare vordering, soos tandeborsel, wat 'n gereelde gewoonte word. En ek gaan dit net sê: Nie alle produkte het 'n streepstelsel nodig nie. Moet jy regtig konsekwentheid dwing net omdat jy daagliks aktiewe gebruikers wil hê? Die antwoord kan heel moontlik "nee" wees.

You May Also Like

Enjoyed This Article?

Get weekly tips on growing your audience and monetizing your content — straight to your inbox.

No spam. Join 138,000+ creators. Unsubscribe anytime.

Create Your Free Bio Page

Join 138,000+ creators on Seemless.

Get Started Free