Сиз сызыктар жөнүндө укканыңызга же бир колдонмону колдонгонуңузга ишенем. Бирок эмне үчүн сызыктар мынчалык популярдуу жана күчтүү экенин ойлонуп көрдүңүз беле? Колдонмолор сиздин көңүлүңүздү мүмкүн болушунча көбүрөөк каалаары анык, бирок андан тышкары, таанымал окуу колдонмосу Duolingo сызыктарды көрсөтүү үчүн iOS виджеттерин киргизгенде, колдонуучунун милдеттенмеси 60% га өскөнүн билесизби. 60 пайыз жүрүм-турумдун чоң өзгөрүшү жана катышууну жана дискти колдонууну жогорулатуу үчүн "сызык" үлгүлөрүн кантип колдонсо болорун көрсөтөт. Эң негизгиси, сызык - бул колдонуучу белгилүү бир иш-аракетти аткарган күндөрдүн саны. Кээ бир адамдар аны ырааттуу колдонууну стимулдаштыруу үчүн иштелип чыккан "оюндашкан" адат же метрика катары да аныкташат. Бирок сызыктар колдонмодогу метрика же рекорд болуу менен чектелбейт; бул андан да психологиялык. Адамдын инстинкттерине туура факторлор менен таасир этиш оңой. Бул үч факторду карап көрүңүз: прогресс, текебердик жана өткөрүп жиберүү коркунучу (көбүнчө FOMO деп аталат). Булардын баарынын жалпылыгы эмнеде? Аракет. Бир нерсеге канчалык көп күч жумшасаңыз, ал сиздин инсандыгыңызды ошончолук калыптандырат жана сызыктар жүрүм-турум психологиясынын дүйнөсүнө ошентип өтөт. Эми, чоң күч менен чоң жоопкерчилик келет, ошондуктан, сызыктардын бир караңгы жагы бар. Бул макалада биз эффективдүү сызык тутумун куруунун артында психология, UX жана дизайн принциптерин карайбыз. Биз (1) эмне үчүн мээбиз дээрлик инстинктивдүү түрдө структук активдүүлүккө жооп берерин, (2) колдонуучуларга чындап жардам бере турган сызыктарды кантип долбоорлоону жана (3) сызык үлгүсүн түзүүгө катышкан техникалык ишти карап чыгабыз. Стрейктердин артындагы психология Натыйжалуу сызык системасын иштеп чыгуу жана куруу үчүн, биз анын мээбиздин зымдуу жабдыктары менен кантип дал келерин түшүнүшүбүз керек. Мисалы, биз сызыктарыбызды коргоо үчүн ушунчалык катуу берилгендикти сезе тургандай даражада аны эффективдүү кылат? Үч кызыктуу, жакшы документтештирилген психологиялык принциптер бар, алар сызыктарды ушунчалык күчтүү жана көз каранды кылуучу кылып көрсөтөт. Loss Aversion Бул, балким, сызыктардын артында турган эң күчтүү күч. Мен муну айтып жатам, анткени көп учурда жашоодо мындан кача албайсың. Бул тууралуу ойлонуп көр: досуң сага 100 доллар берсе, бактылуу болосуң. Бирок капчыгыңыздан 100 доллар жоготуп алсаңыз, бул көбүрөөк зыян келтирет. Бул жагдайлардын эмоционалдык салмагы бирдей эмес. Жоготуу жакшы сезимге караганда көбүрөөк зыян келтирет. Келгиле, андан ары алып баралы, мен сага 100 доллар берем жана кумар ойнооңду суранам. Дагы 100 доллар утуп алуу 50% жана баштапкы 100 долларды жоготуп алуу 50% мүмкүнчүлүк бар. Алмак белеңиз? мен болмок эмес. Көпчүлүк адамдар келбейт. Бул жоготуудан баш тартуу. Ойлоп көрсөң логикалуу, түшүнүктүү, адамдык. Жоготуудан жийиркенүү концепциясы биз бир нерсени жоготуунун азабын бирдей баалуу нерсеге ээ болуу ырахатынан эки эсе көп сезебиз. Психологиялык жактан алганда, жоготуу пайдага караганда көбүрөөк созулат. Сиз мунун сызыктарга кандай тиешеси бар экенин көрүп жатсаңыз керек. байкаларлык сызык куруу үчүн, ал күч-аракетти талап кылат; сызык өскөн сайын, анын артындагы мотивация өчө баштайт; же тагыраак айтканда, экинчи даражалуу боло баштайт. Бул жерде бир мисал: досуңуздун Apple Watch'ундагы "Жылдуу шакектерди" жапкан үч күндүк сызыгы бар дейли. Алар өз максатына жетүү жана ырааттуу болууну каалагандан башка жогото турган эч нерсеси жок. Ошол эле учурда, сизде 219 күндүк сызык бар. Мүмкүнчүлүк сиз аны жоготуп алуу коркунучу менен капканга түшүп калгандыр. Сиз, балким, бул учурда жетишкендик жөнүндө ойлонбой жатасыз; бул сиздин жумшалган күчүңүздү коргоо жөнүндө көбүрөөк, жана бул жоготуудан баш тартуу. Duolingo жоготуудан баш тартуу колдонуучунун эң жалкоо күндөрүндө да узакка созулууну каалабагандыгын түшүндүрөт. Башкача айтканда, жоготуудан жийиркенүү пайда болгондо, сызык адатка айланып кетиши мүмкүн. Fogg жүрүм-турум модели (B = MAP) Эми биз узун сызыктарга жумшалган күч-аракетти жоготуп алуу коркунучун түшүнгөнүбүздөн кийин, дагы бир суроо туулат: биринчи кезекте, күн өткөн сайын, сызык чоңоюп кете электе эле, эмне кылышыбыз керек? Бул Fogg жүрүм-турум модели жөнүндө. Бул салыштырмалуу жөнөкөй. Жүрүм-турум (B) үч фактор - Мотивация (М), Мүмкүнчүлүк (А) жана Тез (P) - бир учурда бирдей болгондо гана пайда болот. Ошентип, B=MAP теңдемеси. Бул факторлордун бири, ал тургай, ошол учурда жок болсо, жүрүм-турум болбойт. Ошентип, сызык системасы натыйжалуу жана кайталануучу болушу үчүн, үч фактор тең болушу керек: МотивацияБул морт жана дайыма боло турган нерсе эмес. Сен болгон күндөр барИспан тилин үйрөнүүгө даярданып, тилди үйрөнүүгө бир аз да эркиңизди сезбейсиз. Көнгөн адат түзүү үчүн мотивация өзүнөн өзү ишеничсиз жана биринчи күндөн тартып эле жеңилүү болот. Мотивациянын чектөөлөрүнүн ордун толтуруу үчүн жөндөмдүүлүк маанилүү. Бул контекстте жөндөмдүүлүк иш-аракеттин жеңилдигин билдирет, башкача айтканда, аракет ушунчалык жеңил болгондуктан, аны мүмкүн эмес деп айтуу реалдуу эмес. Көпчүлүк колдонмолор муну атайылап колдонушат. Apple Фитнеске жөн гана бир сааттын ичинде бир мүнөт турушуңуз керек. Duolingo бир гана аяктаган сабакты талап кылат. Бул иштер мынчалык көп күч-аракетти талап кылбайт. Тоскоолдук ушунчалык төмөн болгондуктан, эң жаман күндөрүңдө да муну кыла аласың. Бирок үзгүлтүксүз стрейктин биргелешкен аракети бул сызыкты жоготуу идеясынын пайда болгон жери. PromptБул теңдемени толуктайт. Адамдар табигый түрдө унутчаак, ошондуктан, ооба, жөндөмдүүлүк бизди 90% ал жакка жеткире алат. Бирок эскертүү бизге иш-аракет кылууну эскертет. Дизайн боюнча сызыктар туруктуу, ошондуктан колдонуучуларга иш-аракет кылууну дайыма эскертип туруу керек. Тиркеме канчалык күчтүү болоорун көрүү үчүн, Duolingo колдонмонун сөлөкөтүндөгү бир аз кызыл төш белги ырааттуу колдонууну көбөйтөөрүн билүү үчүн A/B сынагын жасады. Бул күнүмдүк активдүү колдонуучулардын 6% га өсүүсүнө алып келди. Жөн эле кызыл белги. Моделдин чектөөлөрү Мунун бардыгын айтып жатканда, Фогг моделине чектөөлөр бар, мында сынчылар жана заманбап изилдөөлөр агрессивдүү билдирмелер сыяктуу эскертүүлөргө өтө көп таянган дизайн психикалык чарчоону жаратат. Үзгүлтүксүз эскертмелер жана ашыкча убакыт колдонуучулардын нааразы болушуна алып келиши мүмкүн. Ошондуктан, буга сак болгула. Зейгарник эффекти Долбоордун тапшырмасын жарым-жартылай бүтүргөндөн кийин кандай сезимде болосуз? Бул көптөгөн адамдардын кыжырын келтирет, анткени бүтпөгөн иштер биз бүтүргөн нерселерге караганда көбүрөөк психикалык мейкиндикти ээлейт. Бир нерсе бүтүп, жок болгондо, биз аны унутуп калабыз. Бир нерсе аткарылбай калганда, ал биздин акылыбызга оорчулук келтирет. Дал ушул себептен санариптик өнүмдөр Upwork профилинин бүтүрүү тилкеси сыяктуу жасалма прогресстин индикаторлорун колдонуп, колдонуучуга профили “60% гана бүттү” деп маалымдайт. Бул колдонуучуну баштаган ишин аягына чыгарууга түртөт.

