Sonke siyayithanda i-Ansible, kodwa i-Ansible yi-YAML. Kunamafomethi amaningi wamafayela okumisa: izinhlu zamanani, amapheya enani lepharamitha, amafayela e-INI, i-YAML, i-JSON, i-XML namanye amaningi. Kodwa-ke, ngenxa yezizathu ezimbalwa kuzo zonke, i-YAML ivame ukubhekwa njengenzima kakhulu. Ikakhulukazi, naphezu kwe-minimalism eqabulayo namandla ahlaba umxhwele okusebenza ngamavelu e-hierarchical, i-syntax ye-YAML ingacasula ngendlela yayo efana ne-Python yokuhlehlisa.
Uma i-YAML ikucasula, ungakwaziβfuthi kufanele! - thatha lezi zinyathelo ezingu-10 ezilandelayo ukuze wehlise ukukhungatheka kwakho kube sezingeni elamukelekayo futhi uthandane ne-YAML. Njengoba kufanele lolu hlu, izeluleko zethu eziyishumi zizobalwa kusukela ekuqaleni, sizokwengeza ukuzindla nemikhuba engokomoya ngokuthanda kwakho π
0. Yenza umhleli wakho asebenze
Akunandaba ukuthi unamuphi umhleli wombhalo, cishe kukhona i-plugin eyodwa yokusebenza ne-YAML. Uma ungenayo, yithole futhi uyifake ngokushesha. Isikhathi esichithwe ukusesha nokusetha sizokhokha izikhathi eziningi ngaso sonke isikhathi lapho kufanele uhlele i-YAML.
Isibonelo, umhleli
Ama-Emacs kumodi ye-YAML nezikhala zokubonisa.
Uma isihleli osithandayo singenayo imodi ye-YAML, khona-ke ezinye zezinkinga zingaxazululwa ngokusebenza nezilungiselelo. Isibonelo, isihleli sombhalo se-GNOME esijwayelekile i-Gedit ayinayo imodi ye-YAML, kodwa ngokuzenzakalelayo igqamisa i-syntax ye-YAML futhi ikuvumela ukuthi ulungiselele umsebenzi ngokuhlehlisa:
Ukusetha ama-indenti ku-Gedit.
I-plugin
Ngamanye amazwi, chitha isikhathi ufunda ngomhleli wakho owuthandayo. Thola ukuthi yena noma umphakathi wakhe othuthukayo unganikela ngani ekusebenzeni ne-YAML, futhi usebenzise lezo zici. Nakanjani ngeke uzisole.
1. Sebenzisa i-linter
Ngokufanelekile, izilimi zokuhlela nezilimi zokumaka zisebenzisa i-syntax ebikezelwayo. Amakhompiyutha ayakwazi ukubikezela, yingakho umqondo wokuthi
Faka
$ sudo dnf install yamllint
Bese uvele usebenzise i-yamllint, uyidlulisele ifayela le-YAML ukuze ulihlole. Lokhu kubukeka kanjani uma udlulisela ifayela elinephutha ku-linter:
$ yamllint errorprone.yaml
errorprone.yaml
23:10 error syntax error: mapping values are not allowed here
23:11 error trailing spaces (trailing-spaces)
Izinombolo ezingakwesokunxele akuzona isikhathi, kodwa izixhumanisi zephutha: umugqa nenombolo yekholomu. Incazelo yephutha ingase ingakutsheli lutho, kodwa wazi kahle ukuthi ikuphi. Bheka nje le ndawo kukhodi, futhi cishe yonke into izocaca.
Uma i-yamllint ingatholi phutha kufayela, akukho lutho oluphrintwa esikrinini. Uma ukuthula okunjalo kukwethusa futhi ufuna impendulo eyengeziwe, ungaqhuba i-linter ngomyalo we-echo onemibandela nge-ampersand ephindwe kabili (&&), kanje:
$ yamllint perfect.yaml && echo "OK"
OK
Ku-POSIX, i-ampersand ephindwe kabili ivutha uma futhi kuphela uma umyalo owanduleleyo ubuyisela u-0. Futhi i-yamllint ivele ibuyisele inani lamaphutha atholiwe, yingakho konke lokhu kwakhiwa okunemibandela kusebenza.
2. Bhala ngePython, hhayi i-YAML
Uma i-YAML ikucasula ngempela, ungavele ubhale kuyo, ngokwezwi nezwi. Kuyenzeka ukuthi i-YAML iwukuphela kwefomethi eqondwa uhlelo lokusebenza. Kodwa nakulokhu, akudingekile ukudala ifayela le-YAML. Bhala kulokho okuthandayo bese uyakuguqula. Isibonelo, kunomtapo wezincwadi omkhulu wePython
Ukuziguqula
Kulokhu, ifayela ledatha liphinde libe iskripthi sePython esikhiqiza i-YAML. Le ndlela ifaneleka kakhulu kumasethi wedatha amancane. Umane ubhale idatha ye-JSON kokuguquguqukayo kwePython, uyendulela ngomyalelo wokungenisa, futhi ekugcineni kwefayela wengeze imigqa emithathu ukuze usebenzise okukhiphayo.
#!/usr/bin/python3
import yaml
d={
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
f=open('output.yaml','w')
f.write(yaml.dump(d))
f.close
Manje sisebenzisa leli fayela ku-Python futhi sithola ifayela le-output.yaml:
$ python3 ./example.json
$ cat output.yaml
glossary:
GlossDiv:
GlossList:
GlossEntry:
Abbrev: ISO 8879:1986
Acronym: SGML
GlossDef:
GlossSeeAlso: [GML, XML]
para: A meta-markup language, used to create markup languages such as DocBook.
GlossSee: markup
GlossTerm: Standard Generalized Markup Language
ID: SGML
SortAs: SGML
title: S
title: example glossary
Lena i-YAML evumelekile ngokuphelele, kodwa i-yamllint izokuxwayisa ukuthi ayiqali ngokuthi -. Hhayi-ke, lokhu kungalungiswa kalula ngesandla noma kuguqulwe kancane kumbhalo wePython.
Ukuguqulwa ngemibhalo
Kulokhu, siqale sibhale ku-JSON, bese sisebenzisa isiguquli njengombhalo ohlukile wePython, okhiqiza i-YAML njengokuphumayo. Uma kuqhathaniswa nendlela yangaphambilini, le ndlela ilinganisa kangcono, njengoba ukuguqulwa kuhlukile kudatha.
Okokuqala, ake sidale ifayela le-JSON elithi example.json, isibonelo, ongalithatha kulo
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
Ngemuva kwalokho sizokwakha umbhalo wokuguqula kalula futhi usilondoloze ngaphansi kwegama elithi json2yaml.py. Lesi script singenisa womabili amamojula e-YAML ne-JSON Python, futhi silayisha ifayela le-JSON elishiwo umsebenzisi, senza ukuguqulwa, futhi sibhala idatha kufayela le-output.yaml.
#!/usr/bin/python3
import yaml
import sys
import json
OUT=open('output.yaml','w')
IN=open(sys.argv[1], 'r')
JSON = json.load(IN)
IN.close()
yaml.dump(JSON, OUT)
OUT.close()
Londoloza lesi skripthi endleleni yesistimu futhi uyiqalise njengoba kudingeka:
$ ~/bin/json2yaml.py example.json
3. Hlaziya kakhulu futhi kaningi
Kwesinye isikhathi kuyasiza ukubheka inkinga ngelinye iso. Uma unenkinga yokumela ubudlelwano phakathi kwedatha yakho ku-YAML, ungayiguqula okwesikhashana ibe into eyaziwa kakhulu.
Isibonelo, uma ukhululekile ukusebenza ngohlu lwesichazamazwi noma i-JSON, ungakwazi ukuguqula i-YAML iye ku-JSON ngemiyalo emibili nje kugobolondo lePython elisebenzisanayo. Ake sithi unefayela le-YAML elithi mydata.yaml, bese libukeka kanje:
$ python3
>>> f=open('mydata.yaml','r')
>>> yaml.load(f)
{'document': 34843, 'date': datetime.date(2019, 5, 23), 'bill-to': {'given': 'Seth', 'family': 'Kenlon', 'address': {'street': '51b Mornington Roadn', 'city': 'Brooklyn', 'state': 'Wellington', 'postal': 6021, 'country': 'NZ'}}, 'words': 938, 'comments': 'Good article. Could be better.'}
Ungathola ezinye izibonelo eziningi kulesi sihloko. Ngaphezu kwalokho, kuneziguquli eziningi eziku-inthanethi nezihlungi zendawo ezitholakalayo. Ngakho-ke ungangabazi ukufometha kabusha idatha uma ubona ingxubevange engaqondakali kuyo.
4. Funda imininingwane
Ukubuyela ku-YAML ngemva kwekhefu elide, kuyasiza ukuvakashela
5. I-Pseudo-configs
Lapho ubhala incwadi noma i-athikili, kuhlale kuwusizo ukuqala ukudweba uhlaka olwandulelayo, okungenani ngendlela yethebula lokuqukethwe. Kuyafana nange-YAML. Kungenzeka ukuthi unombono wokuthi iyiphi idatha edinga ukubhalwa efayeleni le-YAML, kodwa awuqondi ngempela ukuthi ungayixhuma kanjani. Ngakho-ke, ngaphambi kokubaza i-YAML, dweba i-pseudo-config.
I-Pseudo-config ifana nekhodi mbumbulu, lapho ungadingeki ukhathazeke ngesakhiwo noma ukuhlehlisa, ubudlelwano bomzali nengane, ifa kanye nokuzalela. Kuyafana lapha: udweba ukuphindwaphindwa kwedatha njengoba kuvela ekhanda lakho.
Abahleli bohlu lwe-Pseudo-config (uMartin noTabitha) namakhono abo (izilimi zokuhlela: iPython, iPerl, iPascal neLisp, iFortran, i-Erlang, ngokulandelana).
Ngemva kokudweba i-pseudo-config ephepheni, ihlaziye ngokucophelela futhi, uma yonke into ihlelekile, ifomethe ngendlela yefayela elivumelekile le-YAML.
6. Amathebhu vs. Inkinga Yezikhala
Kuzodingeka uxazulule le nkinga
Kunoma isiphi isihleli sombhalo esivamile, ungamisa amathebhu azilungise ngokuzenzakalelayo enanini elishiwo lezikhala, ukuze kuhlubuke abalandeli abakhulu. Ithebhu akudingekile ukuba wesabe.
Njengoba wonke umuntu ozonda we-YAML azi kahle, awukwazi ukubona umehluko phakathi kwamathebhu nezikhala esikrinini. Futhi lapho okuthile kungabonakali, ngokuvamile kuba yinto yokugcina abantu abayikhumbulayo, ngemva kokuba sebeyilungisile, bahlola futhi baqeda zonke ezinye izinkinga ezingase zibe khona. Ihora lesikhathi elichithwe kuthungathwa ijika lethebula noma ibhulokhi lezikhala livele likhale ngokuthi udinga ngokushesha ukudala inqubomgomo ezosetshenziswa eyodwa noma enye, bese usebenzisa isheke eliqinisiwe lokukhonkolo ukuze lihambisane nayo (isibonelo, ngokusebenzisa i-Git hook ukuyiphoqa nge-linter).
7. Okuncane kuningi (noma ngaphezulu kuncane)
Abanye abantu bayathanda ukubhala nge-YAML ngoba igcizelela ukwakheka. Ngesikhathi esifanayo, basebenzisa ukuhlehlisa ukuze bagqamise amabhulokhi wedatha. Lolu uhlobo lomkhonyovu wokulingisa izilimi zemakhaphu ezisebenzisa i-delimiters esobala.
Nasi isibonelo sesakhiwo esinjalo esivela
# Employee records
- martin:
name: Martin D'vloper
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
Kwabanye, le nketho ibasiza ukuthi bahlele ukwakheka kwe-YAML emakhanda abo; kwabanye, ngokuphambene nalokho, ibacasula ngokuningi okungadingekile, ngokombono wabo, ama-indent.
Kodwa uma ungumnikazi wedokhumenti ye-YAML futhi unesibopho sokuyigcina, khona-ke wena kanye nawe kuphela kufanele ichaze indlela yokusebenzisa i-indentation. Uma ucasulwa amaphedi amakhulu, kugcine kuncane ngangokunokwenzeka ngokuya ngencazelo ye-YAML. Isibonelo, ifayela elingenhla elivela kumadokhumenti e-Ansible lingaphinda libhalwe kanje ngaphandle kokulahlekelwa:
---
- martin:
name: Martin D'vloper
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
8. Sebenzisa izikhala
Uma uphindaphinda amaphutha afanayo njalo lapho ugcwalisa ifayela le-YAML, kunengqondo ukufaka isifanekiso kulo njengamazwana. Ngokuzayo ungamane ukopishe lesi sifanekiso bese ufaka idatha yangempela lapho, isibonelo:
---
# - <common name>:
# name: Given Surname
# job: JOB
# skills:
# - LANG
- martin:
name: Martin D'vloper
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
9. Sebenzisa okuhlukile
Uma uhlelo lokusebenza lungakubambeli mkhuba, kungase kudingeke ukuthi uguqule i-YAML ibe yifomethi ehlukile. Ngokuhamba kwesikhathi, amafayela okucupha angakhula ngokwawo futhi kungcono ukuwaguqula abe imibhalo elula ku-Lua noma iPython.
I-YAML iyinto enhle abantu abaningi abayithandayo ngobuncane bayo nobulula, kodwa ikude nethuluzi okuwukuphela kwalo ku-arsenal yakho. Ngakho ngezinye izikhathi ungayenqaba. Imitapo yolwazi yokuhlaziya itholakala kalula ku-YAML, ngakho-ke uma unikeza izinketho zokuthutha ezilula, abasebenzisi bakho bazosinda kulokhu kwehluleka ngokuqhathaniswa ngokulingana nobuhlungu.
Uma ungeke ukwazi ukwenza ngaphandle kwe-YAML, thatha lawa macebiso ayi-10 futhi unqobe ukungathandi kwakho i-YAML unomphela!
Source: www.habr.com