Kuring yakin anjeun geus ngadéngé corétan atawa dipaké hiji aplikasi kalawan hiji. Tapi kantos heran naha corétan janten populer sareng kuat? Nya, aya anu écés yén aplikasi hoyong pisan perhatian anjeun, tapi salian ti éta, naha anjeun terang yén nalika aplikasi diajar populér Duolingo ngenalkeun widget ios pikeun nampilkeun coretan, komitmen pangguna ningkat ku 60%. Genep puluh persén mangrupakeun shift masif dina kabiasaan sarta mendemonstrasikan kumaha "streak" pola bisa dipaké pikeun ngaronjatkeun Dursasana sarta pamakéan drive. Dina dasarna, streak nyaéta jumlah poé padeukeut nu hiji pamaké ngalengkepan hiji aktivitas husus. Sababaraha urang ogé ngartikeun éta salaku kabiasaan "gamified" atanapi métrik anu dirancang pikeun ngadorong panggunaan anu konsisten. Tapi corétan ngalangkungan saluareun métrik atanapi catetan dina aplikasi; éta leuwih psikologis ti éta. Naluri manusa gampang dipangaruhan ku faktor anu leres. Tingali tilu faktor ieu: kamajuan, kareueus, sareng sieun leungit (biasana disebut FOMO). Naon anu sadayana ieu gaduh umum? usaha. Beuki usaha anjeun nempatkeun kana hiji hal, beuki ngabentuk idéntitas anjeun, sareng éta kumaha corétan nyebrang kana dunya psikologi paripolah. Ayeuna, kalayan kakuatan anu ageung aya tanggung jawab anu ageung, sareng kusabab éta, aya sisi poék pikeun corétan. Dina artikel ieu, urang bakal bade kana psikologi, UX, sarta prinsip desain balik ngawangun sistem streak éféktif. Urang bakal nempo (1) naha brains urang ampir instinctively ngabales aktivitas streak, (2) kumaha mendesain corétan dina cara nu genuinely mantuan pamaké, jeung (3) karya teknis aub dina ngawangun pola streak. Psikologi Tukangeun Streaks Pikeun ngarancang sareng ngawangun sistem streak anu épéktip, urang kedah ngartos kumaha éta saluyu sareng kumaha kabel otak urang. Siga, naon anu ngajantenkeun efektif dugi ka urang ngarasa dedikasi anu kuat pikeun ngajagi corétan urang? Aya tilu metot, prinsip psikologi well-documented nu ngarojong naon ngajadikeun corétan jadi kuat sarta adiktif. Kaleungitan Aversion Ieu meureun gaya neneng balik corétan. Kuring nyebutkeun ieu sabab lolobana kali, Anjeun ampir teu bisa nyingkahan ieu dina kahirupan. Pikirkeun cara kieu: Upami babaturan masihan anjeun $ 100, anjeun bakal bagja. Tapi upami anjeun kaleungitan $ 100 tina dompét anjeun, éta bakal langkung parah. Beurat émosional tina kaayaan éta henteu sami. Karugian langkung nyeri tibatan kauntungan. Hayu urang nyandak eta salajengna jeung nyebutkeun yén kuring masihan anjeun $ 100 jeung nanya ka maen judi a. Aya 50% kasempetan Anjeun meunang sejen $ 100 sarta 50% kasempetan Anjeun leungit aslina $ 100. Dupi anjeun nyandak eta? Abdi henteu. Kalolobaan jalma henteu. Éta aversion leungitna. Lamun dipikir-pikir, éta logis, éta kaharti, éta manusa. Konsep di balik leungitna leungitna nyaéta yén urang ngarasa nyeri kaleungitan hiji hal dua kali saloba pelesir meunang hiji hal tina nilai sarua. Dina istilah psikologis, leungitna lingers leuwih ti gains do. Anjeun panginten tiasa ningali kumaha hubungan ieu sareng corétan. Pikeun ngawangun streak noticeable, merlukeun usaha; salaku streak tumuwuh, motivasi balik eta mimiti luntur; atawa leuwih akurat, dimimitian jadi sekundér. Ieu conto: Ucapkeun sobat anjeun gaduh tilas tilu dinten nutup "Cingcin Pindah" dina Apple Watch na. Aranjeunna ampir teu aya rugi saluareun kahayang pikeun ngahontal tujuanana sareng konsisten. Dina waktos anu sami, anjeun gaduh streak 219 dinten anu pikaresepeun. Chances aya nu trapped ku sieun leungit eta. Anjeun paling dipikaresep teu mikir ngeunaan prestasi dina titik ieu; éta langkung lengkep ihwal ngajaga anjeun invested usaha , tur éta karanjingan leungitna. Duolingo ngécéskeun kumaha henteuna leungitna nyumbang kana horéam pamaké pikeun megatkeun streak panjang, sanajan dina poé laziest maranéhna. Ku jalan kitu, streak tiasa janten kabiasaan nalika teu resep kaleungitan. Modél Paripolah Fogg (B = MAP) Ayeuna urang ngartos sieun kaleungitan usaha anu diinvestasikeun dina coretan anu langkung panjang, patarosan sanésna nyaéta: Naon anu ngajantenkeun urang ngalakukeun hal éta di tempat anu mimiti, unggal dinten, bahkan sateuacan tilasna ageung? Éta naon Modél Paripolah Fogg ngeunaan. Ieu relatif basajan. Paripolah (B) ngan lumangsung nalika tilu faktor - Motivasi (M), Kamampuhan (A), sareng Prompt (P) - align dina waktos anu sami. Ku kituna, persamaan B=MAP. Upami salah sahiji faktor ieu, bahkan hiji, leungit dina waktos éta, paripolahna moal kajantenan. Janten, pikeun sistem streak janten épisién sareng ngulang deui, sadayana tilu faktor kedah aya: MotivasiIeu rapuh sareng sanés hal anu konsistén hadir. Aya poé nalika anjeunngompa diajar Spanyol, sarta poé anjeun malah teu ngarasa hiji iota tina willpower diajar basa. Motivasi sorangan pikeun ngawangun kabiasaan teu bisa diandelkeun sareng perang kaleungitan ti mimiti dinten. Kamampuhan Pikeun ngimbangan watesan motivasi, kamampuan penting. Dina kontéks ieu, kamampuan hartosna gampangna tindakan, nyaéta, usahana gampang pisan sahingga teu realistis nyarios yén éta henteu mungkin. Kalolobaan aplikasi ngahaja ngagunakeun ieu. Apple Fitness ngan ukur peryogi anjeun nangtung samenit dina sajam pikeun kéngingkeun centang ka tujuan Stand anjeun. Duolingo ngan butuh hiji palajaran réngsé. Tugas-tugas ieu henteu peryogi seueur usaha. Panghalangna rendah pisan bahkan dina dinten anu paling parah anjeun tiasa ngalakukeunana. Tapi usaha gabungan tina streak anu lumangsung nyaéta dimana ide pikeun kaleungitan streak éta. PromptThis anu ngalengkepan persamaan. Manusa sacara alami poho, jadi enya, kamampuhan bisa meunangkeun urang 90% aya. Tapi hiji ajakan reminds kami pikeun meta. Streaks anu pengkuh ku desain, jadi pamaké kudu terus ngingetkeun pikeun meta. Pikeun ningali kumaha kuatna hiji ajakan, Duolingo ngalakukeun tés A/B pikeun ningali naha lencana beureum saeutik dina ikon aplikasi ningkat pamakean anu konsisten. Éta ngahasilkeun paningkatan 6% dina pangguna aktif sapopoé. Ngan badge beureum. Watesan modél Sadayana ieu nyarios, aya watesan pikeun modél Fogg dimana para kritikus sareng panilitian modéren perhatikeun yén desain anu ngandelkeun pisan kana pituduh, sapertos béwara agrésif, résiko nyiptakeun kacapean méntal. Bewara anu terus-terusan sareng lembur tiasa nyababkeun pangguna churn. Janten, awas éta. Pangaruh Zeigarnik Kumaha parasaan anjeun nalika anjeun ninggalkeun tugas proyék satengah rengse? Éta ngaganggu seueur jalma sabab tugas-tugas anu teu acan réngsé nyicingan langkung rohangan méntal tibatan hal-hal anu urang réngsé. Lamun hiji hal geus rengse tur musna, urang condong poho eta. Nalika hiji hal anu ditinggalkeun undone, éta condong beuratna dina pikiran urang. Éta pisan sababna naha produk digital nganggo indikator kamajuan jieunan, sapertos bar parantosan profil Upwork, pikeun masihan pangguna yén profilna ngan ukur "60% lengkep". Éta ngadorong pangguna pikeun ngabéréskeun naon anu aranjeunna ngamimitian.
Hayu urang nempo conto sejen. Anjeun gaduh lima pancén dina aplikasi daptar tugas, sareng dina ahir poé, anjeun ngan ukur pariksa opat di antarana saatos réngsé. Loba urang bakal ngarasa unaccomplished alatan hiji tugas nu can réngsé. Éta, di dinya, nyaéta pangaruh Zeigarnik. Pangaruh Zeigarnik dibuktikeun ku psikolog Bluma Zeigarnik, anu ngajelaskeun yén urang condong ngajaga tugas anu teu lengkep aktip dina mémori urang langkung lami tibatan tugas anu réngsé. Pola streak sacara alami ngetok ieu dina desain UX. Anggap anjeun dina dinten 63 tina streak diajar. Dina waktos éta, anjeun nuju dina pola usaha anu teu acan réngsé. Otak anjeun bakal jarang mopohokeun éta sabab aya dina tonggong pikiran anjeun. Dina titik ieu, uteuk anjeun janten anu ngirim béwara ka anjeun. Nalika anjeun ngahijikeun kakuatan psikologis ieu, anjeun mimiti ngartos naha corétan henteu ngan ukur fitur aplikasi biasa; aranjeunna sanggup reshaping kabiasaan manusa. Tapi tempat sapanjang garis - Abdi teu bisa nyebutkeun persis iraha, sabab béda for everyone - hal ngahontal hiji titik dimana streak a shifts tina "senang" kana hal anjeun ngarasa anjeun teu bisa mampuh leungit. Anjeun teu hoyong 58 dinten usaha pikeun runtah, naha anjeun? Éta naon ngajadikeun sistem streak éféktif. Upami dilakukeun leres, streak ngabantosan pangguna ngawangun kabiasaan anu luar biasa anu ngahontal tujuan. Bisa jadi maca poean atawa nganiaya gim konsistén. Ieu lampah terus-terusan (kadangkala leutik) majemuk kana waktu jeung jadi dibuktikeun dina kahirupan urang sapopoé. Tapi aya dua sisi pikeun unggal koin. Garis Ipis Antara Kabiasaan Jeung Paksaan Upami anjeun parantos nuturkeun, anjeun parantos tiasa nyarios yén aya sisi poék pikeun sistem streak. Formasi kabiasaan nyaéta ngeunaan konsistensi sareng tujuan anu diulang. Paksaan, kumaha oge, nyaéta konsistensi pikeun ngerjakeun tujuan anu henteu diperyogikeun deui tapi dilaksanakeun kusabab kasieun atanapi tekanan. Ieu garis agul-ipis. Anjeun sikat huntu anjeun unggal isuk tanpa mikir; éta otomatis tur nurut naluri, kalawan tujuan jelas ngabogaan napas alus. Éta tilas anu ngabentuk kabiasaan anu saé. Sistem streak etika masihan pangguna rohangan pikeun ngambekan. Upami, kusabab sababaraha alesan, anjeun henteu nyikat isuk-isuk, anjeun tiasa nyikat siang. Imperfection diidinan tanpa sieun kaleungitan usaha anu panjang. Paksaan nyokot jalur sabalikna, whereby a streak ngajadikeun anjeun hariwang, anjeun ngarasa kaliru atawa malah exhausted, sarta kadangkala, karasaeun kawas anjeun teu acan dilakonan nanaon, sanajan sakabeh anjeun.gawé. Anjeun kalakuan henteu kusabab anjeun hoyong, tapi kusabab anjeun teu sadar sieun ningali kamajuan anjeun reset ka nol. Batur malah digambarkeun ieu sampurna, "Kuring ngarasa yén kuring ieu selingkuh, tapi ngan saukur teu paduli. Kami nanaon tanpa tilas kuring ". Ieu nembongkeun corétan tahan ekstrim bisa mibanda on hiji individu. Pikeun extent yén pamaké ngawitan dasi harga diri maranéhna pikeun métrik sawenang tinimbang tujuan aslina atawa alesan maranéhna ngamimitian tilas di tempat munggaran. The streak janten saha aranjeunna, teu ngan naon maranéhna ngalakukeun. Sistem streak etika anu dirancang kalayan saé kedah janten dorongan pikeun pangguna, sanés tekanan atanapi kawajiban. Ieu patali jeung kasaimbangan motivasi intrinsik jeung ekstrinsik. Motivasi ekstrinsik (ganjaran éksternal, ngahindarkeun hukuman) tiasa ngamimitian pangguna, tapi motivasi intrinsik (ngalakukeun tugas pikeun tujuan pribadi sapertos diajar basa Spanyol sabab anjeun leres-leres hoyong komunikasi sareng anu dipikacinta) langkung kuat pikeun papacangan jangka panjang. Sistem anu saé kedah condong kana motivasi intrinsik kalayan ati-ati ngagunakeun unsur ekstrinsik, nyaéta, ngingetkeun pangguna ngeunaan sabaraha jauh aranjeunna sumping, henteu ngancem aranjeunna ku naon anu bakal leungit. Sakali deui, éta mangrupikeun garis anu saé. Tés saderhana nalika ngarancang sistem streak nyaéta nyandak sababaraha waktos sareng mikir naha produk anjeun ngahasilkeun artos ku ngajual solusi pikeun kahariwang yén produk anjeun diciptakeun. Upami enya, aya kamungkinan luhur anjeun ngeksploitasi pangguna. Janten patarosan salajengna janten, Upami kuring milih ngagunakeun streak, kumaha kuring mendesain éta ku cara anu leres-leres ngabantosan pangguna pikeun ngahontal tujuanana? The UX of Good Streak System Design Kuring yakin ieu tempat paling proyék boh kuku hiji sistem streak éféktif atawa sagemblengna mess eta up. Hayu urang ngaliwat sababaraha prinsip UX ngeunaan desain streak anu saé. Tetep Ieu Effortless Anjeun panginten kantos ngupingkeun ieu, panginten tina buku sapertos Kabiasaan Atom, tapi kedah disebatkeun yén salah sahiji cara anu paling gampang pikeun ngawujudkeun kabiasaan nyaéta ku ngadamel tindakan anu alit sareng gampang. Ieu sami sareng faktor kamampuan anu urang bahas tina Modél Paripolah Fogg. Aturan kahiji tina sagala desain streak kedah ngadamel tindakan anu dibutuhkeun sakedik-gancang manusa bari tetep ngahontal kamajuan. Upami tindakan sadinten peryogi tekad pikeun réngsé, tindakan éta moal dugi ka lima dinten. Naha? Anjeun teu tiasa ngamotivasi lima dinten berturut-turut. Kasus: Upami anjeun ngajalankeun aplikasi meditasi, anjeun henteu kedah ngajantenkeun pangguna ngalangkungan sési 20 menit ngan ukur pikeun ngajaga tilas. Coba hiji menit, meureun malah hal sakumaha leutik sakumaha tilu puluh detik, gantina. Sakumaha ceuk paribasa, saeutik tetes cai ngajadikeun sagara perkasa). usaha leutik compile kana prestasi badag kalawan waktu. Éta kedah janten tujuan: ngaleungitkeun gesekan, khususna nalika momen sesah. Lamun pamaké keur stressed atawa overwhelmed, hayu aranjeunna nyaho yén saukur némbongkeun up, sanajan pikeun sababaraha detik, diitung salaku usaha. Nyadiakeun Eupan Balik Visual Jelas Manusa anu visual ku alam. Seringna, urang kedah ningali anu dipercaya; Aya peryogi pikeun ngabayangkeun hal-hal pikeun ngartos aranjeunna langkung saé sareng nempatkeun hal-hal kana sudut pandang. Ieu sababna pola streak sering nganggo elemen visual, sapertos grafik, tanda centang, cincin kamajuan, sareng grid, pikeun ngabayangkeun usaha. Tingali dina grafik kontribusi GitHub. Ieu mangrupakeun visualisasi basajan tina konsistensi. Acan pamekar ngambekan eta di kawas oksigén.
Koncina henteu ngajantenkeun sistem streak karasa abstrak. Sakuduna ngarasa nyata jeung earned. Salaku conto, cingcin kagiatan Duolingo sareng Kabugaran Apple nganggo desain animasi anu bersih nalika parantosan tilas, sareng GitHub nunjukkeun data sajarah konsistensi pangguna kana waktosna.
Paké Timing Good Kuring disebutkeun saméméhna yén manusa umumna pohoan ku alam, sarta yén ajakan bisa mantuan ngajaga moméntum ka hareup. Tanpa ajakan, kalolobaan pangguna énggal hilap teraskeun. Kahirupan tiasa sibuk, motivasi ngaleungit, sareng aya kajadian. Malahan pangguna anu lami-lami nguntungkeun tina pituduh, sanaos seringna, aranjeunna parantos dikonci di jero gelung kabiasaan. Tapi, sanajan jalma anu paling komitmen tiasa ngahaja sono sadinten. Sistem streak anjeun pasti peryogi panginget. Panginget ajakan anu paling sering dianggo nyaéta béwara push. Timing penting pisan nalika damel sareng bewara push. Jinis aplikasi ogé penting. Ngirim béwara jam 9 énjing nyarios "Anjeun teu acan latihan dinten ayeuna" ngan aneh pikeun aplikasi diajar sabab seueur anu kedah dilakukeun dina dinten sateuacan aranjeunna mikirkeun pikeun ngarengsekeun pelajaran. Upami urang nyarioskeun aplikasi kabugaran, sanaosnyaeta lumrah tur meureun malah diperkirakeun ngingetkeun tadi beurang. Bewara push béda-béda sacara signifikan dumasar kana kategori aplikasi. Aplikasi kabugaran, contona, ningali keterlibatan anu langkung luhur sareng béwara énjing-énjing (7–8 AM), sedengkeun aplikasi produktivitas tiasa langkung saé dina awal beurang. Koncina nyaéta pikeun nguji A/B waktos aplikasi anjeun dumasar kana paripolah pangguna anjeun tinimbang nganggap hal-hal anu pas-sadayana. Naon anu dianggo pikeun aplikasi meditasi panginten henteu tiasa dianggo pikeun tracker coding. Métode ajakan anu sanés nyaéta titik-titik beureum dina ikon aplikasi sareng bahkan widget aplikasi. Studi rupa-rupa, tapi rata-rata jalma muka konci alatna antara 50-150 kali sapoé (PDF). Upami pangguna ningali titik beureum dina aplikasi atanapi widget anu nunjukkeun tilas ayeuna unggal muka konci teleponna, éta bakal ningkatkeun komitmen. Ngan ulah overdo eta; ajakan kudu ngawula ka salaku panginget, moal nag. Ngagungkeun Milestones Hiji sistem streak kedah nyobian ngagungkeun milestones pikeun reignite émosi, utamana pikeun pamaké jero kana streak a. Lamun pamaké pencét Poé 7, Poé 30, Poé 50, Poé 100, Poé 365, Anjeun kudu nyieun deal badag kaluar ti eta. Ngaku prestasi - utamana pikeun pamaké lila.
Salaku urang nempo saméméhna, Duolingo ilahar ieu kaluar sarta ngalaksanakeun hiji grafik animasi nu celebrates milestones kalawan confetti. Sababaraha platform malah masihan ganjaran bonus penting nu sangkan méré konfirmasi usaha pamaké '. Sareng ieu tiasa aya mangpaatna pikeun aplikasi, sapertos pangguna condong ngabagi tonggakna sacara umum dina média sosial. Kauntungan sejen nyaeta antisipasi anu datang saméméh ngahontal milestones. Ieu mah sakadar ngajaga tilas hirup endlessly; pamaké boga hal pikeun kasampak maju ka. Paké Grace Mékanisme Hirup teu bisa diprediksi. Jalma meunang kacau. Sakur sistem streak anu saé kedah nyangka teu sampurna. Salah sahiji ancaman psikologis pangbadagna pikeun sistem streak nyaéta reset teuas ka enol sanggeus ngan hiji dinten lasut. Sistem streak "etika" kedah nyayogikeun pangguna anu kendor. Anggap anjeun gaduh streak diajar catur 90 dinten. Anjeun parantos konsisten salami tilu bulan anu saé, sareng hiji dinten, telepon anjeun maot nalika iinditan, sareng sapertos kitu, 90 janten 0 - sadayana, sadaya usaha éta, mupus, sareng kamajuan ngaleungit. Pamaké bisa jadi ruksak sagemblengna. Pamikiran pikeun ngawangun deui ti mimiti ngarusak moral sahingga usaha éta henteu pantes. Anu paling parah, pangguna tiasa ngantunkeun aplikasi saatos ngarasa gagal. Pertimbangkeun nambihan mékanisme "rahmat" kana sistem streak anjeun:
Streak FreezeNgidinan pangguna ngahaja sono sadinten tanpa hukuman. Waktos Tambahan Ngidinan sababaraha jam (2-3) ngalangkungan wates waktu biasa sateuacan ngamimitian reset. Rokok Models Gantina reset teuas, streak nurun ku jumlah leutik, misalna, 10 poé ieu deducted ti streak per dinten lasut.
Paké Hiji Nada Encouraging Hayu urang ngabandingkeun dua pesen anu dipidangkeun ka pangguna nalika streak ngarecah:
"Anjeun kaleungitan streak 42 dinten anjeun. Mimitian deui." "Anjeun muncul pikeun 42 dinten langsung. Éta kamajuan anu luar biasa! Naha anjeun badé nyobian deui?"
Duanana nepikeun informasi anu sarua, tapi dampak emosi mah béda. Pesen anu munggaran sigana bakal ngajantenkeun pangguna ngarasa demoralized sareng nyababkeun aranjeunna kaluar. Pesen kadua ngagungkeun naon anu parantos dihontal sareng ngadorong pangguna pikeun nyobian deui. Streak Systems Desain Tantangan Sateuacan urang lebet kana spésifikasi téknis pikeun ngawangun sistem streak, anjeun kedah sadar kana tantangan anu anjeun tiasa nyanghareupan. Hal-hal tiasa pajeulit, sakumaha anu anjeun ngarepkeun. Nanganan Timezones Aya alesan naha nanganan waktos sareng tanggal mangrupikeun konsép anu paling hese diurus ku pamekar. Aya pormat, internasionalisasi, sareng seueur deui anu kedah dipertimbangkeun. Hayu atuh nanya ka anjeun ieu: Naon diitung salaku poé? Urang terang yén dunya ngajalankeun zona waktos anu béda, sareng saolah-olah éta henteu cekap, sababaraha daérah gaduh Daylight Saving Time (DST) anu lumangsung dua kali sataun. Dimana anjeun malah mimiti nanganan kasus ujung ieu? Naon anu diitung salaku "mimiti" isukan? Sababaraha pamekar nyobian ngahindarkeun ieu ku ngagunakeun hiji zona waktos sentral, sapertos UTC. Kanggo sababaraha pangguna, ieu bakal ngahasilkeun hasil anu leres, tapi pikeun sababaraha, éta tiasa pareum sajam, dua jam, atanapi langkung. Inconsistency ieu ngarusak pangalaman pangguna. Pamaké henteu paduli kumaha anjeun ngadamel waktos di balik layar; Sadaya anu aranjeunna ngarepkeun nyaéta upami aranjeunna ngalakukeun aksi tilas jam 11:40, maka éta kedah ngadaptar dina waktos éta, dina kontéksna. Anjeun kedah netepkeun "hiji dinten" dumasar kana zona waktos lokal pangguna, sanés waktos server. Yakin, anjeun tiasa nyandak gampangjalur na reset corétan global pikeun sakabéh pamaké di tengah wengi UTC, tapi anjeun pisan nyieun unfairness. Batur di California sok boga dalapan jam tambahan pikeun ngarengsekeun tugas maranéhanana ti batur hirup di London. Éta mangrupikeun cacad desain anu teu adil anu ngahukum pangguna tangtu kusabab lokasina. Sareng kumaha upami jalma di London ngan ukur nganjang, ngalengkepan tugas, teras uih deui ka zona waktos anu sanés? Salah sahiji solusi anu efektif pikeun sadaya ieu nyaéta naroskeun pangguna pikeun nyetél zona waktosna sacara eksplisit salami onboarding (langkung saé saatos auténtikasi munggaran). Ieu mangrupakeun ide nu sae pikeun ngawengku catetan halus nu nyadiakeun informasi timezone ngan dipaké pikeun aplikasi pikeun akurat ngalacak kamajuan, tinimbang dipaké salaku data diidentipikasikeun pribadi. Sareng éta mangrupikeun ide anu sae pikeun ngajantenkeun éta setélan anu tiasa dirobih. Kuring nyarankeun yén saha waé ulah langsung nanganan logika timezone dina aplikasi. Paké pustaka tanggal diusahakeun-na-leres, kawas Moment.js atanapi pytz (Python), jsb Aya teu kudu reinvent kabayang pikeun hal sakumaha kompléks saperti ieu. Poé Lasut Jeung Kasus Tepi Tangtangan anu sanés anu anjeun kedah hariwang nyaéta kasus-kasus anu teu kakadalian sapertos pangguna oversleeping, downtime server, lag, gagal jaringan, sareng sajabana. Ngagunakeun pamanggih mékanisme rahmat, kawas nu urang bahas saméméhna, bisa mantuan. Jandéla rahmat dua jam tiasa ngabantosan pangguna sareng pamekar, dina harti yén pangguna henteu dihukum sacara kaku pikeun kaayaan hirup anu teu kaampeuh. Pikeun pamekar, windows rahmat ngabantosan dina waktos anu teu kakadalian nalika server turun di tengah wengi. Luhureun sadaya, pernah percanten ka klien. Salawasna sangkan méré konfirmasi dina server-sisi. Server kedah janten sumber tunggal bebeneran. Pencegahan selingkuh Deui, kuring teu bisa stress ieu cukup: Pastikeun pikeun sangkan méré konfirmasi sagalana server-sisi. Pamaké téh manusa, jeung manusa bisa curang lamun dibéré kasempetan. Teu bisa dihindari. Anjeun tiasa nyobian:
Nyimpen sagala lampah kalawan timestamps UTC. Klien bisa ngirim waktu lokal maranéhanana, tapi server bisa langsung ngarobah éta ka UTC sarta sangkan méré konfirmasi ngalawan waktu server. Ku cara éta, upami timestamp klien urang curiga jauh, sistem tiasa nampik salaku kasalahan, sareng UI tiasa ngabales sasuai. Ngagunakeun tracking dumasar-kajadian. Dina basa sejen, nyimpen rékaman unggal aksi jeung metadata kaasup informasi kawas ID pamaké, jenis aksi dipigawé, sarta timestamp jeung timezone. Ieu mantuan kalawan validasi.
Ngawangun Mesin Sistem Streak Ieu sanés tutorial kode, janten kuring bakal ngahindarkeun seueur kodeu ka anjeun. Kuring bakal tetep praktis ieu sareng ngajelaskeun kumaha hal umumna ngoperasikeun mesin sistem streak dugi ka arsitéktur, aliran, sareng reliabilitas. Arsitéktur Inti Salaku Kuring geus ngomong sababaraha kali, sangkan serverthe sumber tunggal bebeneran pikeun data streak. Arsitéktur tiasa sapertos kieu dina server:
Nyimpen data unggal pamaké dina database a. Nyimpen toko streak ayeuna (standar salaku 0) salaku integer. Simpen préferénsi zona waktos, nyaéta, string IANA Timezone (boh sacara implisit tina cap waktu lokal atanapi sacara eksplisit ku naroskeun pangguna pikeun milih zona waktosna). Contona, "America / New_York". Nanganan sadaya logika pikeun nangtukeun naha streak dituluykeun atawa megatkeun, kalawan cék zona waktu nu relatif ka zona waktu lokal pamaké.
Samentara éta, dina sisi klien:
Témbongkeun streak ayeuna, ilaharna dipulut ti server. Kirim tindakan anu dilakukeun dina bentuk metadata ka server pikeun ngonfirmasi naha pangguna leres-leres parantos ngalaksanakeun aksi streak anu kualifikasi. Nyadiakeun eupan balik visual dumasar kana réspon server.
Janten, pondokna, otak aya dina server, sareng klienna kanggo tujuan tampilan sareng ngirimkeun acara. Ieu ngaheéat anjeun seueur kagagalan sareng kasus tepi, tambah ngagampangkeun apdet sareng ngalereskeun. Aliran Logis Hayu urang simulate walkthrough kumaha mesin sistem streak efisien minimal bakal jalan nalika pamaké ngalengkepan hiji aksi:
Pamaké ngalengkepan hiji aksi streak qualifying. Klién ngirim hiji acara ka server salaku metadata. Ieu tiasa janten "Pamaké X réngsé tindakan Y dina timestamp Z". Server nampi acara ieu sareng ngalakukeun validasi dasar. Ieu pamaké nyata? Dupi aranjeunna dioténtikasi? Naha tindakan éta sah? Naha zona waktos konsisten? Upami ieu lolos, pangladén retrieves data tilas pangguna tina pangkalan data. Lajeng, ngarobah cap waktu aksi nu narima kana timezone lokal pamaké. Hayu server ngabandingkeun kaping almenak (sanes timestamps) dina timezone lokal pamaké: Upami éta dinten anu sami, maka tindakan éta kaleuleuwihan sareng henteu aya parobahan dinacoretan. Upami éta dinten salajengna, teras tilas ngalegaan sareng naék 1. Lamun aya gap leuwih ti hiji poé, streak megatkeun. Nanging, ieu dimana anjeun tiasa nerapkeun mékanika rahmat. Upami mékanisme rahmat teu sono, teras reset streak ka 1.
Upami anjeun milih nyimpen data sajarah pikeun pencapaian milestone, teras ngapdet variabel sapertos "streak pangpanjangna" atanapi "total dinten aktip". server lajeng ngamutahirkeun database na responds ka klien nu. Sapertos kieu:
{ "current_streak": 48, "streak_longest": 50, "total_active_days": 120, "streak_extended": leres, }
Salaku ukuran salajengna, pangladén kedah nyobian deui atanapi nampik sareng ngabéjaan klien nalika aya anu gagal salami prosésna. Wangunan Pikeun Resilience Sakumaha anu disebatkeun sateuacanna, pangguna kaleungitan tilas kusabab bug atanapi downtime server mangrupikeun UX anu dahsyat, sareng pangguna henteu ngarep-ngarep bakal tumiba kana éta. Ku kituna, sistem streak Anjeun kudu safeguards pikeun skenario maranéhanana. Upami pangladén turun pikeun pangropéa (atanapi alesan naon waé), pertimbangkeun ngawenangkeun jandela samentawis jam tambahan pikeun ngalereskeunana supados tindakan tiasa dikintunkeun telat sareng tetep diitung. Anjeun oge bisa milih pikeun ngabéjaan pamaké, utamana lamun kaayaan téh bisa mangaruhan hiji streak lumangsung. Catetan: Ngadegkeun backdoor admin dimana data tiasa dibalikeun sacara manual. Bug teu tiasa dihindari, sareng sababaraha pangguna bakal nyauran aplikasi anjeun atanapi ngahubungi pikeun ngadukung yén tilasna rusak kusabab alesan anu teu tiasa dikontrol. Anjeun kedah tiasa sacara manual mulangkeun corétan upami, saatos panalungtikan, pangguna leres. kacindekan Hiji hal tetep jelas: Streaks anu bener kuat sabab kumaha psikologi manusa jalan dina tingkat dasar. Sistem tilas anu pangsaéna nyaéta anu henteu dipikiran ku pangguna sacara sadar. Geus jadi rutin hasil langsung atawa kamajuan katempo, kawas brushing huntu, nu jadi kabiasaan biasa. Sareng kuring ngan ukur nyarios: Henteu sadayana produk peryogi sistem streak. Naha anjeun leres-leres maksakeun konsistensi ngan kusabab anjeun hoyong pangguna aktif sapopoé? Jawabanana tiasa pisan "henteu".