Я ўпэўнены, што вы чулі пра палоскі або выкарыстоўвалі прыкладанне з імі. Але калі-небудзь задумваліся, чаму стрыкі такія папулярныя і магутныя? Відавочна, што прыкладанні хочуць як мага больш вашай увагі, але, акрамя гэтага, ці ведаеце вы, што калі папулярнае навучальнае прыкладанне Duolingo прадставіла віджэты iOS для адлюстравання палос, прыхільнасць карыстальнікаў вырасла на 60%. Шэсцьдзесят працэнтаў - гэта вялізная змена ў паводзінах і дэманструе, як можна выкарыстоўваць шаблоны "серыі", каб павялічыць узаемадзеянне і стымуляваць выкарыстанне. У самым простым выглядзе серыя - гэта колькасць дзён запар, у якія карыстальнік выконвае пэўную дзейнасць. Некаторыя людзі таксама вызначаюць гэта як «гейміфікаваную» звычку або метрыку, прызначаную для стымулявання паслядоўнага выкарыстання. Але паласы выходзяць за рамкі паказчыка або запісу ў праграме; гэта больш псіхалагічна, чым гэта. На чалавечыя інстынкты лёгка паўплываць правільнымі фактарамі. Паглядзіце на гэтыя тры фактары: прагрэс, гонар і страх упусціць (звычайна званы FOMO). Што агульнага паміж усімі гэтымі? Высілак. Чым больш намаганняў вы прыкладаеце да чагосьці, тым больш гэта фарміруе вашу асобу, і менавіта так паласы перасякаюцца ў свеце псіхалогіі паводзін. Цяпер з вялікай уладай прыходзіць вялікая адказнасць, і таму ў паласах ёсць цёмны бок. У гэтым артыкуле мы разгледзім псіхалогію, UX і прынцыпы дызайну, якія ляжаць у аснове стварэння эфектыўнай сістэмы серый. Мы разгледзім (1) чаму наш мозг амаль інстынктыўна рэагуе на паласавую актыўнасць, (2) як стварыць паласы такім чынам, каб сапраўды дапамагчы карыстальнікам, і (3) тэхнічную працу, звязаную з стварэннем паласы. Псіхалогія за смугамі Каб распрацаваць і пабудаваць эфектыўную сістэму палос, нам трэба зразумець, як яна супадае з тым, як устроены наш мозг. Маўляў, што робіць яго такім эфектыўным, што мы адчуваем такую ​​інтэнсіўную адданасць абароне нашых палос? Ёсць тры цікавыя, добра задакументаваныя псіхалагічныя прынцыпы, якія пацвярджаюць тое, што робіць серыі такімі моцнымі і выклікаюць прывыканне. Страта Аверсія Гэта, напэўна, самая моцная сіла, якая стаіць за серыямі. Я кажу гэта таму, што ў большасці выпадкаў вы амаль не можаце пазбегнуць гэтага ў жыцці. Падумайце пра гэта так: калі сябар дасць вам 100 долараў, вы будзеце шчаслівыя. Але калі вы страціце 100 долараў са свайго кашалька, гэта будзе значна больш балюча. Эмацыйны вага гэтых сітуацый неаднолькавы. Страта значна больш балючая, чым прыбытак. Давайце пойдзем далей і скажам, што я даю вам 100 долараў і прашу згуляць у азартную гульню. Ёсць 50% верагоднасці, што вы выйграеце яшчэ 100 долараў, і 50% верагоднасці, што вы страціце першапачатковыя 100 долараў. Вы б прынялі? Я б не стаў. Большасць людзей не будзе. Гэта агіда да страты. Калі задумацца, то гэта лагічна, гэта зразумела, гэта па-чалавечы. Канцэпцыя агіды да страты заключаецца ў тым, што мы адчуваем боль ад страты ўдвая больш, чым задавальненне ад атрымання чагосьці роўнага кошту. З псіхалагічнага пункту гледжання, страты затрымліваюцца больш, чым здабыткі. Вы, напэўна, бачыце, як гэта звязана з палосамі. Каб стварыць прыкметную паласу, трэба прыкласці намаганні; калі паласа расце, матывацыя за ёй пачынае знікаць; ці, дакладней, пачынае станавіцца другасным. Вось прыклад: выкажам здагадку, што ў вашага сябра трохдзённая серыя замыкання «Кольца руху» на Apple Watch. Ім амаль няма чаго губляць, акрамя жадання дасягнуць сваёй мэты і быць паслядоўнымі. У той жа час у вас ёсць уражлівая серыя з 219 дзён. Хутчэй за ўсё, вы трапілі ў пастку страху яго страціць. Вы, хутчэй за ўсё, не думаеце аб дасягненні ў гэты момант; гэта больш аб абароне вашых укладзеных высілкаў, і гэта непрыманне страт. Duolingo тлумачыць, як агіда да страты спрыяе нежаданню карыстальніка перарываць доўгую серыю, нават у самыя лянівыя дні. У пэўным сэнсе паласа можа ператварыцца ў звычку, калі ўваходзіць агіда да страты. Мадэль паводзін Фогга (B = MAP) Цяпер, калі мы разумеем страх страціць намаганні, укладзеныя ў больш доўгія серыі, узнікае іншае пытанне: што прымушае нас рабіць гэта ў першую чаргу, дзень за днём, нават да таго, як серыя стане вялікай? Вось пра што ідзе гаворка ў мадэлі паводзін Фогга. Гэта адносна проста. Паводзіны (B) адбываюцца толькі тады, калі тры фактары — матывацыя (M), здольнасць (A) і падказка (P) — супадаюць адначасова. Такім чынам, ураўненне B=MAP. Калі любы з гэтых фактараў, нават адзін, адсутнічае ў гэты момант, паводзіны не адбудзецца. Такім чынам, каб паласавая сістэма была эфектыўнай і перыядычнай, усе тры фактары павінны прысутнічаць: Матывацыя Гэта далікатная і не тое, што пастаянна прысутнічае. Бываюць дні, калі тынапампаваны, каб вывучыць іспанскую мову, і дні, калі вы нават не адчуваеце ні кроплі сілы волі, каб вывучыць мову. Сама па сабе матывацыя выпрацаваць звычку ненадзейная і з першага дня пройгрышная бітва. Здольнасць кампенсаваць абмежаванні матывацыі мае вырашальнае значэнне. У гэтым кантэксце здольнасць азначае лёгкасць дзеянняў, гэта значыць намаганні настолькі лёгкія, што немагчыма сказаць, што гэта немагчыма. Большасць праграм наўмысна выкарыстоўваюць гэта. Apple Fitness проста патрабуе, каб вы пастаялі адну хвіліну на працягу гадзіны, каб зарабіць адзнаку для дасягнення вашай мэты "Стаяць". Duolingo патрэбны толькі адзін завершаны ўрок. Гэтыя задачы не патрабуюць вялікіх намаганняў. Бар'ер настолькі нізкі, што нават у самыя дрэнныя дні вы можаце гэта зрабіць. Але аб'яднаныя намаганні працягваючайся серыі - гэта тое, дзе ўзнікае ідэя прайграць гэтую серыю. Prompt Вось што завяршае ўраўненне. Людзі ад прыроды непамятлівыя, таму так, здольнасці могуць дасягнуць нас на 90%. Але падказка нагадвае нам дзейнічаць. Паласы ўстойлівыя па задуме, таму карыстальнікам трэба пастаянна нагадваць аб неабходнасці дзейнічаць. Каб убачыць, наколькі магутным можа быць падказка, Duolingo правёў тэст A/B, каб даведацца, ці павялічвае чырвоны значок на значку праграмы сталае выкарыстанне. Гэта прывяло да росту штодзённых актыўных карыстальнікаў на 6%. Проста чырвоны значок. Абмежаванні мадэлі Улічваючы ўсё гэта, існуе абмежаванне мадэлі Фогга, паводле якога крытыкі і сучасныя даследаванні заўважылі, што дызайн, які занадта моцна абапіраецца на падказкі, напрыклад, агрэсіўныя апавяшчэнні, рызыкуе выклікаць разумовую стомленасць. Пастаянныя апавяшчэнні і звышурочная праца могуць прывесці да адтоку карыстальнікаў. Такім чынам, сачыце за гэтым. Эфект Зейгарника Што вы адчуваеце, калі пакідаеце задачу праекта напалову выкананай? Гэта раздражняе многіх людзей, таму што незавершаныя задачы займаюць больш разумовай прасторы, чым тое, што мы завяршаем. Калі нешта зроблена і сышло, мы схільныя пра гэта забывацца. Калі нешта не зроблена, гэта, як правіла, абцяжарвае наш розум. Менавіта таму ў лічбавых прадуктах выкарыстоўваюцца штучныя індыкатары прагрэсу, такія як панэль запаўнення профілю Upwork, каб паведаміць карыстальніку, што яго профіль запоўнены толькі на «60%». Гэта падштурхоўвае карыстальніка скончыць пачатае.

