Εισαγωγή στο YAML για αρχάριους

Εάν είστε προγραμματιστής που γράφει API, πιθανότατα έχετε συναντήσει το YAML, παρόλο που το κύριο εργαλείο σειριοποίησης μπορεί να είναι το JSON.

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

Ας μάθουμε τα βασικά του YAML.

Σειριοποίηση δεδομένων

Κάθε φορά που θέλετε να στείλετε κάποια δομή δεδομένων ή ένα αντικείμενο σε δίκτυα υπολογιστών, ας πούμε στο Διαδίκτυο, πρέπει να το μετατρέψετε σε ειδική μορφή για να το διαβάσετε και να το αποθηκεύσετε. Η διαδικασία είναι κοινώς γνωστή ως σειριοποίηση και έχει τεράστια σημασία στο διαδίκτυο. Ένα συνηθισμένο παράδειγμα χρήσης της σειριοποίησης είναι κατά την ανάγνωση δεδομένων από βάσεις δεδομένων και τη μεταφορά τους στον Ιστό.

Ορισμένοι σχηματισμοί σειριοποίησης περιλαμβάνουν JSON, YAML, XML.

Σε αυτό το άρθρο, μιλάμε για το YAML και στο τέλος του άρθρου, θα μπορέσετε να εξερευνήσετε το YAML και να έχετε μια σαφή εισαγωγή στο YAML.

Τι είναι το YAML και πώς με ωφελεί;

Το YAML είναι μια μορφή σειριοποίησης δεδομένων που σημαίνει YAML δεν είναι γλώσσα σήμανσης.

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

  Πώς να ακυρώσετε μια εκδήλωση Ημερολογίου Google

Ένα άλλο πλεονέκτημα του YAML είναι η υποστήριξή του σε διάφορους τύπους δεδομένων όπως περιπτώσεις, πίνακες, λεξικά, λίστες και βαθμίδες. Έχει καλή υποστήριξη για τις πιο δημοφιλείς γλώσσες όπως JavaScript, Python, Ruby, Java κ.λπ.

Το YAML υποστηρίζει μόνο διαστήματα και έχει διάκριση πεζών-κεφαλαίων καθώς και διάκριση χώρου. Οι καρτέλες δεν γίνονται αποδεκτές παγκοσμίως. Ένα αρχείο YAML έχει επέκταση .yaml.

Βασική σύνταξη YAML

Κάθε YAML ξεκινά με — που υποδηλώνει την έναρξη ενός αρχείου YAML.

Κατά τη δημιουργία ενός API, μας ενδιαφέρει μια δυνατότητα που παρέχεται από την YAML γνωστή ως χαρτογράφηση.

Τα ακόλουθα παραδείγματα δείχνουν το παράδειγμα της χαρτογράφησης στο YAML.

---
name: James
boy: yes
GPA: 3.41

