Biztosan hallottál már a csíkokról, vagy használtál egy alkalmazást. De elgondolkozott már azon, hogy miért olyan népszerűek és erőteljesek a csíkok? Nos, van egy nyilvánvaló, hogy az alkalmazások a lehető legtöbb figyelmet szeretnék elérni, de ezen kívül tudtad, hogy amikor a népszerű Duolingo tanulóalkalmazás iOS-modulokat mutatott be a csíkok megjelenítésére, a felhasználók elkötelezettsége 60%-kal nőtt. A 60 százalék hatalmas változást jelent a viselkedésben, és bemutatja, hogyan használhatók fel a „csík” minták az elkötelezettség és a használat növelésére. Alapvetően a sorozat azon egymást követő napok száma, ameddig a felhasználó végrehajt egy adott tevékenységet. Vannak, akik „játékos” szokásként vagy mérőszámként határozzák meg, amely a következetes használat ösztönzésére szolgál. A csíkok azonban túlmutatnak azon, hogy mérőszámok vagy rekordok egy alkalmazásban; ez inkább pszichológiai jellegű. Az emberi ösztönök megfelelő tényezőkkel könnyen befolyásolhatók. Nézze meg ezt a három tényezőt: a haladás, a büszkeség és a kihagyástól való félelem (általános nevén FOMO). Mi a közös ezekben? Erőfeszítés. Minél több erőfeszítést tesz valamiért, az annál jobban formálja az identitásodat, és így vonulnak át a csíkok a viselkedéspszichológia világába. Most a nagy hatalommal nagy felelősség jár, és emiatt a sorozatoknak van egy árny oldala is. Ebben a cikkben a pszichológiát, a felhasználói élményt és a tervezési elveket fogjuk megismerni egy hatékony sorozatrendszer felépítése mögött. Megvizsgáljuk (1) azt, hogy agyunk miért reagál szinte ösztönösen a csíktevékenységre, (2) hogyan tervezzünk csíkokat úgy, hogy azok valóban segítsék a felhasználókat, és (3) a sorozatmintázat kialakításához szükséges technikai munka. A pszichológia a csíkok mögött Egy hatékony sorozatrendszer megtervezéséhez és felépítéséhez meg kell értenünk, hogyan illeszkedik az agyunk bekötéséhez. Például, mitől olyan hatékony, hogy olyan intenzív elkötelezettséget érzünk a sorozataink védelmében? Három érdekes, jól dokumentált pszichológiai alapelv van, amelyek alátámasztják, hogy mi teszi a csíkokat olyan erőssé és addiktívvá. Veszteségkerülés Valószínűleg ez a legerősebb erő a sorozatok mögött. Azért mondom ezt, mert a legtöbbször ezt szinte nem tudod elkerülni az életben. Gondolj erre a következőképpen: Ha egy barátod 100 dollárt ad neked, boldog lennél. De ha elveszítene 100 dollárt a pénztárcájából, az sokkal jobban fájna. Az ilyen helyzetek érzelmi súlya nem egyenlő. A veszteség jobban fáj, mint a nyereség jó érzés. Lépjünk tovább, és mondjuk, hogy adok neked 100 dollárt, és megkérlek, hogy játssz egy szerencsejátékot. 50% esély van arra, hogy újabb 100 dollárt nyerjen, és 50% az esélye, hogy elveszíti az eredeti 100 dollárt. Elvinnéd? nem tenném. A legtöbb ember nem tenné. Ez a veszteségkerülés. Ha belegondolunk, ez logikus, érthető, emberi. A veszteségkerülés mögött meghúzódó koncepció az, hogy kétszer annyira érezzük a fájdalmat, ha elveszítünk valamit, mint annak az örömét, hogy egy ugyanolyan értékű dolgot szerezzünk meg. Pszichológiai szempontból a veszteség jobban elhúzódik, mint a nyereség. Valószínűleg látja, hogy ez hogyan kapcsolódik a csíkokhoz. Egy észrevehető sorozat kialakítása erőfeszítést igényel; ahogy egy sorozat nő, a mögötte lévő motiváció halványulni kezd; vagy pontosabban kezd másodlagossá válni. Íme egy példa: Tegyük fel, hogy barátjának háromnapos sorozata zárja le a „Move Rings”-t az Apple Watchon. Szinte nincs vesztenivalójuk azon kívül, hogy el akarják érni céljukat és következetesek akarnak lenni. Ugyanakkor lenyűgöző, 219 napos sorozata van. Valószínű, hogy csapdába esett az elvesztésétől való félelem. Valószínűleg most nem az eredményre gondol; ez inkább a befektetett erőfeszítések védelméről szól, ez pedig a veszteségkerülés. A Duolingo elmagyarázza, hogy a veszteségkerülés hogyan járul hozzá ahhoz, hogy a felhasználó még a leglustább napjaikon is vonakodjon megszakítani egy hosszú sorozatot. Bizonyos értelemben egy sorozat szokássá válhat, amikor a veszteségkerülő érzés meghonosodik. A Fogg-viselkedési modell (B = MAP) Most, hogy megértjük a félelmet attól, hogy elveszítjük a hosszabb sorozatokba fektetett erőfeszítéseket, egy másik kérdés: mi késztet minket arra, hogy ezt tegyük nap mint nap, még mielőtt a sorozat nagyra nőne? Erről szól a Fogg-viselkedési modell. Viszonylag egyszerű. A viselkedés (B) csak akkor következik be, ha három tényező – a motiváció (M), a képesség (A) és a felszólítás (P) – ugyanabban a pillanatban illeszkedik egymáshoz. Így a B=MAP egyenlet. Ha ezen tényezők közül bármelyik – akár egy is – hiányzik abban a pillanatban, a viselkedés nem fog megtörténni. Tehát ahhoz, hogy egy sorozatrendszer hatékony és ismétlődő legyen, mindhárom tényezőnek jelen kell lennie: Motiváció Ez törékeny, és nem állandóan jelen van. Vannak napok, amikor az vagyspanyolul tanulni akar, és napok óta egy csöpp akaraterőt sem érez a nyelv megtanulásához. A szokás kialakítására irányuló motiváció önmagában megbízhatatlan, és az első naptól kezdve vesztes csata. Képesség A motiváció korlátainak kompenzálásához a képesség kritikus. Ebben az összefüggésben a képesség a cselekvés könnyedségét jelenti, vagyis az erőfeszítés olyan könnyű, hogy irreális azt állítani, hogy nem lehetséges. A legtöbb alkalmazás szándékosan használja ezt. Az Apple Fitnessnek mindössze egy percet kell állnia egy órán belül, hogy egy pipát érjen el Stand-célja felé. A Duolingo-nak csak egy befejezett leckére van szüksége. Ezek a feladatok nem igényelnek túl sok erőfeszítést. Az akadály annyira alacsony, hogy még a legrosszabb napjain is megteheti. De a folyamatos sorozat összesített erőfeszítése az, ahol beindul a sorozat elvesztésének gondolata. PromptEz teszi teljessé az egyenletet. Az emberek természetüknél fogva feledékenyek, így igen, a képességek 90%-ban eljuttatnak bennünket. De egy felszólítás arra emlékeztet bennünket, hogy cselekedjünk. A csíkok tervezésüknél fogva tartósak, ezért a felhasználókat folyamatosan emlékeztetni kell a cselekvésre. Hogy megtudja, milyen erős lehet egy felszólítás, a Duolingo A/B tesztet végzett, hogy megnézze, az alkalmazás ikonján lévő kis piros jelvény növeli-e a konzisztens használatot. 6%-os növekedést produkált a napi aktív felhasználók számában. Csak egy piros jelvény. A modell korlátozásai Mindezek ellenére a Fogg-modellnek van egy korlátja, amely szerint a kritikusok és a modern kutatások észrevették, hogy az olyan tervezés, amely túlságosan támaszkodik a felszólításokra, például az agresszív értesítésekre, mentális kimerültséget okozhat. Az állandó értesítések és a túlórák a felhasználók leállását okozhatják. Szóval vigyázz erre. A Zeigarnik-effektus Mit érzel, amikor félig készen hagysz egy projekt feladatot? Ez sok embert irritál, mert a befejezetlen feladatok több mentális helyet foglalnak el, mint az általunk elvégzett dolgok. Amikor valami elkészül és elmúlik, hajlamosak vagyunk elfelejteni. Ha valamit nem csinálunk meg, az hajlamos az elménkre nehezedni. Pontosan ezért használnak a digitális termékek mesterséges előrehaladásjelzőket, például az Upwork profilkitöltési sávját, hogy tudatják a felhasználóval, hogy profiljuk csak „60%-ban kész”. Arra ösztönzi a felhasználót, hogy fejezze be, amit elkezdett.
Nézzünk egy másik példát. Öt feladatod van egy teendőlista-alkalmazásban, és a nap végén csak négyet jelöl meg belőlük befejezettként. Sokan közülünk úgy érezzük majd, hogy nem végeztek el ezért az egyetlen befejezetlen feladatért. Ez a Zeigarnik-effektus. A Zeigarnik-effektust Bluma Zeigarnik pszichológus mutatta be, aki leírta, hogy hajlamosak vagyunk a befejezetlen feladatokat tovább aktívan emlékezetünkben tartani, mint a befejezett feladatokat. A csíkos mintázat természetesen ehhez kapcsolódik az UX-dizájnban. Tegyük fel, hogy egy tanulási sorozat 63. napján jársz. Ezen a ponton egy folyamatban lévő befejezetlen ügyben vagy. Az agyad ritkán feledkezik meg róla, mivel az elméd hátsó részében ül. Ezen a ponton az agyad lesz az, amely értesítéseket küld neked. Ha ezeket a pszichológiai erőket egyesítjük, akkor kezdjük igazán megérteni, hogy a csíkok miért nem csupán az alkalmazás szokásos jellemzői; képesek átformálni az emberi viselkedést. De valahol a vonal mentén – nem tudom pontosan megmondani, hogy mikor, mivel ez mindenkinél eltérő – a dolgok elérnek egy olyan pontot, ahol a sorozat „szórakoztatásból” valami olyasmire változik, amelyről úgy érzi, hogy nem engedheti meg magának, hogy elveszítsen. Ugye nem akarod, hogy 58 napos erőfeszítés kárba menjen? Ez az, ami hatékonysá teszi a sorozatrendszert. Ha jól csinálják, a csíkok segítenek a felhasználóknak elképesztő szokások kialakításában, amelyek elérik a célt. Ez lehet napi olvasás vagy következetes edzőterem. Ezek az ismétlődő (néha kicsi) cselekvések idővel összetettek és nyilvánvalóvá válnak mindennapi életünkben. De minden éremnek két oldala van. Vékony határ a megszokás és a kényszer között Ha követed, máris láthatod, hogy a sorozatos rendszereknek van egy sötét oldala is. A szokás kialakítása az ismétlődő céllal való összhangról szól. A kényszer azonban egy olyan célon való munka következetessége, amelyre már nincs szükség, de amelyet félelemből vagy nyomásból tartanak. Ez egy borotvavékony vonal. Minden reggel gondolkodás nélkül mosol fogat; automatikus és ösztönös, világos célja a jó lélegzet. Ez egy jó szokást formáló sorozat. Az etikus csíkrendszer lélegzetvételi teret ad a felhasználóknak. Ha valamilyen oknál fogva nem mosol reggel, akkor délben is moshatsz. A tökéletlenség megengedhető anélkül, hogy félnünk kell egy hosszú erőfeszítés elvesztésétől. A kényszer az ellenkező utat választja, amikor egy sorozat szorongást okoz, bűntudatot vagy akár kimerültséget okoz, és néha úgy érzi, hogy nem ért el semmit, annak ellenéremunka. Nem azért cselekszel, mert szeretnél, hanem azért, mert tudat alatt rettegsz attól, hogy a fejlődésed nullára áll. Valaki ezt tökéletesen leírta: "Éreztem, hogy csalok, de egyszerűen nem érdekelt. A sorozatom nélkül semmi vagyok". Ez azt mutatja, milyen szélsőséges tartási csíkok lehetnek az egyénen. Olyan mértékben, hogy a felhasználók önértékelésüket egy tetszőleges mérőszámhoz kezdik kötni, nem pedig az eredeti célhoz vagy okhoz, amiért a sorozatot először elindították. A sorozat azzá válik, akik ők, nem csak az, amit csinálnak. A jól megtervezett etikai rendszernek bátorításnak kell lennie a felhasználó számára, nem pedig nyomásnak vagy kötelezettségnek. Ez a belső és külső motiváció egyensúlyára vonatkozik. A külső motiváció (külső jutalmak, a büntetés elkerülése) elindíthatja a felhasználókat, de a belső motiváció (egy személyes cél érdekében elvégzi a feladatot, például spanyolul tanulni, mert őszintén szeretne kommunikálni egy szeretett személlyel) erősebb a hosszú távú elköteleződésben. Egy jó rendszernek a belső motiváció felé kell vonzódnia a külső elemek körültekintő használatával, azaz emlékeztetnie kell a felhasználókat arra, hogy meddig jutottak el, nem pedig azzal fenyegetni őket, hogy mit veszíthetnek. Ismét egy finom vonal. Egy egyszerű teszt a csíkrendszer megtervezésekor az, hogy ténylegesen el kell szánni egy kis időt, és átgondolni, hogy a termékei pénzt keresnek-e azáltal, hogy megoldásokat adnak el a termék által létrehozott szorongásra. Ha igen, akkor nagy az esélye, hogy kihasználja a felhasználókat. A következő kérdés tehát az, hogy ha a sorozat használatát választom, hogyan tervezhetem meg úgy, hogy valóban segítse a felhasználókat céljaik elérésében? A Good Streak System Design felhasználói élménye Azt hiszem, itt a legtöbb projekt vagy egy hatékony csíkrendszert szögez ki, vagy teljesen összezavarja. Nézzünk meg néhány UX-elvet a jó sorozattervezéshez. Tartsa könnyedén Valószínűleg hallottál már erről, talán az olyan könyvekből, mint az Atomic Habits, de érdemes megemlíteni, hogy a szokások kialakításának egyik legegyszerűbb módja az, ha apróra és egyszerűvé tesszük a cselekvést. Ez hasonló ahhoz a képességfaktorhoz, amelyet a Fogg-viselkedési modellben tárgyaltunk. Minden sorozattervezés első szabálya az, hogy a szükséges műveletet a lehető legkisebbre tegyék, miközben továbbra is előrelépést kell elérni. Ha egy napi cselekvéshez akaraterőre van szükség, akkor a cselekvés nem múlik el öt napon túl. Miért? Nem lehetsz motivált öt egymást követő napon. Példa: Ha egy meditációs alkalmazást futtat, akkor nem kell 20 perces munkamenetre kényszerítenie a felhasználókat csak azért, hogy fenntartsa a sorozatot. Próbáljon meg egy percet, esetleg akár harminc másodpercet is. Ahogy a mondás tartja, kis vízcseppek alkotják a hatalmas óceánt.) A kis erőfeszítésekből idővel nagy eredmények születnek. Ez legyen a cél: a súrlódás megszüntetése, különösen akkor, ha a pillanat nehéz lehet. Amikor a felhasználók stresszesek vagy túlterheltek, tudasd velük, hogy az egyszerű megjelenés, akár néhány másodpercre is, erőfeszítésnek számít. Adjon egyértelmű vizuális visszajelzést Az ember természeténél fogva vizuális. Legtöbbször látnunk kell valamit, hogy higgyünk; szükség van a dolgok vizualizálására, hogy jobban megértsük és perspektívába helyezzük a dolgokat. Ez az oka annak, hogy a csíkminták gyakran használnak vizuális elemeket, például grafikonokat, pipákat, folyamatgyűrűket és rácsokat az erőfeszítések megjelenítésére. Nézze meg a GitHub hozzájárulási grafikonját. Ez a következetesség egyszerű megjelenítése. A fejlesztők mégis úgy szívják be, mint az oxigént.
A kulcs az, hogy egy csíkrendszert ne tegyünk absztraktnak. Valósnak és kiérdemeltnek kell éreznie magát. Például a Duolingo és az Apple Fitness tevékenységgyűrűi letisztult animációt használnak a sorozat befejezésekor, a GitHub pedig előzményadatokat jelenít meg a felhasználó időbeli konzisztenciájáról.
Használjon jó időzítést Korábban említettem, hogy az emberek természetüknél fogva általában feledékenyek, és a felszólítások segíthetnek fenntartani a lendületet. Kérések nélkül a legtöbb új felhasználó elfelejti folytatni. Az élet mozgalmassá válhat, a motiváció eltűnik, és történnek dolgok. Még a régóta tartózkodó felhasználók is profitálnak a felszólításokból, bár legtöbbször már be vannak zárva a szokáshurokba. Ennek ellenére még a legelkötelezettebb ember is véletlenül kihagyhat egy napot. A sorozatrendszerének mindenképpen szüksége van emlékeztetőkre. A leggyakrabban használt felszólító emlékeztetők a push értesítések. Az időzítés nagyon számít, ha push értesítésekkel dolgozik. Az alkalmazás típusa is számít. A „Ma nem gyakoroltál” értesítést küldeni reggel 9 órakor, ez csak furcsa egy tanulóalkalmazás számára, mert sokaknak van dolguk egy nappal azelőtt, hogy egyáltalán nem gondolnának arra, hogy befejezzék a leckét. Ha azonban egy fitnesz alkalmazásról beszélünk, akkor azésszerű, és talán még a nap elején is emlékeztetni kell rá. A push értesítések alkalmazáskategóriánként jelentősen eltérnek. A fitneszalkalmazások például nagyobb elköteleződést tapasztalnak a kora reggeli értesítésekkel (7–8 óra), míg a termelékenységet növelő alkalmazások jobban teljesíthetnek kora délben. A kulcs az, hogy A/B tesztelje az alkalmazás időzítését a felhasználók viselkedése alapján, ahelyett, hogy azt feltételezné, hogy a dolgok mindenki számára egyformák. Ami működik egy meditációs alkalmazásnál, előfordulhat, hogy nem működik a kódkövetőnél. Egyéb kérdőíves módszerek a piros pontok az alkalmazás ikonján és még az alkalmazás widgetek is. A tanulmányok eltérőek, de az átlagember naponta 50-150 alkalommal oldja fel a készülékét (PDF). Ha a felhasználó egy piros pontot lát egy alkalmazáson vagy egy widgeten, amely az aktuális sorozatot jelzi, valahányszor feloldja telefonját, az növeli az elkötelezettséget. Csak ne vigyük túlzásba; a felszólításnak emlékeztetőül kell szolgálnia, nem pedig nyűgnek. Ünnepelje a mérföldköveket A sorozatos rendszernek meg kell ünnepelnie a mérföldköveket az érzelmek újraélesztése érdekében, különösen azoknál a felhasználóknál, akik mélyen a sorozatba kerültek. Amikor egy felhasználó eléri a 7., 30., 50., 100., 365. napot, nagy ügyet kell csinálni belőle. Ismerje el az elért eredményeket – különösen a régóta használók számára.
Ahogy korábban láttuk, a Duolingo kitalálta ezt, és megvalósított egy animált grafikát, amely konfettivel ünnepli a mérföldköveket. Egyes platformok még jelentős bónuszokat is adnak, amelyek igazolják a felhasználók erőfeszítéseit. Ez pedig előnyös lehet az alkalmazások számára, így a felhasználók hajlamosak nyilvánosan megosztani a mérföldköveket a közösségi médiában. Egy másik előny a mérföldkövek elérése előtti várakozás. Ez nem csak a sorozat végtelen életben tartása; a felhasználóknak van mire számítani. Használja a kegyelmi mechanizmusokat Az élet kiszámíthatatlan. Az emberek elterelődnek. Minden jó csíkrendszernek tökéletlenségre kell számítania. A sorozatrendszert érintő egyik legnagyobb pszichológiai fenyegetés az, hogy már egyetlen kihagyott nap után nullára állítják vissza. Az „etikus” csíkrendszernek némi lazaságot kell biztosítania a felhasználó számára. Tegyük fel, hogy van egy 90 napos sakktanulási sorozata. Három jó hónapja voltál következetes, és egy nap utazás közben meghal a telefonod, és így a 90-ből 0 lesz – minden, minden erőfeszítés törlődik, és a fejlődés eltűnik. Lehet, hogy a felhasználó teljesen összeomlik. A semmiből való újjáépítés gondolata annyira demoralizáló, hogy az erőfeszítés nem éri meg. A legrosszabb esetben előfordulhat, hogy a felhasználó elhagyja az alkalmazást, miután kudarcot vallott. Fontolja meg egy „kegyelmi” mechanizmus hozzáadását a sorozatrendszerhez:
Streak Freeze Lehetővé teszi a felhasználóknak, hogy szándékosan kihagyjanak egy napot büntetés nélkül. Extra idő Hagyjon néhány órával (2–3) túl a szokásos határidőn, mielőtt elindítja a visszaállítást. Decay Models A hard reset helyett a sorozat egy kis mértékben csökken, például 10 napot vonnak le a sorozatból minden kihagyott nap után.
Használjon bátorító hangot Hasonlítsunk össze két üzenetet, amely a sorozat megszakadásakor jelenik meg a felhasználóknak:
"Elvesztette a 42 napos sorozatát. Kezdje elölről." "42 napon át jelent meg egyhuzamban. Ez hihetetlen előrelépés! Megpróbálja még egyszer?"
Mindkettő ugyanazt az információt közvetíti, de az érzelmi hatás eltérő. Az első üzenet nagy valószínűséggel demoralizálja a felhasználót, és abbahagyja. A második üzenet a már elért eredményeket ünnepli, és gyengéden arra ösztönzi a felhasználót, hogy próbálkozzon újra. A Streak Systems tervezési kihívásai Mielőtt belemennénk a sávrendszer felépítésének műszaki jellemzőibe, tisztában kell lennie azokkal a kihívásokkal, amelyekkel szembesülhet. A dolgok bonyolulttá válhatnak, ahogyan azt várnád. Időzónák kezelése Megvan az oka annak, hogy az idő és a dátum kezelése a fejlesztők legnehezebb fogalmai közé tartozik. A formázást, a nemzetközivé tételt és még sok minden mást meg kell fontolni. Hadd kérdezzem meg: mi számít egy napnak? Tudjuk, hogy a világ különböző időzónák szerint működik, és mintha ez nem lenne elég, egyes régiókban van nyári időszámítás (DST), amely évente kétszer fordul elő. Hol kezdi egyáltalán kezelni ezeket az éles ügyeket? Mi számít a holnap „kezdetének”? Egyes fejlesztők ezt egyetlen központi időzóna, például UTC használatával próbálják elkerülni. Egyes felhasználók számára ez megfelelő eredményeket adna, de egyesek számára egy órával, két órával vagy még tovább is leállhat. Ez az inkonzisztencia tönkreteszi a felhasználói élményt. A felhasználókat kevésbé érdekli, hogyan kezeli a színfalak mögött eltöltött időt; mindössze annyit várnak el, hogy ha 23:40-kor sorozatos akciót hajtanak végre, akkor az pontosan abban az időpontban, az ő kontextusukban regisztráljon. Az „egy napot” a felhasználó helyi időzónája alapján kell meghatározni, nem a szerveridő alapján. Persze, nyugodtan vehetedútvonal és nullázási sorozatok globálisan minden felhasználó számára éjfélkor UTC, de ezzel nagyon méltánytalanságot keltesz. Valakinek Kaliforniában mindig van nyolc plusz órája a feladat elvégzésére, mint annak, aki Londonban él. Ez egy igazságtalan tervezési hiba, amely bizonyos felhasználókat a helyzetük miatt büntet. És mi van akkor, ha az illető Londonban csak látogatóban van, elvégez egy feladatot, majd visszatér egy másik időzónába? Mindezekre az egyik hatékony megoldás, ha megkérjük a felhasználókat, hogy kifejezetten állítsák be az időzónát a csatlakozás során (lehetőleg az első hitelesítés után). Célszerű egy finom megjegyzést fűzni ahhoz, hogy az időzóna-adatok megadása csak arra szolgál, hogy az alkalmazás pontosan nyomon kövesse az előrehaladást, nem pedig személyazonosításra alkalmas adatként. És ez egy másik jó ötlet, hogy ezt változtathatóvá tegye. Azt javaslom, hogy bárki kerülje az időzóna-logika közvetlen kezelését egy alkalmazásban. Használjon bevált dátumkönyvtárakat, például a Moment.js-t vagy a pytz-t (Python) stb. Nem szükséges újra feltalálni a kereket egy ilyen összetett dologhoz. Missed Days és Edge-tokok Egy másik kihívás, ami miatt aggódnia kell, az olyan ellenőrizhetetlen szélsőséges esetek, mint a felhasználók túlalvása, szerverleállás, késés, hálózati hibák stb. A kegyelmi mechanizmusok gondolatának használata, mint amilyeneket korábban tárgyaltunk, segíthet. Egy kétórás türelmi időszak segíthet a felhasználónak és a fejlesztőnek is abban az értelemben, hogy a felhasználókat nem büntetik szigorúan az ellenőrizhetetlen életkörülmények miatt. A fejlesztők számára a türelmi ablakok hasznosak azokban az ellenőrizhetetlen pillanatokban, amikor a szerver leáll az éjszaka közepén. Mindenekelőtt soha ne bízzon az ügyfélben. Mindig a szerver oldalon kell érvényesíteni. A szervernek kell az igazság egyetlen forrásának lennie. Csalás megelőzése Ismétlem, ezt nem tudom eléggé hangsúlyozni: Ügyeljen arra, hogy mindent kiszolgálóoldalon érvényesítsen. A felhasználók emberek, és az emberek csalhatnak, ha lehetőséget kapnak. Ez elkerülhetetlen. Megpróbálhatod:
Az összes művelet tárolása UTC időbélyegekkel. A kliens elküldheti a helyi idejét, de a szerver azonnal konvertálhatja azt UTC-re és érvényesítheti a szerveridővel szemben. Így, ha a kliens időbélyege gyanúsan messze van, a rendszer hibaként utasíthatja el, és a felhasználói felület ennek megfelelően válaszolhat. Eseményalapú nyomon követés használata. Más szóval, tároljon rekordot az egyes műveletekről metaadatokkal, beleértve a felhasználói azonosítót, a végrehajtott művelet típusát, valamint az időbélyeget és az időzónát. Ez segít az érvényesítésben.
Streak System Engine építése Ez nem egy kódoktatás, ezért kerülni fogom, hogy egy csomó kódot rád rakjak. Ezt gyakorlatiasnak tartom, és leírom, hogy a dolgok általában hogyan működtetik a csíkrendszer motorját az architektúra, az áramlás és a megbízhatóság tekintetében. Core Architecture Ahogy már többször mondtam, tegye a szervert a sorozatadatok egyetlen igazságforrásává. Az architektúra valami ilyesmi lehet a szerveren:
Tárolja az egyes felhasználók adatait egy adatbázisban. Tárolja az aktuális sorozattárolót (alapértelmezett 0) egész számként. Tárolja az időzóna-beállítást, azaz az IANA időzóna karakterláncát (akár implicit módon a helyi időbélyegből, akár kifejezetten úgy, hogy megkéri a felhasználót az időzóna kiválasztására). Például: „Amerika/New_York”. A felhasználó helyi időzónájához viszonyított időzóna-ellenőrzéssel kezelje az összes logikát annak meghatározására, hogy a sorozat folytatódik-e vagy megszakad.
Eközben ügyféloldalon:
Az aktuális sorozat megjelenítése, amely általában a szerverről származik. A metaadatok formájában végrehajtott művelet elküldése a kiszolgálónak annak ellenőrzésére, hogy a felhasználó valóban végrehajtott-e egy minősítő sorozatműveletet. Adjon vizuális visszajelzést a szerver válaszai alapján.
Tehát röviden, az agy a szerveren van, a kliens pedig a megjelenítési és az események beküldésére szolgál. Ezzel sok meghibásodástól és szélső esettől kímélheti meg, valamint egyszerűbbé teszi a frissítéseket és javításokat. A logikai folyamat Szimuláljunk egy végigjátszást arról, hogyan működne egy minimális hatékony csíkrendszer motor, amikor a felhasználó végrehajt egy műveletet:
A felhasználó végrehajt egy minősítő sorozatot. A kliens egy eseményt küld a szervernek metaadatként. Ez lehet „X felhasználó befejezte az Y műveletet Z időbélyeggel”. A szerver fogadja ezt az eseményt, és elvégzi az alapvető ellenőrzést. Ez valódi felhasználó? Hitelesítve vannak? Érvényes az akció? Konzisztens az időzóna? Ha ez sikerül, a szerver lekéri a felhasználó adatsorait az adatbázisból. Ezután konvertálja át a kapott műveleti időbélyeget a felhasználó helyi időzónájára. Hagyja, hogy a szerver összehasonlítsa a naptári dátumokat (nem az időbélyegeket) a felhasználó helyi időzónájában: Ha ugyanaz a nap, akkor a művelet redundáns, és nincs változás acsík. Ha másnap, akkor a sorozat meghosszabbodik és 1-gyel nő. Ha egy napnál hosszabb szünet van, a sorozat megszakad. Azonban itt alkalmazhatja a kegyelemmechanikát. Ha a türelmi mechanizmus kimarad, állítsa vissza a sorozatot 1-re.
Ha úgy dönt, hogy elmenti a mérföldkövek eléréséhez szükséges előzményadatokat, frissítse az olyan változókat, mint a „leghosszabb sorozat” vagy „összes aktív nap”. A szerver ezután frissíti az adatbázist, és válaszol a kliensnek. Valami ilyesmi:
{ "current_streak": 48, "longest_streak": 50, "total_active_days": 120, "streak_extended": igaz, }
További intézkedésként a szervernek vagy újra kell próbálkoznia, vagy el kell utasítania, és értesítenie kell az ügyfelet, ha a folyamat során valami meghiúsul. Az ellenálló képesség építése Amint azt korábban említettük, a hibák vagy a szerverleállás miatti sorozatvesztés szörnyű felhasználói élményt jelent, és a felhasználók nem számítanak rá, hogy elvállalják a bukást. Így a sorozatrendszernek rendelkeznie kell biztosítékokkal ezekre a forgatókönyvekre. Ha a kiszolgáló karbantartás miatt (vagy bármilyen okból) leáll, fontolja meg egy ideiglenes, további órák engedélyezését a javításhoz, hogy a műveletek késve küldhetők el, és továbbra is számíthassanak. Dönthet úgy is, hogy értesíti a felhasználókat, különösen akkor, ha a helyzet képes befolyásolni egy folyamatban lévő sorozatot. Megjegyzés: Hozzon létre egy adminisztrátori hátsó ajtót, ahol az adatok manuálisan visszaállíthatók. A hibák elkerülhetetlenek, és egyes felhasználók felhívják az alkalmazást, vagy segítséget kérnek, ha sorozatuk olyan okból szakadt meg, amelyet nem tudtak ellenőrizni. Lehetősége van manuálisan visszaállítani a csíkokat, ha a vizsgálat után a felhasználónak igaza van. Következtetés Egy dolog világos marad: a csíkok igazán erősek, mivel az emberi pszichológia alapvetően működik. A legjobb sorozatrendszer az, amelyre a felhasználók nem gondolnak tudatosan. Azonnali eredményekkel vagy látható előrehaladással járó rutinná vált, mint a fogmosás, ami rendszeres szokássá válik. És csak annyit mondok: nem minden termékhez kell csíkrendszer. Valóban erőltetnie kell a következetességet csak azért, mert napi aktív felhasználókat szeretne? A válasz nagyon is lehet „nem”.