Дагы бир мисалды карап көрөлү. Эмне кылуу тизмеси колдонмосунда беш тапшырмаңыз бар жана күндүн аягында алардын төртөө гана аткарылганын текшересиз. Ошол бүтпөгөн иштин айынан көбүбүз өзүбүздү бүтпөй калгандай сезебиз. Дал ошол жерде, Zeigarnik эффекти. Зейгарник эффектисин психолог Блума Зейгарник көрсөткөн, ал биз бүтпөгөн тапшырмаларды эс тутумубузда аткарылган иштерге караганда көбүрөөк активдүү сактайбыз деп сүрөттөгөн. UX дизайнында сызык үлгүсү табигый түрдө ага кирет. Сиз 63-күнү үйрөнүп жатасыз дейли. Ошол учурда, сиз бүтпөгөн бизнестин үзгүлтүксүз үлгүсүндө турасыз. Сиздин мээңиз аны сейрек унутуп калат, анткени ал акылыңыздын артында отурат. Бул учурда, мээңиз сизге эскертмелерди жөнөтүүчү болуп калат. Бул психологиялык күчтөрдү кошкондо, сызыктар эмне үчүн жөнөкөй колдонмонун өзгөчөлүгү эмес экенин чындап түшүнө баштайсыз; алар адамдын жүрүм-турумун кайра калыптандырууга жөндөмдүү. Бирок кайсы бир жерде - мен так качан болоорун айта албайм, анткени ал ар бир адам үчүн айырмаланат - нерселер "көңүлдүү" нерседен сиз жоготуп алалбай турган нерсеге өтүп кете турган чекке жетет. 58 күндүк аракет текке кетишин каалабайсызбы? Бул стриак системасын эффективдүү кылат. Эгер туура жасалса, сызыктар колдонуучуларга максатка жетүүчү таң калыштуу адаттарды түзүүгө жардам берет. Бул күн сайын окуу же спорт залга үзгүлтүксүз барып туруу болушу мүмкүн. Бул кайталанган иш-аракеттер (кээде кичинекей) убакыттын өтүшү менен кошулуп, биздин күнүмдүк жашообузда айкын болуп калат. Бирок ар бир тыйындын эки жагы бар. Адат менен мажбурлоонун ортосундагы ичке сызык Эгер сиз ээрчип жүргөн болсоңуз, анда системалардын караңгы тарабы бар экенин айта аласыз. Адаттын калыптанышы – бул кайталанма максат менен ырааттуулук. Бирок мажбурлоо – бул кереги жок, бирок коркуудан же кысымдан улам кармалып турган максаттын үстүндө иштөөнүн ырааттуулугу. Бул устарадай ичке сызык. Күн сайын эртең менен ойлонбой тишиңизди жууйсуз; ал жакшы дем алуу үчүн так максаты менен, автоматтык жана инстинктивдүү болуп саналат. Бул жакшы адаттарды пайда кылган сызык. Этикалык сызык системасы колдонуучуларга дем алуу үчүн орун берет. Эгер кандайдыр бир себептерден улам эртең менен щетка тартпасаңыз, түштө жууп койсоңуз болот. Узак күч-аракетти жоготуп алуудан коркпостон, кемчиликтерге жол берилет. Мажбурлоо карама-каршы жолду басып өтөт, мунун аркасында бир сызык сизди тынчсыздандырат, өзүңүздү күнөөлүү сезесиз же ал тургай чарчап каласыз, ал эми кээде бардык аракеттериңизге карабастан, сиз эч нерсеге жетише электей сезесиз.иш. Сиз каалаганыңыз үчүн эмес, сиздин прогрессиңиздин нөлгө кайтарылганын көрүп, аң-сезимсиз коркуп жатканыңыз үчүн аракет кыласыз. Ал тургай, кимдир бирөө муну эң сонун сүрөттөп берген: "Мен өзүмдү алдап жатканымды сездим, бирок мен эч нерсеге маани бербедим. Менин сызыгым жок эч нерсе эмесмин". Бул адамда өтө кармап туруу сызыктары болушу мүмкүн экенин көрсөтүп турат. Колдонуучулар өздөрүнүн баалуулугун баштапкы максатка же себепке эмес, ыктыярдуу метрикага байлап башташат. Стрейк, алар эмне кылып жатканына эле эмес, кимге айланат. Жакшы иштелип чыккан этикалык сызык системасы басым же милдет эмес, колдонуучуга дем берүү сыяктуу сезилиши керек. Бул ички жана тышкы мотивация балансына тиешелүү. Сырткы мотивация (тышкы сыйлыктар, жазадан качуу) колдонуучуларды баштоого түрткү бериши мүмкүн, бирок ички мотивация (испан тилин үйрөнүү сыяктуу жеке максат үчүн тапшырманы аткаруу, анткени сиз чындап сүйүктүү адамыңыз менен баарлашууну каалайсыз) узак мөөнөттүү катышуу үчүн күчтүүрөөк. Жакшы система тышкы элементтерди кылдаттык менен колдонуу менен ички мотивацияга тартылышы керек, б.а., колдонуучуларга алар канчалык деңгээлде жеткенин эскертип, аларды жоготуп коюшу мүмкүн деп коркутууга болбойт. Дагы, бул жакшы сызык. Стрейк системасын иштеп чыгууда жөнөкөй сыноо - бул чындыгында бир аз убакытты талап кылуу жана өнүмүңүз жараткан тынчсыздануу үчүн чечимдерди сатуу аркылуу өнүмдөрүңүз акча таба алабы же жокпу деп ойлонуңуз. Эгер ооба болсо, колдонуучуларды эксплуатациялоо мүмкүнчүлүгүңүз жогору. Ошентип, кийинки суроо: Эгерде мен сызыктарды колдонууну тандасам, аны колдонуучуларга өз максаттарына жетүү үчүн чындап жардам бере тургандай кылып кантип түзөм? Good Streak тутумунун дизайнынын UX Менин оюмча, бул жерде көпчүлүк долбоорлор эффективдүү сызык тутумун орнотот же аны толугу менен бузушат. Келгиле, жакшы дизайндын UX принциптерин карап көрөлү. Эң кыйынчылыксыз сактаңыз Сиз муну мурун, балким, Atomic Habits сыяктуу китептерден уккандырсыз, бирок адаттарды калыптандыруунун эң оңой жолдорунун бири бул аракетти кичинекей жана жеңил кылуу экенин белгилей кетүү керек. Бул биз Фогг жүрүм-турум моделинен талкуулаган жөндөмдүүлүк факторуна окшош. Ар кандай сызык дизайнынын биринчи эрежеси прогресске жетишүү менен талап кылынган иш-аракеттерди мүмкүн болушунча азыраак кылуу керек. Эгер күнүмдүк иш бүтүрүү үчүн эркти талап кылса, ал иш беш күндөн кийин болбойт. Неге? Сиз беш күн катары менен түрткү болушу мүмкүн эмес. Мисалы: Эгер сиз медитация колдонмосун иштетсеңиз, колдонуучуларды 20 мүнөттүк сессиядан өтүүнүн кереги жок. Анын ордуна бир мүнөт, атүгүл отуз секундга чейин аракет кылыңыз. «Кичинекей суунун тамчылары кубаттуу океанды жаратат» дегендей). Кичинекей аракеттер убакыттын өтүшү менен чоң жетишкендиктерге айланат. Бул максат болушу керек: сүрүлүүнү жок кылуу, өзгөчө учур кыйын болушу мүмкүн. Колдонуучулар стресске дуушар болгондо же чөгүп кеткенде, аларга жөн гана бир нече секундага көрүнүү аракет катары эсептелерин билсин. Таза визуалдык пикирди камсыз кылуу Адамдар табиятынан визуалдык. Көпчүлүк учурда, биз ишенүү үчүн бир нерсени көрүшүбүз керек; аларды жакшыраак түшүнүү жана нерселерди перспективага салуу үчүн нерселерди визуализациялоо зарылчылыгы бар. Мына ошондуктан сызык үлгүлөрү аракетти визуалдаштыруу үчүн графиктер, белгилер, прогресс шакекчелери жана торчо сыяктуу визуалдык элементтерди колдонушат. GitHub'тун салым графигин караңыз. Бул ырааттуулуктун жөнөкөй визуализациясы. Бирок иштеп чыгуучулар аны кычкылтек сыяктуу дем алышат.

