2012-04-05 12 views
16

मैं स्टैक ओवरफ्लो बैज के लिए एक ही चीज़ को लागू करने के लिए देख रहा हूं। आप उन्हें गेम में उपलब्धियों के बराबर भी कर सकते हैं।बैज/उपलब्धियां

लेकिन मुझे यकीन नहीं है कि उनके लिए डेटाबेस/कोड/ट्रैकिंग को कैसे डिजाइन करें

मैं क्या मैं इस तरह के रूप बैज के लिए क्या करना चाहिए मिलता है:

× एल्ट्रूइस्ट 1456 प्रथम इनाम आप मैन्युअल रूप से किसी अन्य व्यक्ति के सवाल

पर सम्मानित किया, क्योंकि वे एक बार घटना है, लेकिन कैसे

विश्लेषणात्मक × 16389 पूछे जाने वाले प्रश्न ×
मतदाता 1783 को 600 वोट दिया के हर खंड का दौरा: इस तरह के रूप में दूसरों को संभालने सवाल और कुल मतों का 25% या अधिक प्रश्नों पर × चैट में 188 संदेशों 10 प्रकाशित किया गया था कि 10 विभिन्न उपयोगकर्ताओं

आदि द्वारा तारांकित गया मुखर रहे हैं ...

उन्हें कैसे संभाल करने के लिए, कैसे रखने के लिए प्रत्येक के लिए प्रगति का ट्रैक, आदि ... क्या कोई ट्यूटोरियल या ऐसा कुछ है जो मुझे उनके लिए एक डिज़ाइन पैटर्न जानने में मदद कर सकता है?

उत्तर

17

दिए गए उदाहरणों के लिए, अनिवार्य रूप से दो तंत्र हैं जिनकी आपको आवश्यकता होगी।

मुझे नहीं पता कि यह SO पर कैसे किया जाता है, यह केवल समाधान का सुझाव है।

आइए पहले 'विश्लेषणात्मक' देखें। जब कोई उपयोगकर्ता अक्सर पूछे जाने वाले प्रश्न में किसी विशेष क्षेत्र में जाता है तो आपको एक साधारण ध्वज के माध्यम से रिकॉर्ड करना होगा। आइए प्रत्येक एफएक्यू अनुभाग और उपयोगकर्ता आईडी के लिए एक फ़ील्ड के साथ एक डीबी टेबल पर विचार करें। यह "एन" (या 0, या फिर आप अपने ध्वज का प्रतिनिधित्व करना चाहते हैं) के रूप में शुरू होता है। जब कोई उपयोगकर्ता उस क्षेत्र में जाता है, तो आप उस फ़ील्ड को "वाई" पर फ़्लिप करने के लिए कोड कहते हैं। जब सभी फ़ील्ड "वाई" होते हैं तो आप उस बैज को पुरस्कृत कर सकते हैं।

'मतदाता' और 'आउटस्पोकन' के रूप में, आप अपने मौजूदा डेटा पर एक क्वेरी के माध्यम से इस जानकारी को पुनर्प्राप्त कर सकते हैं, मानते हैं कि प्रश्नों को बहुत बोझिल नहीं है। इन चेकों को चलाने के लिए आपको विचार करने की आवश्यकता होगी। यह अनिवार्य रूप से दो विकल्पों तक उबाल जाता है।

1) जब वह कार्रवाई है जो बिल्ला से सम्मानित हो सकता है किया जाता है (पूछे जाने वाले प्रश्न के यानी यात्रा अनुभाग, वोट एक सवाल पर, सवाल किसी और)

2) समय-समय पर (द्वारा तारांकित प्रति घंटा, दैनिक, आदि) वर्तमान डेटा के खिलाफ अपने सभी बैज के लिए एक चेक चलाएं।

ध्यान रखें कि बैज स्टैक ओवरफ्लो में एक तरफा है, इसलिए यदि आप समकक्ष होना चाहते हैं तो आपको 'अन-पुरस्कार' बैज में तर्क पर विचार करने की आवश्यकता नहीं है।

+0

मुझे लगता है कि मुझे अब यह मिल गया है। आसान लगता है: पी सिर्फ एक मुद्दा - आप डीबी टेबल का उपयोग करने के लिए 'विश्लेषणात्मक' के लिए कहते हैं, लेकिन ऐसे कई समान बैज होंगे और मैं उनमें से प्रत्येक के लिए कैसे जाउंगा? मुझे प्रत्येक बैज के लिए एक अलग टेबल का उपयोग करना चाहिए, या क्या इसे एक टेबल में एकीकृत करने का कोई तरीका है? अन्यथा मैं कई डीबी टेबल के साथ समाप्त हो सकता हूं, प्रत्येक बैज प्रकार के लिए ... लेकिन उत्तर के लिए thnx - यह मुझे सही दिशा में शुरू करने में बहुत मदद करता है। बीटीडब्ल्यू, आपके 2 का मतलब है कि बैज को प्राप्त होने के पल में सम्मानित नहीं किया जाता है, है ना? और हाँ, वहां पुरस्कार नहीं दिया जाएगा। – b0x0rz

+1

आप तालिका को कैसे कार्यान्वित करते हैं आप पर निर्भर करता है।आपके पास user_id, badge_id, badge_acheivement_id, ध्वज के साथ 4 कॉलम तालिका हो सकती है - इससे यह कई बैज के लिए स्केलेबल हो जाएगा। और, हां इसका मतलब है कि वे उस क्षण से सम्मानित नहीं होंगे जिन्हें वे हासिल कर चुके थे। पाठ्यक्रम के –

+0

:) धन्यवाद। मुझे लगता है कि यह मेरे सभी मुद्दों को हल करता है। मुझे लगता है कि शेड्यूलिंग चेक अक्सर 'कमाई' बैज और बैज दिखाए जाने के बीच के अंतर को कम करने की संभावना है। – b0x0rz