Давайце паглядзім на іншы прыклад. У вас ёсць пяць задач у праграме са спісам спраў, і ў рэшце рэшт вы правяраеце толькі чатыры з іх як выкананыя. Многія з нас будуць адчуваць сябе нявыкананымі з-за гэтай адной незавершанай задачы. Вось тут і ёсць эфект Зейгарніка. Эфект Зейгарніка быў прадэманстраваны псіхолагам Блюмай Зейгарнік, якая апісала, што мы схільныя трымаць у памяці незавершаныя задачы даўжэй, чым выкананыя. У UX-дызайне гэта натуральна ўваходзіць у паласаты ўзор. Дапусцім, у вас 63 дзень серыі навучання. У гэты момант вы знаходзіцеся ў бесперапыннай схеме няскончаных спраў. Ваш мозг рэдка забывае пра гэта, бо яно знаходзіцца ў глыбіні душы. У гэты момант ваш мозг становіцца тым, хто адпраўляе вам апавяшчэнні. Калі вы аб'ядноўваеце гэтыя псіхалагічныя сілы, вы пачынаеце па-сапраўднаму разумець, чаму паласы - гэта не проста звычайная функцыя прыкладання; яны здольныя змяняць паводзіны чалавека. Але дзесьці па лініі — я не магу дакладна сказаць, калі, бо для кожнага гэта па-рознаму — усё дасягае кропкі, калі паласа пераходзіць ад «веселасці» да таго, што вы адчуваеце, што не можаце дазволіць сабе страціць. Вы ж не хочаце, каб 58 дзён намаганняў прапалі марна? Вось што робіць сістэму паласы эфектыўнай. Калі ўсё зроблена правільна, серыі дапамагаюць карыстальнікам выпрацаваць дзіўныя звычкі, якія дапамогуць дасягнуць мэты. Гэта можа быць штодзённае чытанне або пастаяннае наведванне трэнажорнай залы. Гэтыя паўтаральныя дзеянні (часам невялікія) складаюцца з цягам часу і становяцца відавочнымі ў нашым паўсядзённым жыцці. Але ў кожнай медалі два бакі. Тонкая мяжа паміж звычкай і прымусам Калі вы сачылі за гэтым, вы ўжо можаце сказаць, што ў сістэм паласы ёсць цёмны бок. Фарміраванне звычкі - гэта паслядоўнасць з паўторнай мэтай. Прымус, аднак, - гэта паслядоўнасць працы над мэтай, якая больш не патрэбна, але трымаецца з-за страху або ціску. Гэта тонкая, як брытва, лінія. Вы чысціце зубы кожную раніцу, не задумваючыся; гэта аўтаматычна і інстынктыўна, з дакладнай мэтай атрымаць добрае дыханне. Гэта паласа, якая ўтварае добрую звычку. Сістэма этычных паласы дае карыстальнікам магчымасць дыхаць. Калі па нейкіх прычынах вы не чысціце зубы раніцай, вы можаце пачысціць апоўдні. Недасканаласць дапускаецца, не баючыся страціць доўгі намаганне. Прымус ідзе супрацьлеглым шляхам, у выніку чаго паласа прымушае вас хвалявацца, вы адчуваеце сябе вінаватым ці нават знясіленым, а часам здаецца, што вы нічога не дасягнулі, нягледзячы на ​​ўсе сваепраца. Вы дзейнічаеце не таму, што хочаце, а таму, што падсвядома баіцеся бачыць, як ваш прагрэс абнуляецца. Хтосьці нават апісаў гэта выдатна: "Я адчуваў, што падманваю, але проста не клапаціўся. Я нішто без маёй паласы". Гэта паказвае, што паласы моцнага ўтрымання могуць аказваць на чалавека. Да такой ступені, што карыстальнікі пачынаюць звязваць сваю самаацэнку з адвольным паказчыкам, а не з першапачатковай мэтай або прычынай, па якой яны пачалі серыю. Паласа становіцца тым, хто яны ёсць, а не толькі тым, што яны робяць. Добра распрацаваная сістэма этычных пазіцый павінна адчуваць сябе як заахвочванне для карыстальніка, а не як ціск ці абавязак. Гэта звязана з балансам унутранай і знешняй матывацыі. Знешняя матывацыя (знешнія ўзнагароды, пазбяганне пакарання) можа заахвоціць карыстальнікаў, але ўнутраная матывацыя (выкананне задання для дасягнення асабістай мэты, напрыклад, вывучэнне іспанскай мовы, таму што вы шчыра хочаце мець зносіны з каханым чалавекам) больш моцная для доўгатэрміновага ўзаемадзеяння. Добрая сістэма павінна імкнуцца да ўнутранай матывацыі з асцярожным выкарыстаннем знешніх элементаў, г.зн. нагадваць карыстальнікам аб тым, як далёка яны зайшлі, а не пагражаць ім тым, што яны могуць страціць. Зноў жа, гэта тонкая грань. Просты тэст пры распрацоўцы серыйнай сістэмы заключаецца ў тым, каб заняць некаторы час і падумаць, ці зарабляюць вашы прадукты грошы, прадаючы рашэнні для барацьбы з трывогай, створаныя вашым прадуктам. Калі так, ёсць вялікая верагоднасць, што вы эксплуатуеце карыстальнікаў. Такім чынам, наступнае пытанне: калі я вырашу выкарыстоўваць streak, як мне распрацаваць яго такім чынам, каб сапраўды дапамагчы карыстальнікам дасягнуць іх мэтаў? UX добрага дызайну сістэмы Streak Я лічу, што гэта тое месца, дзе большасць праектаў альбо ствараюць эфектыўную сістэму паласы, альбо цалкам яе сапсуюць. Давайце разгледзім некаторыя прынцыпы UX добрага дызайну серый. Захоўвайце гэта без асаблівых высілкаў Вы, напэўна, чулі пра гэта раней, магчыма, з такіх кніг, як Atomic Habits, але варта адзначыць, што адзін з самых простых спосабаў выпрацаваць звычкі - гэта зрабіць дзеянне дробным і лёгкім. Гэта падобна да фактару здольнасці, які мы абмяркоўвалі з мадэлі паводзін Фогга. Першае правіла любой распрацоўкі паласы павінна заключацца ў тым, каб неабходныя дзеянні былі як мага меншымі, але пры гэтым дасягаліся прагрэсу. Калі для выканання штодзённага дзеяння патрэбна сіла волі, гэта дзеянне не выканае больш за пяць дзён. чаму? Вы не можаце быць матываванымі пяць дзён запар. Прыклад: калі вы запусціце праграму для медытацыі, вам не трэба прымушаць карыстальнікаў праходзіць 20-хвілінны сеанс, каб толькі захаваць серыю. Паспрабуйце адну хвіліну, магчыма, нават што-небудзь меншае, напрыклад, трыццаць секунд. Як гаворыцца, з маленькіх кропель вады вялікі акіян). Невялікія намаганні з часам складаюцца ў вялікія дасягненні. Гэта павінна быць мэтай: ліквідаваць трэнні, асабліва калі момант можа быць складаным. Калі карыстальнікі знаходзяцца ў стрэсе або перагружаныя, дайце ім ведаць, што простае з'яўленне, нават на некалькі секунд, лічыцца намаганнем. Забяспечце выразную візуальную зваротную сувязь Людзі па сваёй прыродзе візуальныя. У большасці выпадкаў нам трэба нешта ўбачыць, каб паверыць; ёсць такая неабходнасць візуалізаваць рэчы, каб лепш зразумець іх і паставіць рэчы ў перспектыву. Вось чаму шаблоны паласы часта выкарыстоўваюць візуальныя элементы, такія як графікі, галачкі, кольцы прагрэсу і сеткі, каб візуалізаваць намаганні. Паглядзіце на графік узносаў GitHub. Гэта простая візуалізацыя паслядоўнасці. Але распрацоўшчыкі ўдыхаюць яго як кісларод.