Негизги нерсе - сызык системасын абстракттуу сезүү эмес. Бул чыныгы жана табылган сезилиши керек. Мисалы, Duolingo жана Apple'дин Фитнес иш-аракети шакекчелери сызык аяктагандан кийин таза анимация дизайнын колдонушат жана GitHub колдонуучунун убакыттын өтүшү менен ырааттуулугунун тарыхый маалыматтарын көрсөтөт.

Жакшы убакытты колдонуңуз Мен жогоруда айтып өткөн элем, адамдар көбүнчө табиятынан унутчаак, ал эми эскертүүлөр алдыга умтулууга жардам берет. Кошумчалар жок, көпчүлүк жаңы колдонуучулар улантууну унутуп коюшат. Жашоо алек болушу мүмкүн, мотивация жоголуп, нерселер болуп калат. Ал тургай, көптөн бери колдонуучулар да сунуштардан пайда көрүшөт, бирок көбүнчө алар адаттагы циклдин ичинде кулпуланган. Ошого карабастан, эң берилген адам да кокусунан бир күндү өткөрүп жибериши мүмкүн. Сиздин сызык тутумуңуз сөзсүз түрдө эстеткичтерге муктаж. Эң көп колдонулган эскерткичтер бул push эскертмелери. Push эскертмелери менен иштөөдө убакыт абдан маанилүү. Колдонмонун түрү да маанилүү. Саат 9да "Сиз бүгүн көнүгүү жасаган жоксуз" деп эскертме жөнөтүү окуу колдонмосу үчүн таң калыштуу, анткени көптөрдүн сабакты бүтүрүү жөнүндө ойлоно электе бир күнү кыла турган иштери бар. Эгерде биз фитнес колдонмосу жөнүндө сөз кыла турган болсок, анда алакылга сыярлык жана, балким, ал тургай, эрте күнү эскертилиши күтүлүүдө. Push эскертмелери колдонмо категориясы боюнча бир топ айырмаланат. Мисалы, фитнес колдонмолору эртең мененки эскертмелерди (7–8.00) көбүрөөк тартууну көрүшөт, ал эми өндүрүмдүүлүк колдонмолору түштө жакшыраак иштеши мүмкүн. Негизгиси - бардыгына бирдей ылайыктуу деп ойлобостон, A/B колдонмоңуздун убактысын колдонуучуларыңыздын жүрүм-турумуна жараша сынап көрүү. Медитация колдонмосу үчүн иштеген нерсе коддоочу трекер үчүн иштебеши мүмкүн. Башка ыкчам ыкмалар - бул колдонмо сөлөкөтүндөгү кызыл чекиттер жана ал тургай колдонмо виджеттери. Изилдөөлөр ар кандай, бирок орточо адам күнүнө 50-150 жолу (PDF) ортосунда аппараттын кулпусун ачат. Колдонуучу телефонунун кулпусун ачкан сайын учурдагы сызыкты көрсөткөн колдонмодо же виджетте кызыл чекит көрсө, бул милдеттенмени жогорулатат. жөн гана ашыкча кылба; эскертүү наг эмес, эскертүү катары кызмат кылышы керек. Милдеттерди майрамдоо Стрейк системасы эмоцияларды кайра жандыруу үчүн маанилүү этаптарды белгилөөгө аракет кылышы керек, айрыкча колдонуучулар үчүн. Колдонуучу 7-күн, 30-күн, 50-күн, 100-күн, 365-күнгө жеткенде, сиз андан чоң иш жасашыңыз керек. Жетишкендиктерди ырастоо - өзгөчө узак убакыт колдонуучулар үчүн.

