YAML

Τι είναι η YAML;

Μια μορφή δεδομένων αναγνώσιμη από τον άνθρωπο που χρησιμοποιείται συχνά για αρχεία διαμόρφωσης. Σημαίνει "YAML Ain't Markup Language". Χρησιμοποιείται για την αποθήκευση και τη μετάδοση δεδομένων με δομημένο τρόπο που είναι εύκολος στην ανάγνωση και τη σύνταξη από τους ανθρώπους, ενώ παράλληλα είναι απλός στην ανάλυση από τις μηχανές. Σε αντίθεση με άλλες μορφές που χρησιμοποιούν αγκύλες ή ετικέτες, η YAML βασίζεται σε μεγάλο βαθμό στην οπτική εσοχή για να ορίσει τη δομή και την ιεραρχία των δεδομένων.

 

Ποιοι είναι οι βασικοί κανόνες σύνταξης της YAML;

Η YAML χρησιμοποιεί αυστηρά εσοχή κενού διαστήματος - συγκεκριμένα κενά, όχι στηλοθέτες - για να υποδηλώσει την ιεραρχία δεδομένων και τα επίπεδα ένθεσης. Χρησιμοποιεί άνω και κάτω τελεία ακολουθούμενη από κενό (:) για τη δημιουργία ζευγών κλειδιού-τιμής (λεξικά) και παύλες ακολουθούμενες από κενό (-) για τη δημιουργία ταξινομημένων λιστών ή πινάκων. Υποστηρίζει βασικούς τύπους δεδομένων όπως συμβολοσειρές, ακέραιους αριθμούς, αριθμούς κινητής υποδιαστολής και λογικές τιμές.

 

Πώς διαφέρει δομικά η YAML από την JSON και την XML;

Η XML χρησιμοποιεί ετικέτες σήμανσης ανοίγματος και κλεισίματος, και η JSON χρησιμοποιεί δομικούς χαρακτήρες όπως αγκύλες ({ }), αγκύλες ([ ]) και κόμματα.

Η YAML αφαιρεί εντελώς αυτούς τους δομικούς χαρακτήρες, βασιζόμενη αποκλειστικά σε νέες γραμμές και χωρική στοίχιση. Αυτό κάνει τα αρχεία YAML οπτικά πιο καθαρά και λιγότερο λεπτομερή. Επιπλέον, η YAML υποστηρίζει εγγενώς σχόλια (χρησιμοποιώντας το σύμβολο #), επιτρέποντας στους προγραμματιστές να προσθέσουν επεξηγηματικό κείμενο, μια λειτουργία που η JSON απαγορεύει αυστηρά.

 

Ποιες γλώσσες προγραμματισμού και βιβλιοθήκες χρησιμοποιούνται για τον χειρισμό της YAML;

Η YAML είναι ανεξάρτητη από τη γλώσσα. Ωστόσο, σε αντίθεση με την JSON, οι περισσότερες σύγχρονες γλώσσες προγραμματισμού απαιτούν μια εξωτερική βιβλιοθήκη για την ανάλυση αρχείων YAML, καθώς σπάνια ενσωματώνεται στη βασική βιβλιοθήκη προτύπων γλώσσας.

Στην Python, οι προγραμματιστές χρησιμοποιούν κυρίως την εξωτερική βιβλιοθήκη PyYAML για να μετατρέψουν κείμενο YAML απευθείας σε λεξικά και λίστες Python. Παρόμοιες βιβλιοθήκες υπάρχουν για Java (π.χ., SnakeYAML), Go και Ruby για την ανάγνωση και τον χειρισμό διαμορφώσεων YAML.

 

Ποια είναι η κύρια τεχνική ευπάθεια ή ο αυστηρός κανόνας κατά τη σύνταξη YAML;

Ο πιο κρίσιμος κανόνας είναι η απόλυτη απαγόρευση των χαρακτήρων "Tab" για εσοχή. Εάν ένας χρήστης πατήσει το πλήκτρο Tab αντί για το πλήκτρο διαστήματος για να ευθυγραμμίσει τα δεδομένα, ο αναλυτής θα αποτύχει αμέσως και θα εμφανίσει ένα συντακτικό σφάλμα. Επιπλέον, επειδή η δομή εξαρτάται εξ ολοκλήρου από την οπτική ευθυγράμμιση, τα βαθιά ένθετα αρχεία YAML απαιτούν ακριβή απόσταση, καθιστώντας τα επιρρεπή σε σφάλματα μορφοποίησης κατά τη χειροκίνητη επεξεργασία.

 

Πώς χρησιμοποιείται πρακτικά το YAML στους τομείς των DevOps και MLOps;

Στα DevOps και MLOps, το YAML είναι το βιομηχανικό πρότυπο για τον ορισμό της "Υποδομής ως Κώδικα" και των αυτοματοποιημένων αγωγών ανάπτυξης. Για παράδειγμα, ένας μηχανικός μηχανικής μάθησης χρησιμοποιεί αρχεία manifest Kubernetes .yaml ή ένα αρχείο docker-compose.yml για να ορίσει το ακριβές περιβάλλον διακομιστή που απαιτείται για τη φιλοξενία ενός μοντέλου AI. Σε αυτό το αρχείο YAML, καθορίζουν ρητά την εκχωρημένη μνήμη, τις απαιτούμενες θύρες δικτύου και την εικόνα του λειτουργικού συστήματος. Τα εργαλεία αυτοματισμού όπως τα GitHub Actions διαβάζουν αυτό το μοναδικό αρχείο YAML για να δημιουργήσουν, να δοκιμάσουν και να αναπτύξουν αυτόματα την εφαρμογή μηχανικής μάθησης στο cloud χωρίς χειροκίνητη παρέμβαση.