Та зураасны талаар сонссон эсвэл нэг апп ашиглаж байсан гэдэгт итгэлтэй байна. Гэхдээ зураас яагаад ийм алдартай, хүчтэй байдаг талаар бодож байсан уу? Аппликешнүүд таны анхаарлыг аль болох ихээр татахыг хүсдэг нь ойлгомжтой, гэхдээ үүний хажуугаар алдартай сургалтын хэрэглүүр Duolingo нь iOS үйлдлийн системд виджетүүдийг нэвтрүүлж байх үед хэрэглэгчийн амлалт 60%-иар өссөнийг та мэдэх үү. Жаран хувь нь зан үйлийн асар их өөрчлөлт бөгөөд оролцоог нэмэгдүүлэх, жолоодлогын хэрэглээг нэмэгдүүлэхийн тулд "зураас" хэв маягийг хэрхэн ашиглаж болохыг харуулж байна. Хамгийн энгийнээр хэлбэл, зураас гэдэг нь хэрэглэгч тодорхой үйлдлийг дараалан гүйцэтгэсэн өдрийн тоо юм. Зарим хүмүүс үүнийг "тоглоомтой" зуршил эсвэл тогтмол хэрэглээг дэмжих зорилготой хэмжүүр гэж тодорхойлдог. Гэхдээ зураас нь хэмжигдэхүүн эсвэл аппликешны бичлэгээс давж гардаг; Энэ нь үүнээс илүү сэтгэлзүйн шинж чанартай байдаг. Хүний зөн совин нь зөв хүчин зүйлээр нөлөөлөхөд хялбар байдаг. Эдгээр гурван хүчин зүйлийг хараарай: ахиц дэвшил, бардамнал, алдахаас айх айдас (ихэвчлэн FOMO гэж нэрлэдэг). Эдгээр бүх нийтлэг зүйл юу вэ? Хүчин чармайлт. Та ямар нэгэн зүйлд илүү их хүчин чармайлт гаргах тусам энэ нь таны хувийн шинж чанарыг бүрдүүлдэг бөгөөд ингэснээр зан үйлийн сэтгэл судлалын ертөнцөд зураас гарч ирдэг. Одоо, агуу хүч нь асар их үүрэг хариуцлага ирдэг бөгөөд үүнээс болж зураас гарахад харанхуй тал бий. Энэ нийтлэлд бид үр дүнтэй систем бий болгох сэтгэл зүй, UX болон дизайны зарчмуудыг авч үзэх болно. Бид (1) бидний тархи яагаад зураасны идэвхжилд бараг зөнгөөрөө хариу үйлдэл үзүүлдэг вэ, (2) хэрэглэгчдэд чин сэтгэлээсээ тус болохуйц зураасыг хэрхэн зохион бүтээх вэ, (3) зураас үүсгэхэд хамаарах техникийн ажлыг авч үзэх болно. Стрейкийн ард байгаа сэтгэл зүй Үр дүнтэй судалтай системийг зохион бүтээх, бүтээхийн тулд энэ нь бидний тархитай хэрхэн уялдаж байгааг ойлгох хэрэгтэй. Бид зураасаа хамгаалахын тулд маш их хичээнгүйлэн зүтгэж байгаа нь юугаараа тийм үр дүнтэй байдаг вэ? Зураасыг хүчтэй, донтуулдаг болгодог гурван сонирхолтой, сайн баримтжуулсан сэтгэл судлалын зарчим байдаг. Алдагдлаас зайлсхийх Энэ нь магадгүй зураасны ард байгаа хамгийн хүчтэй хүч юм. Ихэнх тохиолдолд та амьдралдаа үүнээс зайлсхийх боломжгүй тул би үүнийг хэлж байна. Үүнийг ингэж бодоорой: Хэрэв найз тань танд 100 доллар өгвөл та баяртай байх болно. Гэхдээ хэрэв та түрийвчнээсээ 100 доллар алдсан бол энэ нь илүү их хохирол учруулах болно. Эдгээр нөхцөл байдлын сэтгэл хөдлөлийн жин тэнцүү биш юм. Алдагдал нь сайн мэдрэмж төрүүлэхээс хамаагүй илүү өвддөг. Би чамд 100 доллар өгөөд мөрийтэй тоглоом тоглохыг гуйж байна гэж хэлье. Та дахин 100 доллар хожих 50%, анхны 100 доллараа алдах магадлал 50% байна. Та үүнийг авах уу? би тэгэхгүй. Ихэнх хүмүүс тэгэхгүй. Энэ бол алдахаас татгалзах явдал юм. Бодоод байх юм бол логиктой, ойлгомжтой, хүн л дээ. Алдагдлаас дургүйцэх үзэл баримтлал нь бид ямар нэгэн зүйлээ алдахын зовлонг ижил үнэ цэнэтэй зүйлийг олж авахын таашаалаас хоёр дахин их мэдрэх явдал юм. Сэтгэл зүйн үүднээс авч үзвэл алдагдал нь олзоос илүү удаан үргэлжилдэг. Энэ нь зураастай ямар холбоотой болохыг та харж байгаа байх. Мэдэгдэхүйц зураасыг бий болгохын тулд хүчин чармайлт шаардагдана; зураас нэмэгдэх тусам түүний цаад урам зориг алга болж эхэлдэг; эсвэл илүү нарийвчлалтайгаар энэ нь хоёрдогч болж эхэлдэг. Жишээ нь: Таны найз гурван өдрийн дараа Apple Watch дээрээ "Хөдөлгөөнт цагираг"-аа хаасан гэж хэлье. Тэд зорилгодоо хүрч, тууштай байхыг хүсэхээс өөр алдах зүйл бараг байхгүй. Үүний зэрэгцээ та 219 өдрийн гайхалтай цувралыг үргэлжлүүлж байна. Үүнийгээ алдах вий гэсэн айдасдаа баригдсан байх магадлалтай. Та энэ үед амжилтын талаар бодохгүй байх магадлалтай; Энэ нь таны оруулсан хүчин чармайлтыг хамгаалах тухай бөгөөд энэ нь алдагдлаас зайлсхийх явдал юм. Duolingo нь хэрэглэгч хамгийн залхуу өдрүүдэд ч гэсэн урт хугацааны дарааллыг эвдэх дургүй болоход алдагдалд дургүй болох нь хэрхэн нөлөөлж байгааг тайлбарлав. Нэг ёсондоо алдагдалд дургүй болох нь тогтсон үед зуршил зуршил болж хувирдаг. Fogg Behavior Model (B = MAP) Одоо бид урт дараалалд оруулсан хүчин чармайлтаа алдах вий гэсэн айдсыг ойлгож байгаа тул өөр нэг асуулт гарч ирж байна: Биднийг эхний ээлжинд, өдөр ирэх тусам, тэр ч байтугай зураас томрохоос өмнө юу хийхэд хүргэдэг вэ? Энэ бол Фоггийн зан үйлийн загвар юм. Энэ нь харьцангуй энгийн. Зан төлөв (B) нь урам зориг (M), чадвар (A), шуурхай (P) гэсэн гурван хүчин зүйл нэгэн зэрэг зохицоход л үүсдэг. Тиймээс B=MAP тэгшитгэл болно. Хэрэв эдгээр хүчин зүйлсийн аль нэг нь, тэр ч байтугай нэг нь тэр мөчид дутагдаж байвал зан байдал үүсэхгүй. Тиймээс, зураасны системийг үр дүнтэй, давтагдахын тулд бүх гурван хүчин зүйл байх ёстой: Хүсэл эрмэлзэл Энэ бол эмзэг бөгөөд байнга байдаг зүйл биш. Чамд байх өдрүүд бийИспани хэл сурахаар шахагдаж, хэдэн өдөр та хэл сурах хүсэл зоригоо ч мэдрэхгүй байна. Дадал зуршил бий болгох сэдэл нь дангаараа найдваргүй бөгөөд эхний өдрөөсөө ялагдал хүлээх болно. Чадвар Урам зоригийн хязгаарлалтыг нөхөх чадвар нь маш чухал юм. Энэ нөхцөлд чадвар гэдэг нь үйл ажиллагааны хялбар байдлыг илэрхийлдэг, өөрөөр хэлбэл хүчин чармайлт нь маш хялбар тул боломжгүй гэж хэлэх нь бодитой бус юм. Ихэнх програмууд үүнийг санаатайгаар ашигладаг. Apple Фитнесст таныг зогсох зорилгодоо хүрэхийн тулд нэг цагийн дотор нэг минут зогсоход л хангалттай. Duolingo-д зөвхөн нэг дууссан хичээл хэрэгтэй. Эдгээр ажлууд нь тийм ч их хүчин чармайлт шаарддаггүй. Саад бэрхшээл нь маш бага тул та хамгийн муу өдрүүдэд ч үүнийг хийж чадна. Гэхдээ үргэлжилсэн цувралын хамтын хүчин чармайлт нь тэр цувралаа алдах санааг бий болгодог. PromptЭнэ бол тэгшитгэлийг дуусгах зүйл юм. Хүмүүс байгалиасаа мартамхай, тиймээс чадвар нь биднийг 90%-д хүргэж чадна. Гэхдээ сэрэмжлүүлэг нь бидэнд үйлдэл хийхийг сануулдаг. Зураасууд нь дизайны хувьд тогтвортой байдаг тул хэрэглэгчдэд үйлдэл хийхийг байнга сануулж байх шаардлагатай. Мэдээлэл нь хэр хүчтэй болохыг харахын тулд Duolingo програмын дүрс дээрх жижиг улаан тэмдэг нь байнгын хэрэглээг нэмэгдүүлж байгаа эсэхийг шалгахын тулд A/B тест хийсэн. Энэ нь өдөр тутмын идэвхтэй хэрэглэгчдийн тоо 6%-иар өссөн байна. Зүгээр л улаан тэмдэг. Загварын хязгаарлалт Энэ бүгдийг хэлэхэд, шүүмжлэгчид болон орчин үеийн судалгаагаар түрэмгий мэдэгдэл гэх мэт сануулгууд дээр хэт их тулгуурласан загвар нь сэтгэцийн ядаргаа үүсгэх эрсдэлтэй болохыг анзаарсан Фоггийн загварт хязгаарлалт байдаг. Байнгын мэдэгдэл, илүү цагаар ажиллах нь хэрэглэгчдийг эргэлзэхэд хүргэдэг. Тиймээс үүнийг анхаарч үзээрэй. Зейгарник эффект Төслийн ажлыг хагас дутуу орхиход ямар мэдрэмж төрдөг вэ? Дуусаагүй ажлууд нь бидний хийж гүйцэтгэсэн ажлуудаас илүү оюун санааны орон зай эзэлдэг учраас энэ нь олон хүнийг бухимдуулдаг. Ямар нэг зүйл хийгдчихээд алга болчихвол бид мартах хандлагатай байдаг. Ямар нэг зүйлийг хийхгүй орхивол тэр нь бидний оюун санаанд хүндээр тусдаг. Яг ийм учраас дижитал бүтээгдэхүүнүүд нь Upwork-ийн профайлыг бөглөх талбар гэх мэт хиймэл ахиц дэвшлийн үзүүлэлтүүдийг ашигладаг бөгөөд хэрэглэгчид өөрсдийн профайлыг зөвхөн "60% дууссан" гэдгийг мэдэгддэг. Энэ нь хэрэглэгчийг эхлүүлсэн зүйлээ дуусгахад түлхэж өгдөг.
Өөр нэг жишээг харцгаая. Танд хийх зүйлсийн жагсаалтын программ доторх таван даалгавар байгаа бөгөөд өдрийн төгсгөлд та зөвхөн дөрвийг нь дууссан эсэхийг шалгана. Бидний ихэнх нь нэг л дуусаагүй ажлаасаа болж бүтэхгүй мэт санагдах болно. Энэ бол Зейгарник эффект юм. Зейгарник эффектийг сэтгэл зүйч Блума Зейгарник харуулсан бөгөөд тэрээр бид бүрэн гүйцэд хийгдээгүй ажлуудыг санах ойдоо идэвхтэй байлгах хандлагатай байдаг. UX загварт зураасан загвар нь байгалийн жамаар үүнд нийцдэг. Та сурлагын дарааллын 63 дахь өдөр байна гэж бодъё. Энэ үед та дуусаагүй бизнесийн байнгын хэв маягт байна. Таны тархи оюун санааныхоо хойморт суудаг тул үүнийг мартах нь ховор. Энэ үед таны тархи танд мэдэгдэл илгээдэг. Та эдгээр сэтгэлзүйн хүчийг нэгтгэснээр зураас яагаад зүгээр л ердийн програмын функц биш болохыг ойлгож эхэлдэг; Тэд хүний зан үйлийг өөрчлөх чадвартай. Гэхдээ хаа нэгтээ - энэ нь хүн бүрт өөр байдаг тул яг хэзээ гэдгийг би хэлж чадахгүй - бүх зүйл "хөгжилтэй" байдлаас таныг алдах боломжгүй зүйл рүү шилжих цэгт хүрдэг. Та 58 хоногийн хичээл зүтгэлийг дэмий үрэхийг хүсэхгүй байна, тийм үү? Энэ нь стрэйк системийг үр дүнтэй болгодог зүйл юм. Хэрэв зөв хийгдсэн бол зураас нь хэрэглэгчдэд зорилгодоо хүрэх гайхалтай зуршлыг бий болгоход тусалдаг. Энэ нь өдөр бүр ном унших эсвэл биеийн тамирын зааланд тогтмол хичээллэх байж болно. Эдгээр давтагдах үйлдлүүд (заримдаа жижиг) цаг хугацааны явцад нийлж, бидний өдөр тутмын амьдралд илэрхий болдог. Гэхдээ зоос болгонд хоёр тал бий. Зуршил ба албадлагын хоорондох нимгэн шугам Хэрэв та дагаж мөрдөж байсан бол системд саад болох харанхуй тал байгааг та аль хэдийн хэлж чадна. Дадал зуршил нь давтагдсан зорилгодоо нийцэх явдал юм. Харин албадлага гэдэг нь айдас, дарамт шахалтаас болж шаардлагагүй болсон зорилгодоо тууштай ажиллах явдал юм. Энэ нь сахлын нимгэн шугам юм. Та өглөө бүр ямар ч бодолгүйгээр шүдээ угаадаг; Энэ нь автомат бөгөөд зөн совинтой бөгөөд сайн амьсгалах зорилготой. Энэ бол сайн зуршил үүсгэдэг зуршил юм. Ёс суртахууны систем нь хэрэглэгчдэд амьсгалах зайг өгдөг. Хэрэв та ямар нэг шалтгааны улмаас өглөө угаахгүй бол үд дунд угааж болно. Удаан хугацааны хүчин чармайлтаа алдахаас айхгүйгээр төгс бус байдлыг зөвшөөрдөг. Албадлага нь эсрэг чиглэлийг баримталдаг бөгөөд үүгээр зогсолт нь таныг түгшээж, өөрийгөө буруутай юм шиг, бүр ядарч туйлдсан ч юм шиг, заримдаа та бүх хүчин чармайлтаа үл харгалзан юу ч хийгээгүй юм шиг санагддаг.ажил. Та хүссэндээ биш, харин ахиц дэвшлээ тэг болгож харахаас далд ухамсартайгаар айж байгаа учраас л ийм үйлдэл хийдэг. Хэн нэгэн үүнийг бүр "Би өөрийгөө хуурч байгаа юм шиг санагдсан, гэхдээ зүгээр л тоосонгүй. Би өөрийнхөөрөө байхгүй бол хэн ч биш" гэж маш сайн тодорхойлсон. Энэ нь тухайн хүнд хэт их саатал үүсч болохыг харуулж байна. Хэрэглэгчид өөрсдийн үнэлэмжийг анхны зорилго, шалтгаанаас илүүтэйгээр дур зоргоороо хэмжүүрээр холбож эхэлдэг. Тэдний хийж буй зүйл биш харин тэдний хэн болох нь тодорхой болно. Сайн зохион бүтээсэн ёс суртахууны тогтолцоо нь дарамт шахалт, үүрэг хариуцлага биш харин хэрэглэгчдэд урам зориг өгөх ёстой. Энэ нь дотоод болон гадаад урам зоригийн тэнцвэртэй холбоотой. Гадны урам зориг (гадаад урамшуулал, шийтгэлээс зайлсхийх) нь хэрэглэгчдийг эхлүүлэхэд түлхэц болох боловч дотоод сэдэл (хайртай хүнтэйгээ харилцахыг чин сэтгэлээсээ хүсч байгаа тул испани хэл сурах гэх мэт хувийн зорилгынхоо төлөө даалгавраа хийх) урт хугацааны оролцоонд илүү хүчтэй байдаг. Сайн систем нь гаднах элементүүдийг болгоомжтой ашиглах замаар дотоод сэдэл рүү тэмүүлэх ёстой, өөрөөр хэлбэл хэрэглэгчдэд хэр хол явж ирснээ сануулж, юу алдаж болзошгүйг нь заналхийлдэггүй. Дахин хэлэхэд энэ нь нарийн шугам юм. Судасны системийг зохион бүтээх энгийн тест бол таны бүтээгдхүүний бүтээсэн сэтгэлийн түгшүүрийн шийдлийг зарж, бүтээгдэхүүнээ мөнгө олох эсэхийг бодох явдал юм. Хэрэв тийм бол та хэрэглэгчдийг мөлжих магадлал өндөр байна. Дараачийн асуулт бол хэрэв би зураасыг ашиглахаар шийдсэн бол хэрэглэгчдэд зорилгодоо хүрэхэд нь туслахуйцаар үүнийг хэрхэн зохион бүтээх вэ? Сайн Streak системийн дизайны UX Энэ бол ихэнх төслүүд үр дүнтэй зураасны системийг бий болгох эсвэл бүрэн замбараагүй болгодог газар гэдэгт би итгэдэг. Сайн зураастай дизайны зарим UX зарчмуудыг авч үзье. Үүнийг ямар ч хүндрэлгүйгээр байлга Та үүнийг өмнө нь, магадгүй атомын зуршил гэх мэт номуудаас сонсож байсан байх, гэхдээ зуршлыг бий болгох хамгийн хялбар аргуудын нэг бол үйлдлийг жижиг, хялбар болгох явдал гэдгийг дурдах нь зүйтэй. Энэ нь бидний Fogg Behavior Model дээр авч үзсэн чадварын хүчин зүйлтэй төстэй юм. Аливаа зураасны дизайны эхний дүрэм бол ахиц дэвшилд хүрэхийн зэрэгцээ шаардлагатай үйлдлүүдийг аль болох бага хэмжээгээр хийх явдал юм. Хэрэв өдөр тутмын үйлдлийг дуусгахын тулд хүсэл зориг шаардагддаг бол тэр үйлдэл нь тав хоногоос хэтрэхгүй. Яагаад? Та таван өдөр дараалан урам зоригтой байж чадахгүй. Тохиолдолд: Хэрэв та бясалгалын програм ажиллуулдаг бол хэрэглэгчдэд дарааллыг хадгалахын тулд 20 минутын сесс хийх шаардлагагүй. Оронд нь ганцхан минут, магадгүй гучин секунд ч байж магадгүй. Бяцхан дусал ус хүчирхэг далайг бүтээдэг гэдэг. Жижиг хичээл зүтгэл цаг хугацаа өнгөрөхөд том амжилтад хүрдэг. Энэ нь зорилго байх ёстой: үрэлтийг арилгах, ялангуяа хэцүү мөчид. Хэрэглэгчид стресст орсон эсвэл хэт их ачаалалтай байгаа үед хэдхэн секундын турш гарч ирэх нь хүчин чармайлт гэж тооцогддог гэдгийг тэдэнд мэдэгдээрэй. Тодорхой харааны санал хүсэлтийг өгөх Хүмүүс угаасаа харааны шинж чанартай байдаг. Ихэнх тохиолдолд бид итгэхийн тулд ямар нэг зүйлийг харах хэрэгтэй; Эдгээрийг илүү сайн ойлгож, хэтийн төлөвт оруулахын тулд юмсыг дүрслэн харуулах хэрэгтэй. Ийм учраас зураасны хэв маяг нь хүчин чармайлтыг дүрслэн харуулахын тулд график, тэмдэглэгээ, явцын цагираг, тор зэрэг харааны элементүүдийг ихэвчлэн ашигладаг. GitHub-ийн оруулсан хувь нэмрийн графикийг харна уу. Энэ бол тууштай байдлын энгийн дүрслэл юм. Гэсэн хэдий ч хөгжүүлэгчид үүнийг хүчилтөрөгч шиг амьсгалдаг.
Гол нь зураасан системийг хийсвэр мэт санагдуулахгүй байх явдал юм. Энэ нь жинхэнэ бөгөөд олсон мэт санагдах ёстой. Жишээлбэл, Duolingo болон Apple-ийн фитнессийн дасгалын цагиргууд нь дараалсан дараалсан хөдөлгөөнт дүрсийг ашигладаг бөгөөд GitHub нь хэрэглэгчийн цаг хугацааны тогтвортой байдлын түүхэн өгөгдлийг харуулдаг.
Сайн цагийг ашигла Хүмүүс байгалиасаа мартамхай байдаг бөгөөд сэрэмжлүүлэг нь урагшлах эрч хүчийг хадгалахад тусалдаг гэдгийг би дээр дурдсан. Сануулга байхгүй бол ихэнх шинэ хэрэглэгчид үргэлжлүүлэхээ мартдаг. Амьдрал завгүй болж, урам зориг алга болж, бүх зүйл тохиолдож болно. Урт хугацааны хэрэглэгчид ч гэсэн сануулгаас ашиг тус хүртдэг ч ихэнх тохиолдолд тэд зуршлын гогцоонд аль хэдийн түгжигдсэн байдаг. Гэсэн хэдий ч хамгийн тууштай хүн ч санамсаргүйгээр нэг өдрийг алдаж болно. Таны зураасны системд заавал сануулагч хэрэгтэй. Хамгийн их ашиглагддаг шуурхай сануулагч бол түлхэх мэдэгдэл юм. Түлхэх мэдэгдэлтэй ажиллахад цаг хугацаа үнэхээр чухал юм. Програмын төрөл нь бас чухал юм. Өглөөний 9 цагт "Та өнөөдөр бэлтгэл хийгээгүй байна" гэсэн мэдэгдэл илгээх нь сургалтын програмын хувьд хачирхалтай, учир нь олон хүн хичээлээ дуусгах тухай бодохоос өмнөх өдөр хийх зүйлтэй байдаг. Хэрэв бид фитнессийн програмын тухай ярьж байгаа бол энэ ньЭнэ нь үндэслэлтэй бөгөөд магадгүй өдрийн өмнө сануулж магадгүй юм. Түлхэх мэдэгдэл нь програмын ангиллаар ихээхэн ялгаатай байдаг. Жишээлбэл, фитнесс аппууд өглөө эрт мэдэгдлээр (7-8 цаг) илүү их оролцоог хардаг бол бүтээмжийн аппууд үд дунд илүү сайн ажиллах боломжтой. Хамгийн гол нь бүх зүйлд тохирсон зүйл гэж үзэхийн оронд хэрэглэгчдийнхээ зан төлөвт тулгуурлан A/B програмынхаа цагийг шалгах явдал юм. Бясалгалын програмд тохирох зүйл нь кодлогчийн хувьд тохирохгүй байж магадгүй юм. Бусад шуурхай арга бол програмын дүрс дээрх улаан цэгүүд, тэр ч байтугай програмын виджетүүд юм. Судалгаанууд өөр өөр байдаг ч дундаж хүн өдөрт 50-150 удаа төхөөрөмжийнхөө түгжээг тайлдаг (PDF). Хэрэв хэрэглэгч утасныхаа түгжээг тайлах бүртээ тухайн аппликейшн эсвэл виджет дээр улаан цэг харвал энэ нь хүлээлтийг нэмэгдүүлнэ. Зүгээр л бүү хэтрүүл; сануулга нь уйтгар гуниг биш харин сануулга байх ёстой. Чухал үеийг тэмдэглэ Судасны систем нь сэтгэл хөдлөлийг сэргээхийн тулд чухал үе шатуудыг тэмдэглэхийг хичээх ёстой, ялангуяа хэрэглэгчдэд гүн гүнзгий мэдрэмж төрүүлдэг. Хэрэглэгч 7 дахь өдөр, 30 дахь өдөр, 50 дахь өдөр, 100 дахь өдөр, 365 дахь өдөр тохиолдоход та үүнийг маш сайн хийх хэрэгтэй. Амжилтыг хүлээн зөвшөөрөх - ялангуяа удаан хугацааны хэрэглэгчдэд зориулсан.
Өмнө нь харсанчлан, Duolingo үүнийг олж мэдээд, конфетти бүхий чухал үйл явдлуудыг тэмдэглэсэн хөдөлгөөнт графикийг хэрэгжүүлсэн. Зарим платформууд нь хэрэглэгчдийн хүчин чармайлтыг баталгаажуулдаг их хэмжээний урамшуулал өгдөг. Энэ нь хэрэглэгчид өөрсдийн үйл явдлуудыг олон нийтийн мэдээллийн хэрэгслээр олон нийтэд хуваалцах хандлагатай байдаг програмуудад ашигтай байж болох юм. Өөр нэг давуу тал бол чухал цэгүүдэд хүрэхээс өмнө ирдэг хүлээлт юм. Энэ нь зөвхөн цувралыг эцэс төгсгөлгүй үргэлжлүүлэх биш юм; хэрэглэгчдэд хүлээх зүйл байна. Нигүүлслийн механизмыг ашигла Амьдрал тааварлашгүй. Хүмүүс сатаардаг. Аливаа сайн зураасны систем нь төгс бус байдлыг хүлээх ёстой. Судасны системд учирч буй сэтгэл зүйн хамгийн том аюулын нэг бол алдсан ганц өдрийн дараа тэг рүү буцаах явдал юм. "Ёс суртахуунтай" систем нь хэрэглэгчийг сулруулах ёстой. Таныг 90 хоногийн шатрын хичээлийн дараалал бий гэж бодъё. Та гурван сайхан сарын турш тууштай байсан бөгөөд нэг өдөр таны утас аялж байхдаа үхэж, яг үүнтэй адил 90 нь 0 болж - бүх зүйл, тэр бүх хүчин чармайлт арилж, ахиц дэвшил алга болно. Хэрэглэгч бүрэн сүйрсэн байж магадгүй. Үүнийг эхнээс нь сэргээнэ гэсэн бодол нь маш их сэтгэлээр унадаг тул хүчин чармайлт нь үнэ цэнэтэй зүйл биш юм. Хамгийн муу тохиолдолд хэрэглэгч бүтэлгүйтсэн мэт санагдсаны дараа програмаа орхиж магадгүй юм. Таны зураасны системд "нигүүлсэл" механизм нэмэх талаар бодож үзээрэй.
Streak Freeze Хэрэглэгчдэд торгуульгүйгээр нэг өдрийг санаатайгаар алдах боломжийг олгоно. Нэмэлт Хугацаа Дахин тохируулахын өмнө ердийн хугацаанаас хэдхэн цагийн өмнө (2-3) өгнө үү. Decay Models Хатуу дахин тохируулахын оронд зураас бага хэмжээгээр буурдаг, жишээлбэл, алдсан өдөр тутамд 10 хоногийг хасч тооцдог.
Урам зориг өгөх аяыг ашигла Сул тасрах үед хэрэглэгчдэд үзүүлсэн хоёр мессежийг харьцуулж үзье:
"Та 42 өдрийн дарааллаа алдсан. Эхнээс нь эхэл." "Та 42 хоног тасралтгүй ирсэн. Энэ бол гайхалтай ахиц дэвшил! Дахиад оролдоод үзмээр байна уу?"
Хоёулаа ижил мэдээллийг дамжуулдаг боловч сэтгэл хөдлөлийн нөлөө нь өөр байдаг. Эхний мессеж нь хэрэглэгчийг сэтгэл санаагаар унагаж, ажлаасаа гарахад хүргэж болзошгүй юм. Хоёрдахь зурвас нь аль хэдийн хүрсэн зүйлээ тэмдэглэж, хэрэглэгчийг дахин оролдохыг зөөлөн дэмждэг. Streak системийн дизайны сорилтууд Судасны системийг бий болгох техникийн шинж чанарууд руу орохын өмнө та тулгарч болох бэрхшээлүүдийн талаар мэдэж байх ёстой. Таны бодож байгаачлан бүх зүйл төвөгтэй болж магадгүй юм. Цагийн бүсийг зохицуулах Цаг, огноог зохицуулах нь хөгжүүлэгчдийн шийдвэрлэх хамгийн хэцүү ойлголтуудын тоонд ордог шалтгаан бий. Форматлах, олон улсын болгох гэх мэт олон зүйлийг анхаарч үзэх хэрэгтэй. Би танаас асууя: Өдөр гэж юуг тооцох вэ? Дэлхий өөр өөр цагийн бүсээр ажилладагийг бид мэддэг бөгөөд энэ нь хангалтгүй юм шиг зарим бүс нутагт зуны цаг (DST) жилд хоёр удаа болдог. Та эдгээр захын хэргүүдийг хаанаас шийдэж эхлэх вэ? Маргаашийн "эхлэл" гэж юуг тооцох вэ? Зарим хөгжүүлэгчид UTC гэх мэт нэг төвийн цагийн бүсийг ашиглан үүнээс зайлсхийхийг хичээдэг. Зарим хэрэглэгчдийн хувьд энэ нь зөв үр дүнг өгөх боловч зарим хүмүүсийн хувьд энэ нь нэг цаг, хоёр цаг эсвэл түүнээс дээш хугацаагаар унтардаг. Энэ үл нийцэл нь хэрэглэгчийн туршлагыг сүйтгэдэг. Хэрэглэгчид таныг хөшигний ард цагийг хэрхэн зохицуулж байгаад санаа тавьдаггүй; Тэдний хүлээж байгаа зүйл бол хэрэв тэд 23:40 цагт дараалсан үйлдэл хийвэл яг тэр цагт, тэдний нөхцөл байдалд бүртгүүлэх ёстой. Та "нэг өдөр"-ийг серверийн цагаар бус хэрэглэгчийн орон нутгийн цагийн бүсэд үндэслэн тодорхойлох ёстой. Мэдээжийн хэрэг, та хялбархан авч болноШөнө дунд UTC-д бүх хэрэглэгчдэд зориулсан зураасыг чиглүүлж, дахин тохируулах боломжтой боловч та шударга бус байдлыг маш ихээр үүсгэж байна. Калифорнид амьдардаг хэн нэгэнд Лондонд амьдардаг хүнээс илүү найман цаг үргэлж даалгавраа биелүүлэх боломжтой байдаг. Энэ нь зарим хэрэглэгчдийг байршлын улмаас шийтгэдэг шударга бус дизайны алдаа юм. Хэрэв тэр хүн Лондонд зөвхөн зочилж, даалгавраа дуусгаад өөр цагийн бүс рүү буцвал яах вэ? Энэ бүхний үр дүнтэй шийдлийн нэг нь хэрэглэгчдэд суулгах явцад цагийн бүсээ тодорхой тохируулахыг хүсэх явдал юм (эхний баталгаажуулалтын дараа илүү тохиромжтой). Цагийн бүсийн мэдээллийг өгөх нь хувь хүний таних өгөгдөл болгон ашиглахын оронд зөвхөн ахиц дэвшлийг үнэн зөв хянахын тулд програмд ашиглагдана гэсэн нарийн тэмдэглэл оруулах нь зүйтэй. Үүнийг өөрчлөх боломжтой болгох нь бас нэг сайн санаа юм. Би хэн нэгэнд апп доторх цагийн бүсийн логикийг шууд зохицуулахаас зайлсхийхийг зөвлөж байна. Moment.js эсвэл pytz (Python) гэх мэт туршиж үзсэн бөгөөд үнэн огнооны сангуудыг ашиглана уу. Ийм нарийн төвөгтэй зүйлийн дугуйг дахин зохион бүтээх шаардлагагүй. Алдагдсан өдрүүд ба захын тохиолдлууд Таны санаа зовох ёстой өөр нэг асуудал бол хэрэглэгчид хэт унтсан, серверийн саатал, хоцрогдол, сүлжээний доголдол гэх мэт хяналтгүй захын тохиолдол юм. Бидний өмнө нь ярилцсан шиг нигүүлслийн механизмын санааг ашиглах нь тусалж чадна. Амьдралын хяналтгүй нөхцөл байдлын улмаас хэрэглэгчид хатуу шийтгэл хүлээхгүй гэсэн утгаараа хоёр цагийн хөнгөлөлттэй цонх нь хэрэглэгч болон хөгжүүлэгчийн аль алинд нь тусалж чадна. Хөгжүүлэгчдийн хувьд сервер шөнө дунд унтарсан хяналтгүй мөчүүдэд нигүүлслийн цонхнууд тустай. Хамгийн гол нь үйлчлүүлэгчдээ хэзээ ч бүү итгэ. Үргэлж сервер талд баталгаажуул. Сервер нь үнэний цорын ганц эх сурвалж байх ёстой. Хууран мэхлэхээс урьдчилан сэргийлэх Дахин хэлэхэд би үүнийг хангалттай онцолж чадахгүй байна: Сервер талын бүх зүйлийг баталгаажуулна уу. Хэрэглэгчид бол хүмүүс бөгөөд боломж олдвол хүмүүс хууран мэхлэх боломжтой. Үүнээс зайлсхийх боломжгүй. Та оролдож магадгүй:
Бүх үйлдлийг UTC цагийн тэмдэглэгээгээр хадгалах. Үйлчлүүлэгч орон нутгийн цагаа илгээх боломжтой ч сервер үүнийг шууд UTC болгон хөрвүүлж, серверийн цагийг баталгаажуулах боломжтой. Ингэснээр үйлчлүүлэгчийн цагийн тэмдэг сэжигтэй хол байвал систем үүнийг алдаа гэж үгүйсгэж, UI зохих ёсоор хариу өгөх боломжтой. Үйл явдалд суурилсан хяналтыг ашиглах. Өөрөөр хэлбэл, хэрэглэгчийн ID, гүйцэтгэсэн үйлдлийн төрөл, цагийн тэмдэг, цагийн бүс зэрэг мэдээллийг агуулсан мета өгөгдөл бүхий үйлдэл бүрийн бүртгэлийг хадгална. Энэ нь баталгаажуулахад тусална.
Streak системийн хөдөлгүүрийг бүтээх Энэ бол кодын заавар биш тул би чам руу олон код хаяхаас зайлсхийх болно. Би үүнийг практикт хадгалж, архитектур, урсгал, найдвартай байдлын хувьд бүх зүйл ерөнхийдөө судалтай системийн хөдөлгүүрийг хэрхэн ажиллуулдгийг тайлбарлах болно. Үндсэн архитектур Би хэд хэдэн удаа хэлсэнчлэн, серверийг өгөгдлийн цорын ганц үнэний эх сурвалж болго. Архитектур нь сервер дээр иймэрхүү байдлаар явж болно:
Хэрэглэгч бүрийн мэдээллийг мэдээллийн санд хадгалах. Одоогийн мөрийн санг (өгөгдмөл 0) бүхэл тоогоор хадгална. Цагийн бүсийн тохиргоог, өөрөөр хэлбэл, IANA цагийн бүсийн мөрийг (орон нутгийн цагийн тэмдэгээс далд хэлбэрээр эсвэл хэрэглэгчээс цагийн бүсээ сонгохыг хүсэх замаар) хадгална уу. Жишээлбэл, "Америк/Нью-Йорк". Хэрэглэгчийн орон нутгийн цагийн бүстэй холбоотой цагийн бүсийг шалган дараалал үргэлжлэх эсвэл тасрах эсэхийг тодорхойлохын тулд бүх логикийг зохицуулна уу.
Үүний зэрэгцээ, үйлчлүүлэгчийн талд:
Серверээс ихэвчлэн татаж авдаг одоогийн мөрийг харуулна. Хэрэглэгч үнэхээр шаардлага хангасан үйлдлийг гүйцэтгэсэн эсэхийг баталгаажуулахын тулд мета өгөгдөл хэлбэрээр хийсэн үйлдлийг сервер рүү илгээнэ үү. Серверийн хариулт дээр үндэслэн харааны санал хүсэлтийг өгнө үү.
Товчхондоо тархи нь сервер дээр байгаа бөгөөд үйлчлүүлэгч нь харуулах, үйл явдлуудыг илгээх зорилготой юм. Энэ нь танд маш олон алдаа, захын тохиолдлуудыг хэмнэж, шинэчлэлт, засварыг хялбар болгоно. Логик урсгал Хэрэглэгч ямар нэг үйлдлийг гүйцэтгэх үед системийн хамгийн бага үр ашигтай хөдөлгүүр хэрхэн ажиллахыг загварчилж үзье:
Хэрэглэгч шалгуур давах үйлдлийг гүйцээнэ. Үйлчлүүлэгч нь үйл явдлыг сервер рүү мета өгөгдөл болгон илгээдэг. Энэ нь "X хэрэглэгчийн Y үйлдлийг Z цагийн тэмдэгээр гүйцэтгэсэн" байж болно. Сервер энэ үйл явдлыг хүлээн авч, үндсэн баталгаажуулалтыг хийдэг. Энэ жинхэнэ хэрэглэгч мөн үү? Тэд баталгаажсан уу? Үйлдэл хүчинтэй юу? Цагийн бүс тогтмол байна уу? Хэрэв энэ нь дамжвал сервер нь мэдээллийн баазаас хэрэглэгчийн зураасан өгөгдлийг татаж авна. Дараа нь хүлээн авсан үйлдлийн цагийн тэмдгийг хэрэглэгчийн орон нутгийн цагийн бүс рүү хөрвүүлнэ үү. Хэрэглэгчийн орон нутгийн цагийн бүс дэх хуанлийн огноог (цагийн тэмдэг биш) харьцуулахыг серверт зөвшөөрнө үү: Хэрэв энэ өдөр бол үйлдэл нь илүүц бөгөөд өөрчлөлт байхгүй болнозураас. Хэрэв дараагийн өдөр бол зураас нэмэгдэж, 1-ээр нэмэгдэнэ. Хэрэв нэгээс илүү өдрийн завсарлага байвал зураас тасарна. Гэсэн хэдий ч энд та нигүүлслийн механикийг ашиглаж болно. Хэрэв нигүүлслийн механизм алдагдсан бол зураасыг 1 болгож дахин тохируулна уу.
Хэрэв та амжилтын түүхэн өгөгдлийг хадгалахаар сонгосон бол "хамгийн урт дараалал" эсвэл "нийт идэвхтэй өдрүүд" гэх мэт хувьсагчдыг шинэчилнэ үү. Дараа нь сервер нь мэдээллийн баазыг шинэчилж, үйлчлүүлэгчид хариу өгдөг. Иймэрхүү зүйл:
{ "одоогийн_судал": 48, "хамгийн урт_суралт": 50, "нийт_идэвхтэй_өдөр": 120, "streak_extended": үнэн, }
Нэмэлт арга хэмжээ болгон сервер дахин оролдох эсвэл татгалзаж, үйл явцын явцад ямар нэгэн зүйл бүтэлгүйтсэн тохиолдолд үйлчлүүлэгчид мэдэгдэх ёстой. Тэсвэртэй байдлын барилга Өмнө дурьдсанчлан, хэрэглэгчид алдаа эсвэл серверийн зогсолтоос болж дарааллаа алдах нь аймшигтай UX бөгөөд хэрэглэгчид үүнийг унагана гэж бодохгүй байна. Тиймээс таны зураасны систем эдгээр хувилбаруудын хамгаалалттай байх ёстой. Хэрэв сервер засвар үйлчилгээ хийхээр (эсвэл ямар нэгэн шалтгаанаар) ажиллахаа больсон бол үүнийг засахын тулд нэмэлт цагийг түр хугацаагаар олгох талаар бодож үзээрэй, ингэснээр үйлдлүүд хоцрогдсон боловч тоологдсон хэвээр байх болно. Та мөн хэрэглэгчдэд мэдэгдэхийг сонгож болно, ялангуяа нөхцөл байдал үргэлжилж буй дараалалд нөлөөлөх чадвартай бол. Тайлбар: Мэдээллийг гараар сэргээх боломжтой админы арын хаалга үүсгэнэ үү. Алдаа гарах нь гарцаагүй бөгөөд зарим хэрэглэгчид таны апп руу залгаж эсвэл хянах боломжгүй шалтгааны улмаас дарааллаа тасалсныг дэмжихээр ханддаг. Судалгааны дараа хэрэглэгчийн зөв бол та зураасыг гараар сэргээх боломжтой байх ёстой. Дүгнэлт Нэг зүйл тодорхой хэвээр байна: Хүний сэтгэл зүй үндсэн түвшинд хэрхэн ажилладаг тул зураас нь үнэхээр хүчтэй байдаг. Хэрэглэгчдийн ухамсартайгаар боддоггүй систем нь хамгийн шилдэг систем юм. Энэ нь байнгын зуршил болсон шүдээ угаах гэх мэт шууд үр дүн эсвэл харагдахуйц ахиц дэвшлийн зуршил болсон. Би зүгээр л хэлье: Бүх бүтээгдэхүүнд зураас систем шаардлагагүй. Та өдөр тутмын идэвхтэй хэрэглэгчдийг хүсч байгаа учраас л тууштай байдлыг албадах ёстой юу? Хариулт нь "үгүй" байж магадгүй юм.