Sonke siyayithanda i-Ansible, kodwa i-Ansible yi-YAML. Zininzi iifomati zeefayile zoqwalaselo: uluhlu lwamaxabiso, iparameter-value pairs, INI iifayile, YAML, JSON, XML kunye nezinye ezininzi. Nangona kunjalo, ngenxa yezizathu ezininzi kuzo zonke, i-YAML ihlala ithathwa ngokuba inzima kakhulu. Ngokukodwa, ngaphandle kokuhlaziya i-minimalism kunye namandla anomtsalane okusebenza ngamaxabiso aphantsi, i-syntax ye-YAML inokucaphukisa ngendlela yayo efana ne-Python yokungena.
Ukuba i-YAML iyakucaphukisa, unakoβkwaye kufanele! -thatha la manyathelo ali-10 alandelayo ukunciphisa ukukhathazeka kwakho ukuya kwinqanaba elamkelekileyo kwaye uthandane ne-YAML. Njengoko kufanelekile olu luhlu, iingcebiso zethu ezilishumi ziya kubalwa ukusuka ekuqaleni, siya kongeza ukucamngca kunye nezenzo zokomoya ngokuthanda π
0. Yenza umhleli wakho asebenze
Ayinamsebenzi nokuba yeyiphi na umhleli wombhalo, kukho ubuncinci iplagin enye yokusebenza neYAML. Ukuba awunayo, yifumane kwaye uyifake kwangoko. Ixesha elichithwe ukukhangela kunye nokucwangcisa liya kuhlawula amaxesha amaninzi ngalo lonke ixesha kufuneka uhlele i-YAML.
Umzekelo, umhleli
I-Emacs kwimowudi ye-YAML kunye nezithuba zokubonisa.
Ukuba umhleli wakho omthandayo akanayo imo yeYAML, ke ezinye zeengxaki zinokusonjululwa ngokusebenzisa izicwangciso. Umzekelo, umhleli wombhalo osezantsi we-GNOME i-Gedit ayinayo imo ye-YAML, kodwa ngokungagqibekanga ibalaselisa i-syntax ye-YAML kwaye ikuvumela ukuba uqwalasele umsebenzi ngokuhambelana nokuhambelana:
Ukucwangcisa i-indints kwi-Gedit.
Iplagi
Ngamanye amazwi, chitha ixesha ufunda ngomhleli wakho owuthandayo. Fumanisa ukuba yena okanye uluntu lwakhe lophuhliso anokunikezela ngalo ekusebenzeni neYAML, kwaye usebenzise ezo mpawu. Ngokuqinisekileyo awuyi kuzisola.
1. Sebenzisa ilitha
Ngokufanelekileyo, iilwimi zokucwangcisa kunye neelwimi zokuphawula zisebenzisa i-syntax eqikelelwayo. Iikhompyuter zilungile kuqikelelo, yiyo loo nto imbono yokuba
Faka ifayile
$ sudo dnf install yamllint
Emva koko ubaleka i-yamllint, uyigqithise ifayile ye-YAML ukuyijonga. Le yindlela ekhangeleka ngayo ukuba ugqithisa ifayile enempazamo kwilitha:
$ yamllint errorprone.yaml
errorprone.yaml
23:10 error syntax error: mapping values are not allowed here
23:11 error trailing spaces (trailing-spaces)
Amanani asekhohlo ayiloxesha, kodwa ulungelelwaniso lwempazamo: umqolo kunye nenani lekholamu. Inkcazo yempazamo ayinakukuxelela nto, kodwa uyazi kakuhle apho ikhoyo. Jonga nje le ndawo kwikhowudi, kwaye mhlawumbi yonke into iya kucaca.
Xa i-yamllint ingafumani ziphoso kwifayile, akukho nto ishicilelweyo kwikhusi. Ukuba ukuthula okunjalo kuyakoyikisa kwaye ufuna ingxelo encinci, ngoko ungabaleka i-linter ngomyalelo we-echo onemeko nge-ampersand ephindwe kabini (&&), ngolu hlobo:
$ yamllint perfect.yaml && echo "OK"
OK
Kwi-POSIX, i-ampersand ephindwe kabini iyacima ukuba kwaye kuphela ukuba umyalelo owandulelayo ubuyisela u-0. Kwaye yamllint ibuyisela nje inani leziphoso ezifunyenweyo, yiyo loo nto lonke olu lwakhiwo olunemiqathango lusebenza.
2. Bhala ngePython, hayi YAML
Ukuba i-YAML iyakucaphukisa ngokwenene, ungabhali kuyo, ngokoqobo. Kwenzeka ukuba i-YAML kuphela kwendlela eqondwa sisicelo. Kodwa nakule meko, akuyomfuneko ukwenza ifayile ye-YAML. Bhala kwinto oyithandayo uze uyiguqule. Umzekelo, kukho ithala leencwadi elikhulu lePython
Ukuziguqula
Kule meko, ifayile yedatha ikwasisikripthi sePython esenza i-YAML. Le ndlela ifaneleke kakhulu kwiiseti zedatha ezincinci. Ubhala ngokulula idatha ye-JSON ibe yintlupheko yePython, yandulela ngomyalelo wokungenisa, kwaye ekupheleni kwefayile yongeza imigca emithathu ukuphumeza imveliso.
#!/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
Ngoku siqhuba le fayile kwiPython kwaye sifumane ifayile ye-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
Le yi-YAML esebenzayo ngokugqibeleleyo, kodwa i-yamllint iya kukulumkisa ukuba ayiqalisi nge-. Ewe, oku kunokulungiswa ngokulula ngesandla okanye ukulungiswa kancinci kwiscript sePython.
Uguqulo kusetyenziswa izikripthi
Kule meko, siqala sibhala kwi-JSON, kwaye emva koko siqhube isiguquli njengeskripthi sePython esahlukileyo, esivelisa i-YAML njengemveliso. Xa kuthelekiswa nendlela yangaphambili, le ndlela yokulinganisa ingcono, ekubeni ukuguqulwa kuhluke kwidatha.
Okokuqala, makhe senze ifayile yeJSON umzekelo.json, umzekelo, ungayithatha kuyo
{
"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"
}
}
}
}
}
Emva koko siya kwenza iskripthi esilula sokuguqula kwaye sigcine phantsi kwegama json2yaml.py. Esi script singenisa ngaphandle zombini iimodyuli ze-YAML kunye ne-JSON Python, kwaye ilayisha ifayile ye-JSON echazwe ngumsebenzisi, yenza uguqulelo, kwaye ibhala idatha kwifayile yemveliso.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()
Gcina esi script kwindlela yesixokelelwano kwaye uyiqhube njengoko kufuneka:
$ ~/bin/json2yaml.py example.json
3. Cazulula kakhulu kwaye rhoqo
Ngamanye amaxesha kuba luncedo ukujonga ingxaki ngenye indlela. Ukuba unengxaki yokumela ubudlelwane phakathi kwedatha yakho kwi-YAML, ungayiguqula okwethutyana ibe yinto eqhelekileyo.
Umzekelo, ukuba ukhululekile ukusebenza ngoluhlu lwesichazi-magama okanye i-JSON, unokuguqula i-YAML ibe yi-JSON ngemiyalelo nje emibini kwiqokobhe lePython elisebenzisanayo. Masithi unefayile ye-YAML mydata.yaml, ke yile nto inokuthi ijongeke:
$ 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.'}
Ungafumana eminye imizekelo emininzi kwesi sihloko. Ukongeza, kukho abaguquli abaninzi be-intanethi kunye nabacandisi bendawo abakhoyo. Ngoko ungathandabuzi ukufomatha idatha xa ubona kuphela i-jumble engaqondakaliyo kuyo.
4. Funda iinkcukacha
Ukubuyela kwi-YAML emva kwekhefu elide, kuyanceda ukutyelela
5. I-Pseudo-configs
Xa ubhala incwadi okanye inqaku, kusoloko kuluncedo ukuqala uzobe ulwandlalo lwangaphambili, ubuncinane ngendlela yoluhlu lweziqulatho. Iyafana neYAML. Ngokunokwenzeka, unombono wokuba yeyiphi idatha ekufuneka ibhalwe kwifayile ye-YAML, kodwa awuyiqondi kakuhle indlela yokuyidibanisa. Ke ngoko, phambi kokuba ukrole i-YAML, zoba i-pseudo-config.
I-Pseudo-config ifana nekhowudi-pseudo, apho akufanele ukhathazeke malunga nesakhiwo okanye ukufakwa, ubudlelwane bomzali nomntwana, ilifa kunye nokuzalela. Kuyafana apha: uzobe uphindaphinda idatha njengoko ivela entlokweni yakho.
I-Pseudo-config listers programmers (uMartin noTabitha) kunye nezakhono zabo (iilwimi zeprogram: iPython, iPerl, iPascal kunye neLisp, iFortran, i-Erlang, ngokulandelanayo).
Emva kokuzoba i-pseudo-config kwiphepha, lihlalutye ngononophelo kwaye, ukuba yonke into ilungile, yifomethe ngendlela yefayile ye-YAML esebenzayo.
6. IiTabhu vs. Ingxaki yeZithuba
Kuya kufuneka uyisombulule le ngxaki
Kuwo nawuphi na umhleli wokubhaliweyo oqhelekileyo, ungaqwalasela-ozichanekileyo iithebhu ukuya kwinani elikhankanyiweyo lezithuba, ngoko uvukelo lwabalandeli abangundoqo. Ithebhu akuyomfuneko ukuba woyike.
Njengoko wonke umthiyi we-YAML esazi kakuhle, awuwuboni umahluko phakathi kweethebhu kunye nezithuba kwiscreen. Yaye xa into ethile ingabonakali, idla ngokuba yinto yokugqibela abantu abayikhumbulayo, emva kokuba beyilungisile, bayijongile baza bashenxisa zonke ezinye iingxaki ezinokwenzeka. Iyure yexesha elichithwe kukhangelwa igophe loluhlu okanye ibhloko yezithuba ikhala nje ukuba ufuna ngokungxamisekileyo ukwenza umgaqo-nkqubo wokusetyenziswa komnye okanye omnye, kwaye emva koko uphumeze utshekisho lwekhonkrithi olomeleziweyo lokuthotyelwa kwayo (umzekelo, ihuku yeGit ukuyinyanzela kwilitha).
7. Okuncinci kungaphezulu (okanye ngaphezulu kuncinci)
Abanye abantu bayathanda ukubhala kwi-YAML kuba igxininisa ubume. Kwangaxeshanye, basebenzisa ngokusebenzayo indentation ukugqamisa iibhloko zedatha. Olu luhlobo lobuqhophololo lokuxelisa iilwimi zokuphawula ezisebenzisa i-delimiters ezicacileyo.
Nanku umzekelo wesakhiwo 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, olu khetho lubanceda bahlele ukwakheka kwe-YAML ezintlokweni zabo; kwabanye, ngokuchaseneyo, iyabacaphukisa ngobuninzi obungeyomfuneko, ngokoluvo lwabo, i-indents.
Kodwa ukuba ungumnini woxwebhu lwe-YAML kwaye unoxanduva lokulugcina, ngoko wena kunye nawe kuphela kufuneka ichaze indlela yokusebenzisa i-indentation. Ukuba uyacatshukiswa kukukhuselwa kwamacala amakhulu, yigcine ifikelele kobona buncinci ngokweenkcukacha ze-YAML. Umzekelo, le fayile ingentla isuka kuxwebhu olufanelekileyo ingaphinda ibhalwe ngolu hlobo ngaphandle kwelahleko:
---
- martin:
name: Martin D'vloper
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
8. Sebenzisa izikhewu
Ukuba uhlala uphinda iimpazamo ezifanayo xa ugcwalisa ifayile ye-YAML, iyavakala ukufaka itemplate kuyo njengophawu. Ngexesha elizayo unokukopa le template kwaye ufake idatha yokwenyani apho, umzekelo:
---
# - <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 into eyahlukileyo
Ukuba isicelo asinakukrwitsha kuwe, ngoko ke kunokuba luncedo ukutshintsha i-YAML kwifomati eyahlukileyo. Ngokuhamba kwexesha, iifayile zoqwalaselo zinokukhula ngokwazo kwaye ke kungcono ukuziguqulela zibe zizikripthi ezilula kwiLua okanye kwiPython.
I-YAML yinto entle ethandwa ngabantu abaninzi ngobuncinci bayo kunye nokulula, kodwa ikude nesona sixhobo kuphela kumkhosi wakho. Ngoko ngamanye amaxesha unokukwala. Iilayibrari zokwahlulahlula kulula ukuzifumana kwi-YAML, ke ukuba unikezela ngeendlela ezilula zokufuduka, abasebenzisi bakho baya kusinda kolu kusilela ngokungenantlungu.
Ukuba awukwazi ukwenza ngaphandle kwe-YAML, ke thatha ezi ngcebiso zili-10 kwaye woyise ukungathandi kwakho kwe-YAML kube kanye!
umthombo: www.habr.com