ट्रैक बनाना


एक ट्रैक कई अलग-अलग हिस्सों से मिलकर बनता है।

मेटाडेटा

ट्रैक का कॉन्फिगरेशन और मेटाडेटा config.json फाइल में दिया गया होता है। इसमें ट्रैक के अभ्यास, कॉन्सेप्ट, एडिटर सेटिंग्स और भी बहुत कुछ होता है। config.json का दस्तावेज़ देखिए।

कॉन्सेप्ट

ट्रैक के सभी कॉन्सेप्ट और प्रैक्टिस अभ्यासों में कॉन्सेप्ट शामिल रहते हैं। ये कॉन्सेप्ट अपने आप में अलग-अलग इकाइयाँ होते हैं। ज़्यादा जानकारी के लिए दस्तावेज़ देखिए।

ट्रैक के कॉन्सेप्ट अभ्यासों में सिखाए जाने वाले कॉन्सेप्ट मिलकर एक सिलेबस बनाते हैं। यह सिलेबस छात्रों को एक कॉन्सेप्ट मैप के रूप में दिखाया जाता है। सिलेबस के लिए कॉन्सेप्ट मैप बनाने के बारे में जानने के लिए कॉन्सेप्ट मैप का दस्तावेज़ देखिए।

सिलेबस कैसे बनाया जाए, इसकी ज़्यादा जानकारी के लिए सिलेबस का दस्तावेज़ देखिए।

अभ्यास

ट्रैक में दो तरह के अभ्यास होते हैं:

  • कॉन्सेप्ट अभ्यास: ये किसी छात्र को एक या ज़्यादा कॉन्सेप्ट सिखाने के लिए बनाए जाते हैं। ज़्यादा जानकारी के लिए दस्तावेज़ देखिए।
  • प्रैक्टिस अभ्यास: ये सीखे हुए कॉन्सेप्ट का अभ्यास कराने के लिए बनाए जाते हैं। ज़्यादा जानकारी के लिए दस्तावेज़ देखिए।

और गहराई में जाइए

हर अभ्यास में एक वैकल्पिक "और गहराई में जाइए" सेक्शन हो सकता है, जिसमें ये चीज़ें हो सकती हैं:

  • तरीके: अभ्यास को हल करने के अलग-अलग तरीके
  • लेख: अभ्यास के दिलचस्प पहलुओं के बारे में बताते हैं
  • कम्युनिटी वीडियो: ऐसे वीडियो जो अभ्यास को दिखाते हैं, आम तौर पर किसी के द्वारा अभ्यास को शुरू से हल करके दिखाने के ज़रिए

साझा फाइलें

कुछ फाइलें किसी एक अभ्यास तक सीमित नहीं होतीं, बल्कि सभी अभ्यासों पर लागू होती हैं। ज़्यादा जानकारी के लिए दस्तावेज़ देखिए।

दस्तावेज़

हर ट्रैक में कुछ ज़रूरी दस्तावेज़ फाइलें होती हैं। ज़्यादा जानकारी के लिए दस्तावेज़ देखिए।

विजेट

ट्रैक के कुछ हिस्से विजेट में दिखाए जा सकते हैं।

स्टाइल गाइड

सभी दस्तावेज़ों को स्टाइल गाइड का पालन करना चाहिए। Markdown दस्तावेज़ों को भी हमारे Markdown मानकों का पालन करना चाहिए।

उदाहरण

csharp
├── config
|   ├── exercise_readme.go.tmpl
|   └── maintainers.json
├── docs
|   ├── ABOUT.md
|   ├── INSTALLATION.md
|   ├── LEARNING.md
|   ├── RESOURCES.md
|   └── TESTS.md
├── concepts
|   └── numbers
|       ├── about.md
|       ├── introduction.md
|       └── links.json
└── exercises
|   ├── concept
|   |   └── cars-assemble
|   |       ├── .docs
|   |       |   ├── hints.md
|   |       |   ├── introduction.md
|   |       |   └── instructions.md
|   |       ├── .meta
|   |       |   ├── config.json
|   |       |   ├── design.md
|   |       |   └── Exemplar.cs (track-specific)
|   |       ├── CarsAssemble.cs (track-specific)
|   |       ├── CarsAssemble.csproj (track-specific)
|   |       └── CarsAssembleTests.cs (track-specific)
|   ├── practice
|   |   └── leap
|   |       └── .docs
|   |       |   └── instructions.md
|   |       └── .meta
|   |       |   ├── config.json
|   |       |   └── Example.cs (track-specific)
|   |       ├── Leap.cs (track-specific)
|   |       ├── Leap.csproj (track-specific)
|   |       └── LeapTests.cs (track-specific)
|   └── shared
|       └── .docs
|           ├── debug.md
|           ├── help.md
|           └── tests.md
└── config.json

रखरखाव

रेपो अनुमतियाँ

हर ट्रैक को (अपने आप) एक रखरखाव श्रेणी दी जाती है, जो ट्रैक मेंटेनर की GitHub रेपो अनुमतियाँ तय करती है।

अनावश्यक टेस्ट रन से बचना

जब आप किसी अभ्यास से जुड़ा कोई ट्रैक PR मर्ज करते हैं, तो छात्रों के हल के सबसे नए प्रकाशित इटरेशन सब दोबारा टेस्ट किए जाते हैं। लोकप्रिय अभ्यासों में यह बहुत भारी पड़ता है (चरम उदाहरण के तौर पर Python के Hello World में 70,000 टेस्ट रन!)।

हम चाहते हैं कि जहाँ ज़रूरत न हो, वहाँ आप ऐसा करने से बचिए।

अगर मर्ज किया गया कमिट नीचे दी गई दो बातों में से कोई एक भी करता हो, तो हल दोबारा नहीं टेस्ट किए जाएँगे:

  • सिर्फ .docs या .meta फाइलों को छूता हो, या ऐसी अन्य फाइलों को जिनसे उपयोगकर्ताओं का सीधा कोई काम नहीं पड़ता
  • या कमिट संदेश के मुख्य भाग में [no important files changed] हो

अगर मर्ज किया गया कमिट नीचे दी गई दोनों बातें करता हो, तो हल दोबारा टेस्ट किए ही जाएँगे:

  • कमिट संदेश के मुख्य भाग में [no important files changed] न हो
  • और अभ्यास की इनमें से किसी एक फाइल को छूता हो (जैसा उसकी .meta/config.json फाइल में बताया गया हो):
    • टेस्ट फाइलें
    • एडिटर फाइलें
    • इनवैलिडेटर फाइलें

कुछ उदाहरण:

  • Python#3423: सिर्फ दस्तावेज़ छूता है, इसलिए कोई टेस्ट नहीं चले
  • Python#3437: [no important files changed] जोड़कर मर्ज किया गया, इसलिए कोई टेस्ट नहीं चले
  • Csharp#2138: टेस्ट से व्हाइटस्पेस हटा दिया गया था। कीवर्ड नहीं जोड़ा गया था। टेस्ट बिना ज़रूरत दोबारा चले।