Галоўнае, каб сістэма паласы не адчувалася абстрактна. Гэта павінна здавацца сапраўдным і заслужаным. Напрыклад, кольцы фітнес-актыўнасці Duolingo і Apple выкарыстоўваюць чысты анімацыйны дызайн пасля завяршэння серыі, а GitHub паказвае гістарычныя даныя паслядоўнасці карыстальнікаў з цягам часу.

Выкарыстоўвайце добры час Раней я згадваў, што людзі звычайна непамятлівыя па сваёй прыродзе і што падказкі могуць дапамагчы захаваць рух наперад. Без падказак большасць новых карыстальнікаў забываюць працягваць. Жыццё можа быць занятым, матывацыя знікае, і ўсё здараецца. Нават даўнія карыстальнікі карыстаюцца падказкамі, хаця ў большасці выпадкаў яны ўжо заблакіраваны ў цыкле звычак. Тым не менш, нават самы адданы чалавек можа выпадкова прапусціць дзень. Вашай сістэме серый напэўна патрэбныя напаміны. Найбольш часта выкарыстоўваюцца напамінкі - гэта push-апавяшчэнні. Час сапраўды мае значэнне пры працы з push-апавяшчэннямі. Тып прыкладання таксама мае значэнне. Адпраўка апавяшчэння ў 9 гадзін раніцы з надпісам "Вы сёння не трэніраваліся" - гэта проста дзіўна для навучальнай праграмы, таму што многім трэба зрабіць за дзень, перш чым яны нават падумаюць аб завяршэнні ўрока. Аднак, калі мы гаворым пра фітнес-дадатак, гэтагэта разумна і, магчыма, нават чакаецца, што пра яго нагадваюць раней у той жа дзень. Push-апавяшчэнні істотна адрозніваюцца ў залежнасці ад катэгорыі прыкладання. Напрыклад, фітнес-праграмы больш актыўна працуюць з ранішнімі апавяшчэннямі (7-8 гадзін раніцы), у той час як прадукцыйныя праграмы могуць працаваць лепш апоўдні. Галоўнае ў тым, каб A/B тэставаць час вашага прыкладання на аснове паводзін вашых карыстальнікаў, а не меркаваць, што рэчы адзіныя для ўсіх. Тое, што працуе для праграмы для медытацыі, можа не працаваць для трэкера кадавання. Іншыя метады падказкі - гэта чырвоныя кропкі на значку праграмы і нават віджэты праграмы. Даследаванні адрозніваюцца, але ў сярэднім чалавек разблакуе сваю прыладу 50-150 разоў на дзень (PDF). Калі карыстальнік бачыць чырвоную кропку на праграме або віджэце, якая паказвае на бягучую серыю кожны раз, калі ён разблакіраваў свой тэлефон, гэта павялічвае прыхільнасць. Толькі не перашчыруйце; падказка павінна служыць напамінам, а не прыдзірствам. Святкуйце вехі Сістэма серый павінна спрабаваць адзначаць важныя этапы, каб аднавіць эмоцыі, асабліва для карыстальнікаў, якія знаходзяцца ў глыбокай серыі. Калі карыстальнік трапляе ў Дзень 7, Дзень 30, Дзень 50, Дзень 100, Дзень 365, вы павінны зрабіць з гэтага вялікую справу. Адзначайце дасягненні — асабліва для даўніх карыстальнікаў.

