Δημιουργία διαδρομών


Μια διαδρομή αποτελείται από πολλά διαφορετικά μέρη.

Μεταδεδομένα

Η διαμόρφωση και τα μεταδεδομένα της διαδρομής ορίζονται στο αρχείο config.json. Περιέχει τις ασκήσεις, τις έννοιες και τις ρυθμίσεις του editor της διαδρομής, και πολλά άλλα. Ρίξε μια ματιά στην τεκμηρίωση του config.json.

Έννοιες

Όλες οι ασκήσεις εννοιών και εξάσκησης μιας διαδρομής αφορούν έννοιες. Αυτές οι έννοιες είναι από μόνες τους ξεχωριστές οντότητες. Δες την τεκμηρίωση για περισσότερες πληροφορίες.

Οι έννοιες που διδάσκονται στις ασκήσεις εννοιών της διαδρομής σχηματίζουν ένα πρόγραμμα σπουδών. Το πρόγραμμα σπουδών παρουσιάζεται στους μαθητές ως χάρτης εννοιών. Δες την τεκμηρίωση του χάρτη εννοιών για να μάθεις πώς να αναπτύξεις τον χάρτη εννοιών για ένα πρόγραμμα σπουδών.

Για περισσότερες πληροφορίες σχετικά με τον σχεδιασμό ενός προγράμματος σπουδών, δες την τεκμηρίωση του προγράμματος σπουδών.

Ασκήσεις

Οι διαδρομές έχουν δύο τύπους ασκήσεων:

  • Ασκήσεις εννοιών: είναι σχεδιασμένες για να διδάξουν μία ή περισσότερες έννοιες σε έναν μαθητή. Δες την τεκμηρίωση για περισσότερες πληροφορίες.
  • Ασκήσεις εξάσκησης: είναι σχεδιασμένες για εξάσκηση πάνω σε έννοιες που έχουν μαθευτεί. Δες την τεκμηρίωση για περισσότερες πληροφορίες.

Πιο βαθιά

Κάθε άσκηση έχει μια προαιρετική ενότητα Πιο βαθιά που μπορεί να περιέχει:

  • Προσεγγίσεις: διαφορετικούς τρόπους με τους οποίους μπορεί να λυθεί η άσκηση
  • Άρθρα: περιγράφουν ενδιαφέρουσες πτυχές της άσκησης
  • Βίντεο της κοινότητας: βίντεο που παρουσιάζουν την άσκηση, συνήθως με κάποιον να τη λύνει από το μηδέν

Κοινόχρηστα αρχεία

Μερικά αρχεία δεν είναι ειδικά για μεμονωμένες ασκήσεις, αλλά ισχύουν για όλες τις ασκήσεις. Δες την τεκμηρίωση για περισσότερες πληροφορίες.

Τεκμηρίωση

Κάθε διαδρομή έχει μερικά απαιτούμενα αρχεία τεκμηρίωσης. Δες την τεκμηρίωση για περισσότερες πληροφορίες.

Widgets

Κάποια μέρη της διαδρομής μπορούν να εμφανιστούν σε widgets.

Οδηγός στυλ

Όλα τα έγγραφα πρέπει να ακολουθούν τον οδηγό στυλ. Τα έγγραφα 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.

Πώς να αποφεύγεις περιττές εκτελέσεις tests

Όταν κάνεις merge ένα PR μιας διαδρομής που αγγίζει μια άσκηση, προκαλείς να ελεγχθούν ξανά όλες οι τελευταίες δημοσιευμένες εκδόσεις των λύσεων των μαθητών. Για δημοφιλείς ασκήσεις, αυτή είναι μια πολύ ακριβή διαδικασία (70.000 εκτελέσεις tests για το Hello World της Python, σε ακραία περίπτωση!).

Σε ενθαρρύνουμε να προσπαθήσεις να το αποφύγεις όταν δεν είναι απαραίτητο.

Οι λύσεις δεν θα ελεγχθούν ξανά αν το commit που έγινε merge είτε:

  • αγγίζει μόνο αρχεία .docs ή .meta, ή άλλα αρχεία με τα οποία δεν αλληλεπιδρούν οι χρήστες
  • ή περιέχει το [no important files changed] στο σώμα του commit.

Οι λύσεις θα ελεγχθούν ξανά αν το commit που έγινε merge πληροί και τις δύο παρακάτω προϋποθέσεις:

  • του λείπει το [no important files changed] από το σώμα του commit
  • και αγγίζει ένα από τα παρακάτω αρχεία μιας άσκησης (όπως ορίζονται στο αρχείο .meta/config.json της):
    • αρχεία tests
    • αρχεία του editor
    • αρχεία invalidator

Μερικά παραδείγματα:

  • Python#3423: Αγγίζει μόνο αρχεία τεκμηρίωσης, οπότε δεν εκτελέστηκαν tests
  • Python#3437: Έγινε merge με προσθήκη του [no important files changed], οπότε δεν εκτελέστηκαν tests
  • Csharp#2138: Αφαιρέθηκαν τα κενά διαστήματα από τα tests. Η λέξη-κλειδί δεν προστέθηκε. Τα tests εκτελέστηκαν ξανά χωρίς λόγο.