Мурда көргөнүбүздөй, Duolingo муну түшүнүп, конфетти менен маанилүү учурларды белгилеген анимациялык графиканы ишке ашырды. Кээ бир платформалар колдонуучулардын аракеттерин тастыктаган олуттуу бонустук сыйлыктарды беришет. Жана бул колдонмолор үчүн пайдалуу болушу мүмкүн, ошондуктан колдонуучулар социалдык медиада өздөрүнүн маанилүү учурларын ачык бөлүшүшөт. Дагы бир артыкчылыгы - этаптарга жеткенге чейин күтүү. Бул жөн гана чексиз тирүү сызык эмес; колдонуучулар чыдамсыздык менен күтө турган нерсе бар. Grace механизмдерин колдонуңуз Жашоо күтүүсүз. Адамдар алаксып калышат. Ар кандай жакшы сызык системасы кемчиликтерди күтүшү керек. Стрейк системасына эң чоң психологиялык коркунучтардын бири бул бир эле өткөрүп жиберилген күндөн кийин нөлгө кайтаруу. "Этикалык" сызык системасы колдонуучуга бир аз боштук бериши керек. Сиз 90 күндүк шахматты үйрөндүңүз дейли. Үч ай бою ырааттуу иштедиңиз, бир күнү телефонуңуз саякаттап жүрүп өлүп калат жана 90 0го айланат — баары, бардык күч-аракеттер өчүрүлүп, прогресс жок болот. Колдонуучу толугу менен бузулушу мүмкүн. Аны нөлдөн баштап кайра куруу жөнүндөгү ой ушунчалык деморализациялангандыктан, күч-аракеттин кереги жок. Эң жаманы, колдонуучу өзүн ийгиликсиз сезгенден кийин колдонмодон баш тартышы мүмкүн. Стрейк тутумуңузга "ырайым" механизмин кошууну карап көрүңүз:

Streak Freeze Колдонуучуларга жазасыз бир күндү атайылап өткөрүп жиберүүгө уруксат бериңиз. Кошумча убакыт Калыбына келтирүүнү баштоодон мурун кадимки мөөнөттөн бир нече саат (2–3) өткөнгө уруксат бериңиз. Decay Models Катуу баштапкы абалга келтирүүнүн ордуна, сызык бир азга азаят, мис., 10 күн өткөрүп жиберилген күнүнө сызыктан кемилет.

Күч берүүчү тонду колдонуңуз Келгиле, сызык үзүлгөндө колдонуучуларга көрсөтүлгөн эки билдирүүнү салыштырып көрөлү:

"Сиз 42 күндүк серияңызды жоготтуңуз. Кайра баштаңыз." "Сиз 42 күн түз келдиңиз. Бул укмуштуудай прогресс! Дагы бир жолу аракет кылып көргүңүз келеби?"

Экөө тең бирдей маалыматты берет, бирок эмоционалдык таасири ар башка. Биринчи билдирүү, кыязы, колдонуучуну депрессияга алып, аны таштап кетүүгө себеп болот. Экинчи билдирүү буга чейин жетишилген нерсени белгилейт жана колдонуучуну кайра аракет кылууга үндөйт. Streak Systems Design Challenges Стрейк системасын куруунун техникалык өзгөчөлүктөрүнө кирүүдөн мурун, сиз туш болушу мүмкүн болгон кыйынчылыктарды билишиңиз керек. Сиз күткөндөй нерселер татаалдашы мүмкүн. Убакыт алкактарын иштетүү Убакытты жана датаны иштетүү иштеп чыгуучулар чечүүчү эң татаал түшүнүктөрдүн бири экендигинин себеби бар. Форматтоо, интернационалдаштыруу жана башка көптөгөн нерселер бар. Мен сизге мындай суроо берейин: бир күн деген эмне? Биз дүйнө ар кандай убакыт алкактарында иштей турганын билебиз жана бул аздык кылгандай, кээ бир аймактарда жылына эки жолу болгон жайкы убакыт (DST) бар. Сиз бул четки иштерди кайдан баштайсыз? Эртеңки күндүн "башталышы" эмнени билдирет? Кээ бир иштеп чыгуучулар UTC сыяктуу бир борбордук убакыт алкагын колдонуу менен мындан качууга аракет кылышат. Кээ бир колдонуучулар үчүн бул туура натыйжаларды берет, бирок кээ бирлери үчүн ал бир саатка, эки саатка же андан көпкө өчүрүлүшү мүмкүн. Бул ыраатсыздык колдонуучу тажрыйбасын бузат. Колдонуучулар сиздин көшөгө артындагы убакытты кантип чечкениңизге анча маани бербейт; алар күткөн нерсе, эгерде алар саат 23:40та сызык аракетин жасашса, анда ал так ошол убакта, алардын контекстинде катталышы керек. Сиз "бир күндү" сервердик убакытка эмес, колдонуучунун жергиликтүү убакыт алкагына жараша аныкташыңыз керек. Албетте, сиз оңой эле ала аласызтүн жарымында UTC бардык колдонуучулар үчүн глобалдык сызыктарды багыттоо жана баштапкы абалга келтирүү, бирок сиз абдан адилетсиздикти жаратып жатасыз. Калифорнияда кимдир бирөө Лондондо жашаган бирөөгө караганда тапшырмасын аткаруу үчүн ар дайым сегиз кошумча сааты бар. Бул айрым колдонуучуларды жайгашкан жеринен улам жазалаган адилетсиз дизайн кемчилиги. Ал эми Лондондо ал киши жөн гана зыярат кылып, тапшырманы аткарып, анан башка убакыт алкагына кайтып келсечи? Булардын бардыгынын натыйжалуу чечимдеринин бири - колдонуучулардан борт учурунда алардын убакыт алкагын так коюусун сурануу (биринчи аутентификациядан кийин жакшыраак). Убакыт алкагынын маалыматын берүү жеке аныктоочу маалымат катары колдонулбастан, прогресске так көз салуу үчүн колдонмо үчүн гана колдонулат деген тымызын эскертүүнү кошуу жакшы идея. Жана бул өзгөрүлмө параметр кылуу үчүн дагы бир жакшы идея. Мен кимдир бирөө колдонмодо убакыт алкагынын логикасын түз иштетүүдөн качууну сунуштайм. Moment.js же pytz (Python) жана башкалар сыяктуу сыналган жана чыныгы даталар китепканаларын колдонуңуз. Бул сыяктуу татаал нерсе үчүн дөңгөлөктү кайра ойлоп табуунун кереги жок. Өткөрүлбөгөн күндөр жана четтөөлөр Сиз тынчсызданышы керек болгон дагы бир кыйынчылык - колдонуучулардын ашыкча уктап калышы, сервердин иштебей калышы, артта калуу, тармактын бузулушу жана башкалар сыяктуу көзөмөлдөнбөй турган учурлар. Биз мурда талкуулагандай, ырайым механизмдери идеясын колдонуу жардам берет. Эки сааттык жеңилдик терезеси колдонуучуга да, иштеп чыгуучуга да жардам бериши мүмкүн, башкача айтканда, колдонуучулар көзөмөлдөнбөгөн турмуштук жагдайлар үчүн катуу жазаланбайт. Түн ортосунда сервер иштебей калган учурда, иштеп чыгуучулар үчүн ырайымдуу терезелер жардам берет. Баарынан маанилүүсү, кардарга эч качан ишенбеңиз. Ар дайым сервер тарабында текшериңиз. Сервер чындыктын жалгыз булагы болушу керек. Алдануунун алдын алуу Дагы бир жолу, мен муну жетиштүү түрдө баса албайм: бардыгын сервер тарабында текшериңиз. Колдонуучулар адамдар жана мүмкүнчүлүк болсо, адамдар алдашы мүмкүн. Бул сөзсүз болот. Сиз аракет кылышыңыз мүмкүн:

Бардык аракеттерди UTC timetamps менен сактоо. Кардар жергиликтүү убакытты жөнөтө алат, бирок сервер аны дароо UTCге өзгөртүп, сервер убактысын текшере алат. Ошентип, эгерде кардардын убакыт белгиси шектүү алыс болсо, система аны ката катары четке кагып, UI ошого жараша жооп бере алат. Окуяга негизделген көз салууну колдонуу. Башкача айтканда, колдонуучунун идентификатору, аткарылган иш-аракеттин түрү, убакыт белгиси жана убакыт алкагы сыяктуу маалыматтарды камтыган метаберилиштер менен ар бир аракеттин рекордун сактаңыз. Бул текшерүүгө жардам берет.

Streak системасынын кыймылдаткычын куруу Бул код окуу куралы эмес, андыктан мен сизге бир топ кодду төгүүдөн качам. Мен муну практикалык жактан сактап калам жана архитектура, агым жана ишенимдүүлүк жагынан жалпысынан сызык системасынын кыймылдаткычын кандайча иштетээрин сүрөттөп берем. Негизги архитектура Мен бир нече жолу айткандай, серверди сызык маалыматтары үчүн чындыктын бирдиктүү булагы кылыңыз. Архитектура серверде ушундай болушу мүмкүн:

Ар бир колдонуучунун маалымат базасында сактаңыз. Учурдагы сызык сактагычын (демейки 0) бүтүн сан катары сактаңыз. Убакыт алкагынын артыкчылыктарын, б.а., IANA Убакыт алкагынын сабын сактаңыз (же жергиликтүү убакыт белгисинен же ачык түрдө колдонуучудан убакыт алкагын тандоосун сурануу менен). Мисалы, "Америка/Нью_Йорк". Колдонуучунун жергиликтүү убакыт алкагына салыштырмалуу убакыт алкагын текшерүү менен, сызык улана береби же үзүлөөрүн аныктоо үчүн бардык логиканы колдонуңуз.

Ошол эле учурда, кардар тарапта:

Адатта серверден алынган учурдагы сызыкты көрсөтүү. Колдонуучу чындыгында квалификациялуу сызык аракетин аткарганын текшерүү үчүн серверге метадайындар түрүндө аткарылган аракетти жөнөтүңүз. Сервердин жоопторунун негизинде визуалдык пикирди бериңиз.

Ошентип, кыскача айтканда, мээ серверде, ал эми кардар көрсөтүү максатында жана окуяларды тапшыруу үчүн. Бул көптөгөн мүчүлүштүктөрдөн жана четтөөлөрдөн сактайт, ошондой эле жаңыртууларды жана оңдоолорду жеңилдетет. Логикалык агым Колдонуучу бир иш-аракетти аяктаганда минималдуу эффективдүү системанын кыймылдаткычы кандай болорун имитациялайлы:

Колдонуучу квалификациялык сызык аракетин аяктайт. Кардар окуяны серверге метадайындар катары жөнөтөт. Бул "X колдонуучу Y убакыт белгисиндеги Y аракети" болушу мүмкүн. Сервер бул окуяны кабыл алат жана негизги текшерүүнү жүргүзөт. Бул чыныгы колдонуучубу? Алар ырасталганбы? Акция жарактуубу? Убакыт алкагы шайкеш келеби? Эгер бул өтүп кетсе, сервер маалымат базасынан колдонуучунун сызык маалыматтарын чыгарып алат. Андан кийин, кабыл алынган аракет убакыт белгисин колдонуучунун жергиликтүү убакыт алкагына айландырыңыз. Серверге колдонуучунун жергиликтүү убакыт алкагындагы календарлык даталарды (убакыт белгилерин эмес) салыштырууга уруксат бериңиз: Эгерде ал ошол эле күнү болсо, анда аракет ашыкча болуп саналат жана эч кандай өзгөрүү жоксызык. Эгерде ал кийинки күнү болсо, анда сызык 1ге көбөйөт. Бир күндөн ашык боштук болсо, сызык үзүлөт. Бирок, бул жерде сиз ырайым механикасын колдонсоңуз болот. Эгерде ырайым механизми өтүп кетсе, анда сызыкты 1ге кайтарыңыз.

Эгерде сиз жетишкендиктер үчүн тарыхый дайындарды сактоону тандасаңыз, анда "эң узун сызык" же "жалпы активдүү күндөр" сыяктуу өзгөрмөлөрдү жаңыртыңыз. Андан кийин сервер маалымат базасын жаңыртат жана кардарга жооп берет. Бул сыяктуу бир нерсе:

{ "current_streak": 48, "эң узун_сызык": 50, "жалпы_активдүү_күндөр": 120, "streak_extended": чын, }

Кошумча чара катары сервер кайра аракет кылып же четке кагып, процесстин жүрүшүндө эч нерсе болбой калганда кардарга кабарлашы керек. Туруктуулук үчүн курулуш Мурда айтылгандай, колдонуучулар мүчүлүштүктөрдөн же сервердин иштебей калышынан улам бир сызыктан айрылып калышат, бул коркунучтуу UX жана колдонуучулар мунун кулашын күтүшпөйт. Ошентип, сиздин сызык тутумуңуз ошол сценарийлер үчүн коргоого ээ болушу керек. Сервер техникалык тейлөө үчүн иштебей калса (же кандайдыр бир себеп менен), иш-аракеттер кеч тапшырылып, эсептелип калышы үчүн, аны оңдоо үчүн кошумча сааттардын убактылуу терезесине уруксат бериңиз. Сиз ошондой эле колдонуучуларга кабарлоону тандай аласыз, өзгөчө кырдаал уланып жаткан сызыкка таасир эте алат. Эскертүү: Дайындарды кол менен калыбына келтире турган администратордук бэкдорду түзүңүз. Мүчүлүштүктөр сөзсүз болот жана кээ бир колдонуучулар колдонмоңузга телефон чалып же алардын сызыгы алар көзөмөлдөй албаган себептерден улам үзүлгөнүн колдоо үчүн кайрылышат. Тергөөдөн кийин колдонуучу туура болсо, сызыктарды кол менен калыбына келтире аласыз. Корутунду Бир нерсе ачык бойдон калууда: Streaks чынында эле күчтүү, анткени адам психологиясы фундаменталдык деңгээлде иштейт. Эң мыкты сызык системасы - бул колдонуучулар аң-сезимдүү түрдө ойлонбогон система. Бул үзгүлтүксүз көнүмүш адатка айланган тиштерди тазалоо сыяктуу дароо натыйжалардын же көрүнөө прогресстин көнүмүш адаты болуп калды. Мен жөн гана айтып коёюн: бардык өнүмдөрдүн сызык системасы керек эмес. Күнүмдүк активдүү колдонуучуларды кааласаңыз, чындап эле ырааттуулукту талап кылышыңыз керекпи? Жооп абдан жакшы болушу мүмкүн "жок".

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