Як мы бачылі раней, Duolingo зразумеў гэта і рэалізаваў аніміраваную графіку, якая адзначае важныя падзеі канфеці. Некаторыя платформы нават даюць значныя бонусы, якія пацвярджаюць намаганні карыстальнікаў. І гэта можа быць карысным для прыкладанняў, так што карыстальнікі імкнуцца публічна дзяліцца сваімі этапамі ў сацыяльных сетках. Яшчэ адна перавага - чаканне, якое ўзнікае перад дасягненнем этапаў. Гэта не проста бясконцае захаванне серыі; карыстальнікам ёсць на што разлічваць. Выкарыстоўвайце механізмы ласкі Жыццё непрадказальнае. Людзі адцягваюцца. Любая добрая сістэма паласы павінна чакаць недасканаласці. Адной з самых вялікіх псіхалагічных пагроз сістэме серый з'яўляецца жорсткі скід да нуля пасля ўсяго аднаго прапушчанага дня. «Этычная» сістэма паласы павінна даць карыстальніку некаторую слабіну. Дапусцім, у вас 90-дзённая серыя навучання шахматам. Вы былі паслядоўнымі на працягу трох добрых месяцаў, і аднойчы ваш тэлефон гіне падчас падарожжа, і проста так 90 становіцца 0 — усё, усе гэтыя намаганні, сціраецца, і прагрэс знікае. Карыстальнік можа быць цалкам спустошаны. Думка аднавіць яго з нуля настолькі дэмаралізуе, што намаганні не вартыя таго. У горшым выпадку карыстальнік можа адмовіцца ад праграмы, адчуўшы сябе няўдалай. Падумайце над тым, каб дадаць механізм "ласкі" ў вашу сістэму серый:

Streak FreezeДазволіць карыстальнікам наўмысна прапусціць дзень без штрафаў. Дадатковы час Дазволіць некалькі гадзін (2–3) пасля звычайнага тэрміну перад запускам скіду. Мадэлі распаду. Замест апаратнага скіду паласа памяншаецца на невялікую колькасць, напрыклад, 10 дзён вылічваецца з серыі за кожны прапушчаны дзень.

Выкарыстоўвайце падбадзёрваючы тон Давайце параўнаем два паведамленні, якія паказваюцца карыстальнікам, калі серыя абрываецца:

"Вы страцілі 42-дзённую серыю. Пачніце спачатку". "Вы з'яўляліся 42 дні запар. Гэта неверагодны прагрэс! Хочаце паспрабаваць яшчэ раз?"

Абодва перадаюць аднолькавую інфармацыю, але эмацыйнае ўздзеянне рознае. Першае паведамленне, хутчэй за ўсё, прымусіць карыстальніка адчуць сябе дэмаралізаваным і прымусіць яго кінуць. Другое паведамленне адзначае тое, што ўжо было дасягнута, і мякка заклікае карыстальніка паспрабаваць яшчэ раз. Праблемы праектавання Streak Systems Перш чым мы пяройдзем да тэхнічнай спецыфікі пабудовы серыйнай сістэмы, вы павінны быць у курсе праблем, з якімі вы можаце сутыкнуцца. Усё можа ўскладніцца, як і варта было чакаць. Апрацоўка гадзінных паясоў Ёсць прычына, чаму апрацоўка часу і даты з'яўляецца адной з самых складаных канцэпцый, з якімі маюць справу распрацоўшчыкі. Варта ўлічваць фарматаванне, інтэрнацыяналізацыю і многае іншае. Дазвольце спытаць вас: што лічыцца днём? Мы ведаем, што свет працуе ў розных гадзінных паясах, і як быццам гэтага недастаткова, у некаторых рэгіёнах ёсць летні час (DST), які адбываецца два разы на год. З чаго ўвогуле пачаць апрацоўку гэтых крайніх выпадкаў? Што лічыцца «пачаткам» заўтрашняга дня? Некаторыя распрацоўшчыкі спрабуюць пазбегнуць гэтага, выкарыстоўваючы адзін цэнтральны гадзінны пояс, напрыклад UTC. Для некаторых карыстальнікаў гэта дало б правільныя вынікі, але для некаторых гэта можа быць адключана на гадзіну, дзве гадзіны ці больш. Гэта неадпаведнасць разбурае карыстацкі досвед. Карыстальнікаў менш хвалюе, як вы спраўляецеся з часам за кадрам; усё, што яны чакаюць, гэта тое, што калі яны выканаюць серыйнае дзеянне ў 23:40, то яно павінна зарэгістравацца менавіта ў гэты час, у іх кантэксце. Вы павінны вызначыць «адзін дзень» на аснове мясцовага гадзіннага пояса карыстальніка, а не часу сервера. Вядома, вы можаце палегчыцьмаршрутызаваць і скідваць серыі глабальна для ўсіх карыстальнікаў апоўначы па UTC, але вы ствараеце несправядлівасць. Хтосьці ў Каліфорніі заўсёды мае восем дадатковых гадзін, каб выканаць сваю задачу, чым хтосьці, хто жыве ў Лондане. Гэта несправядлівы недахоп дызайну, які карае некаторых карыстальнікаў з-за іх месцазнаходжання. А што, калі гэты чалавек у Лондане толькі ў гасцях, выконвае заданне, а потым вяртаецца ў іншы гадзінны пояс? Адным з эфектыўных рашэнняў для ўсіх гэтых з'яўляецца прапанаваць карыстальнікам яўна ўсталяваць свой гадзінны пояс падчас рэгістрацыі (пажадана пасля першай аўтэнтыфікацыі). Гэта добрая ідэя, каб уключыць тонкае заўвага, што прадастаўленне інфармацыі аб гадзінным поясе выкарыстоўваецца толькі для таго, каб праграма дакладна адсочвала прагрэс, а не выкарыстоўваецца ў якасці асабістых даных. І яшчэ адна добрая ідэя - зрабіць гэта зменлівым параметрам. Я раю ўсім пазбягаць непасрэднай апрацоўкі логікі часавых паясоў у праграме. Выкарыстоўвайце правераныя бібліятэкі дат, такія як Moment.js або pytz (Python) і г. д. Няма неабходнасці вынаходзіць ровар для чагосьці такога складанага, як гэта. Прапушчаныя дні і крайнія выпадкі Яшчэ адна праблема, пра якую вы павінны турбавацца, - гэта некантралюемыя крайнія выпадкі, такія як спаць карыстальнікаў, прастоі сервера, затрымкі, збоі ў сетцы і гэтак далей. Выкарыстанне ідэі механізмаў ласкі, такіх як тыя, якія мы абмяркоўвалі раней, можа дапамагчы. Ільготнае акно ў дзве гадзіны можа дапамагчы як карыстальніку, так і распрацоўшчыку ў тым сэнсе, што карыстальнікі не будуць жорстка карацца за некантралюемыя жыццёвыя абставіны. Распрацоўшчыкам льготныя вокны дапамагаюць у тыя некантралюемыя моманты, калі сервер выходзіць з ладу пасярод ночы. Перш за ўсё, ніколі не давярайце кліенту. Заўсёды правярайце на серверы. Сервер павінен быць адзінай крыніцай праўды. Прадухіленне падману Зноў жа, я не магу гэта падкрэсліць: пераканайцеся, што ўсё правяраецца на баку сервера. Карыстальнікі - гэта людзі, і людзі могуць падманваць, калі ім будзе такая магчымасць. Гэта непазбежна. Вы можаце паспрабаваць:

Захоўванне ўсіх дзеянняў з часовымі пазнакамі UTC. Кліент можа адпраўляць свой мясцовы час, але сервер можа неадкладна пераўтварыць яго ў UTC і праверыць у адпаведнасці з часам сервера. Такім чынам, калі пазнака часу кліента падазрона далёкая, сістэма можа адхіліць гэта як памылку, і карыстацкі інтэрфейс можа адказаць адпаведным чынам. Выкарыстанне адсочвання на аснове падзей. Іншымі словамі, захоўвайце запіс кожнага дзеяння з метададзенымі, уключаючы такую ​​інфармацыю, як ідэнтыфікатар карыстальніка, тып выкананага дзеяння, а таксама пазнаку часу і гадзінны пояс. Гэта дапамагае з праверкай.

Стварэнне рухавіка сістэмы Streak Гэта не падручнік па кодах, таму я буду пазбягаць скідвання на вас кучы кода. Я захаваю гэта практычным і апішу, як звычайна працуе рухавік серыйнай сістэмы, што тычыцца архітэктуры, патоку і надзейнасці. Архітэктура ядра Як я ўжо казаў некалькі разоў, зрабіце сервер адзінай крыніцай праўды для серыйных даных. Архітэктура можа выглядаць прыкладна так на серверы:

Захоўвайце дадзеныя кожнага карыстальніка ў базе дадзеных. Захаваць бягучае сховішча серый (па змаўчанні 0) у выглядзе цэлага ліку. Захоўвайце налады гадзіннага пояса, г.зн. радок часавых поясаў IANA (альбо няяўна з лакальнай меткі часу, альбо відавочна, запытваючы карыстальніка выбраць часавы пояс). Напрыклад, «Амерыка/Нью_Ёрк». Апрацоўвайце ўсю логіку, каб вызначыць, працягваецца серыя або перапыняецца, з праверкай гадзіннага пояса, які суадносіцца з лакальным гадзінным поясам карыстальніка.

Між тым, на баку кліента:

Адлюстроўваць бягучую серыю, якая звычайна атрымліваецца з сервера. Адправіць выкананае дзеянне ў выглядзе метададзеных на сервер, каб праверыць, ці сапраўды карыстальнік выканаў кваліфікацыйнае дзеянне серыі. Забяспечце візуальную зваротную сувязь на аснове адказаў сервера.

Карацей кажучы, мозг знаходзіцца на серверы, а кліент - для адлюстравання і адпраўкі падзей. Гэта пазбаўляе вас ад мноства няўдач і крайніх выпадкаў, а таксама палягчае абнаўленні і выпраўленні. Лагічная плынь Давайце змадэлюем пакрокавае кіраўніцтва аб тым, як будзе працаваць мінімальна эфектыўны механізм серыйнай сістэмы, калі карыстальнік выконвае дзеянне:

Карыстальнік выконвае кваліфікацыйную серыю. Кліент адпраўляе падзею на сервер у выглядзе метададзеных. Гэта можа быць «Карыстальнік X выканаў дзеянне Y у пазнаку часу Z». Сервер атрымлівае гэтую падзею і выконвае базавую праверку. Гэта сапраўдны карыстальнік? Яны аўтэнтыфікаваныя? Ці дзейнічае акцыя? Ці супадае гадзінны пояс? Калі гэта праходзіць, сервер здабывае дадзеныя серыі карыстальніка з базы дадзеных. Затым пераўтварыце атрыманую метку часу дзеяння ў лакальны гадзінны пояс карыстальніка. Дазвольце серверу параўнаць каляндарныя даты (не пазнакі часу) у лакальным часавым поясе карыстальніка: Калі гэта той жа дзень, то дзеянне з'яўляецца залішнім і ў ім няма ніякіх зменаўпаласа. Калі наступны дзень, то паласа падаўжаецца і павялічваецца на 1. Калі разрыў складае больш за адзін дзень, серыя перапыняецца. Аднак тут вы можаце ўжыць механіку ласкі. Калі механізм льгот не выкананы, скіньце серыю да 1.

Калі вы вырашыце захоўваць гістарычныя даныя для важных дасягненняў, абнавіце такія зменныя, як «самая доўгая серыя» або «агульная колькасць актыўных дзён». Затым сервер абнаўляе базу дадзеных і адказвае кліенту. Нешта накшталт гэтага:

{ "current_streak": 48, "самая доўгая серыя": 50, "total_active_days": 120, "streak_extended": праўда, }

У якасці далейшай меры сервер павінен альбо паўтарыць спробу, альбо адхіліць і паведаміць кліенту, калі што-небудзь не ўдаецца падчас працэсу. Будаўніцтва для ўстойлівасці Як ужо гаварылася раней, карыстальнікі, якія губляюць серыю з-за памылак або прастою сервера, - гэта жудасны UX, і карыстальнікі не чакаюць, што за гэта пацерпяць. Такім чынам, ваша сістэма серый павінна мець гарантыі для такіх сцэнарыяў. Калі сервер не працуе з-за тэхнічнага абслугоўвання (або па якой-небудзь іншай прычыне), падумайце аб тым, каб дазволіць часовае акно дадатковых гадзін, каб выправіць гэта, каб дзеянні маглі адпраўляцца са спазненнем і па-ранейшаму залічвацца. Вы таксама можаце паведаміць карыстальнікам, асабліва калі сітуацыя можа паўплываць на бягучую серыю. Заўвага: усталюйце бэкдор адміністратара, дзе даныя можна аднавіць уручную. Памылкі непазбежныя, і некаторыя карыстальнікі тэлефануюць у вашу праграму або звяртаюцца ў службу падтрымкі, калі іх серыя перапынілася па прычыне, якую яны не маглі кантраляваць. Вы павінны мець магчымасць уручную аднавіць палосы, калі пасля расследавання карыстальнік мае рацыю. Заключэнне Адно застаецца відавочным: паласы сапраўды магутныя з-за таго, як псіхалогія чалавека працуе на фундаментальным узроўні. Лепшая сістэма серый - гэта тая, пра якую карыстальнікі не задумваюцца свядома. Гэта стала звычайнай справай з неадкладнымі вынікамі або бачным прагрэсам, як чыстка зубоў, якая становіцца звычайнай звычкай. І я проста скажу: не для ўсіх прадуктаў патрэбна сістэма паласы. Ці сапраўды вам трэба прымусіць паслядоўнасць толькі таму, што вы хочаце штодзённых актыўных карыстальнікаў? Адказ цалкам можа быць «не».

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