Η σύνταξη αντιστοίχισης είναι κλειδί: τιμή. (Σημειώστε τον χώρο, είναι πολύ σημαντικός στο YAML, σε αντίθεση με το JSON ή το XML.

Το YAML υποστηρίζει επίσης τύπους δεδομένων όπως χαρακτήρες, συμβολοσειρές, ακέραιους αριθμούς, κυμαινόμενες τιμές και συλλογές όπως πίνακες, λίστες που κατασκευάζονται από βασικούς τύπους δεδομένων.

Τύποι δεδομένων στο YAML

Ας δούμε το παράδειγμα ενός YAML παρακάτω:

---

MALE: FALSE

GPA: 3.61

ISSUES: NULL

NAME: “BIGYAN”

AGE: 16

Ο πρώτος τύπος δεδομένων είναι boolean, όπου μπορεί να έχει δύο τιμές: true ή false. Η τιμή της ΣΔΣ είναι κινητής υποδιαστολής. Το YAML υποστηρίζει επίσης τον μηδενικό τύπο δεδομένων όπως έχουμε για τα “Ζητήματα”. Η τιμή του “Name” είναι μια συμβολοσειρά που πρέπει να αναφέρεται σε διπλά ή μονά εισαγωγικά. Το YAML υποστηρίζει επίσης συμβολοσειρά πολλαπλών γραμμών και συμβολοσειρά πολλαπλών γραμμών ως ενιαία για αναγνωσιμότητα.

Χορδές πολλαπλών γραμμών και μονογραμμών

---

About: >

 Hello this is Ryan

 From Alabama and I like to

 Play soccer.

Το σύμβολο > σάς επιτρέπει να γράψετε μια συμβολοσειρά σε πολλές γραμμές. Η πρόταση είναι στην πραγματικότητα μια περιγραφή μιας γραμμής αν και έχουμε πολλές γραμμές.

  13 τρόποι για να βελτιώσετε το απόρρητο του MIUI- Σταματήστε τη συλλογή δεδομένων της Xiaomi

Μπορούμε επίσης να έχουμε πολλές συμβολοσειρές γραμμής αν χρησιμοποιήσουμε το | σύμβολο όπως επιτρέπεται:

About: |

 This is a multiline string

 And will be printed line wise.

Λίστα

Οι λίστες είναι πολύ σημαντικές στο YAML.

Ένα παράδειγμα της λίστας δίνεται παρακάτω.

---

- apple

- banana

- mango

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

---

Fruits:

 Apples

 Banana

 Guava 

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

Automobiles:

 Car:

     Hyundai

     Volkswagen

     Ford

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

Subjects:

     Engineering:

       Mechanical engineering:

         Design and manufacture

         Automobile

         Control and Design

       Civil engineering:

         Structural engineering

         Hydropower

       Arts:

         Medieval

         Modern

         Painting

Το YAML παρέχει επίσης σύμβολα & και * ως άγκυρα και αναφορές στην άγκυρα για να αποφευχθεί η αντιγραφή. Είναι απαραίτητα σε αρχεία διαμόρφωσης σε πλαίσια όπως το Ruby on Rails για να γίνει το αρχείο YAML μικρότερο.

Δείτε το παρακάτω παράδειγμα

<span class="hljs-attr">details:</span> <span class="hljs-meta">&details</span>
    <span class="hljs-attr">name:</span> <span class="hljs-string">"John"
</span>    age: 18
profession: engineer

<< : * details

που ισοδυναμεί με:

profession: engineer

name: "John"

age: 18

YAML στην Python

Η Python υποστηρίζει YAML, συμπεριλαμβανομένων ορισμένων λειτουργικών μονάδων όπως το ruamel και το pyyaml. Ξεκινήστε εγκαθιστώντας το pyyaml

pip εγκατάσταση pyyaml

Για το σεμινάριο, δημιουργήστε ένα αρχείο με όνομα details.yaml

name: "john"

age:18

gender: male

Δημιουργήστε ένα άλλο αρχείο με το όνομα feed.yaml με το ακόλουθο περιεχόμενο:

sports:

 football
 basketball
 cricket
 baseball

---
countries:
 Brazil
 Lithuania
 Australia
 USA

Ας ξεκινήσουμε διαβάζοντας το αρχείο details.yaml

import yaml

with open('details.yaml') as f:
    
    data = yaml.load(f, Loader=yaml.FullLoader)
    print(data)

Αφού τρέξουμε το αρχείο details.py, έχουμε την ακόλουθη έξοδο

 $ python details.py
{'name': "john", 'age': 18, 'gender': male}
import yaml

with open(r'feed.yaml') as file:
    # The FullLoader parameter handles the conversion from YAML
    # scalar values to Python the dictionary format
    fruits_list = yaml.load(file, Loader=yaml.FullLoader)

    print(fruits_list)

Γράψιμο YAML σε αρχεία στην Python

import yaml

dict_file = [{'sports' : ['hockey', 'rugby', 'tennis', 'ping pong', 'football', 'badminton']},
{'countries' : ['Jamaica', 'England', 'Nepal', 'Netherlands', 'South Africa', 'Bolivia', 'Portugal']}]

with open(r'E:data.yaml', 'w') as file: #create a new yaml file 
    data = yaml.dump(dict_file, file)

Υλοποίηση YAML στο Node.js

Η Node.js είναι μια γλώσσα επεξεργασίας από την πλευρά του διακομιστή και η σειριοποίηση δεδομένων έχει τεράστια σημασία στη διαδικασία ανάπτυξης.

  6 τρόποι για να διορθώσετε το ηχητικό σήμα του εξωτερικού σκληρού δίσκου Seagate και το οποίο δεν αναγνωρίζεται

Για το σεμινάριο μας, ας εξετάσουμε το ακόλουθο αρχείο example.yaml:

name:John

age:18

Hobbies:

 Hobby1:Football

 Hobby2:BasketBall

 Hobby3:Hockey

Job:

-System administrator

-Programmer

Έχουμε μια βιβλιοθήκη npm διαθέσιμη για το Node.js που ονομάζεται js-yaml. Ας ξεκινήσουμε εγκαθιστώντας τη μονάδα από

npm install js-yaml

Στη συνέχεια χρησιμοποιούμε τη μονάδα js-yaml στο αρχείο μας.

const yaml = require('js-yaml'); //initialize js-yaml
const fs   = require('fs'); //initialize filestream

try {
  const result = yaml.load(fs.readFileSync('example.yml', 'utf8'));
  console.log(result);
} catch (e) {
  console.log(e); //catch exception
}

συμπέρασμα

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

Τα αρχεία YAML μπορούν να δημιουργηθούν για σταθερές δομές δεδομένων χρησιμοποιώντας εντολές εκτύπωσης που γράφουν τόσο τα δεδομένα όσο και τη συγκεκριμένη διακόσμηση του YAML. Ωστόσο, ένας αποκλειστικός εκπομπός YAML είναι προτιμότερος για την απόρριψη διαφόρων ή πολύπλοκων ιεραρχικών δεδομένων. Ομοίως, με κανονικές εκφράσεις, τα βασικά αρχεία YAML (π.χ. ζεύγη κλειδιού-τιμής) αναλύονται εύκολα.