10 gcéim go dtí YAML Zen

Is breá linn go léir Ansible, ach tá YAML ag Ansible. Tá go leor formáidí ann do chomhaid chumraíochta: liostaí luachanna, péirí luach-paraiméadar, comhaid INI, YAML, JSON, XML agus go leor eile. Mar sin féin, ar chúiseanna éagsúla as gach ceann acu, is minic a mheastar YAML an-deacair. Go háirithe, in ainneoin a minimalism athnuachana agus cumais mhórthaibhseach chun oibriú le luachanna ordlathacha, is féidir leis an chomhréir YAML a bheith annoying lena chur chuige Python-cosúil le eangú.

10 gcéim go dtí YAML Zen

Má bhuaileann YAML tú, is féidir leat - agus ba cheart duit! – déan na 10 gcéim seo a leanas chun do chuid frustrachais a laghdú go leibhéal inghlactha agus titim i ngrá le YAML. Mar is cuí leis an liosta seo, déanfar ár ndeich leid a uimhriú ón tús, cuirfimid cleachtais mhachnaimh agus spioradálta leis ar thoil 😉

0. Déan do eagarthóir ag obair

Is cuma cén eagarthóir téacs atá agat, is dócha go bhfuil breiseán amháin ar a laghad ann chun oibriú le YAML. Mura bhfuil ceann agat, faigh agus suiteáil láithreach é. Íocfaidh an t-am a chaitear ag cuardach agus ag socrú suas go leor uaireanta gach uair a chaithfidh tú YAML a chur in eagar.

Mar shampla, eagarthóir Adamh tacaíonn YAML de réir réamhshocraithe, ach le haghaidh GNU Emacs beidh ort pacáistí breise a shuiteáil, mar shampla, mód yaml.

10 gcéim go dtí YAML Zen

Emacs i mód YAML agus spásanna taispeána.

Mura bhfuil modh YAML ag an eagarthóir is fearr leat, is féidir cuid de na fadhbanna a réiteach trí oibriú leis na socruithe. Mar shampla, níl mód YAML ag eagarthóir caighdeánach téacs GNOME Gedit, ach de réir réamhshocraithe leagann sé béim ar chomhréir YAML agus ligeann sé duit obair le eangú a chumrú:

10 gcéim go dtí YAML Zen

Fleasc a shocrú in Gedit.

Breiseán spásanna tarraingthe do Gedit, taispeánann sé spásanna mar phonc, ag fáil réidh le débhríochtaí le leibhéil eangaithe.

I bhfocail eile, caith am ag foghlaim faoin eagarthóir is fearr leat. Faigh amach cad atá le tairiscint aige nó ag a phobal forbartha as oibriú le YAML, agus úsáid na gnéithe sin. Is cinnte nach mbeidh aiféala ort.

1. Bain úsáid as línéar

Go hidéalach, úsáideann teangacha ríomhchlárúcháin agus teangacha marcála comhréir intuartha. Tá ríomhairí go maith ag intuarthacht, agus sin an fáth a bhfuil coincheap na línse. Más rud é, le 40 bliain ar an bhfód, imithe thart ort agus nach n-úsáideann tú lintéar YAML fós, tá sé in am triail a bhaint as yamllint.

Suiteáil yamlint Is féidir leat an bainisteoir pacáiste caighdeánach Linux a úsáid. Mar shampla, i Red Hat Enterprise Linux 8 nó Fedora déantar é mar seo:

$ sudo dnf install yamllint

Ansin ritheann tú yamllint, ag dul thar an gcomhad YAML lena sheiceáil. Seo é an chuma a bheidh air má chuireann tú comhad a bhfuil earráid ann chuig an línéar:

$ yamllint errorprone.yaml
errorprone.yaml
23:10     error    syntax error: mapping values are not allowed here
23:11     error    trailing spaces  (trailing-spaces)

Ní hiad na huimhreacha ar chlé an t-am, ach comhordanáidí na hearráide: uimhir ró agus colún. B’fhéidir nach n-insíonn an cur síos ar an earráid rud ar bith duit, ach tá a fhios agat go díreach cá bhfuil sé. Díreach breathnú ar an áit seo sa chód, agus is dócha go mbeidh gach rud soiléir.

Nuair nach bhfaighidh Yamllint aon earráidí i gcomhad, ní phriontáiltear aon rud ar an scáileán. Má chuireann ciúnas den sórt sin eagla ort agus go dteastaíonn beagán níos mó aiseolais uait, is féidir leat an lintéir a rith leis an ordú macalla coinníollach trí ampersand dúbailte (&&), mar seo:

$ yamllint perfect.yaml && echo "OK"
OK

I POSIX, cuirtear ampersand dúbailte i bhfeidhm má thagann an t-ordú roimhe seo ar ais 0. Agus ní thugann yamllint ach líon na n-earráidí a aimsíodh ar ais, agus is é sin an fáth go n-oibríonn an tógáil iomlán coinníollach seo.

2. Scríobh i Python, ní YAML

Más rud é go gcuireann YAML as do thú go mór, ná scríobh isteach ann, go litriúil. Tarlaíonn sé gurb é YAML an t-aon fhormáid a thuigeann an feidhmchlár. Ach fiú sa chás seo, ní gá comhad YAML a chruthú. Scríobh ar cad is maith leat agus ansin thiontú. Mar shampla, tá leabharlann iontach ann do Python pyaml agus dhá mhodh tiontaithe: féin-chomhshó agus tiontú trí scripteanna.

Féin-tiontú

Sa chás seo, is script Python é an comhad sonraí freisin a ghineann YAML. Is fearr a oireann an modh seo do thacair bheaga sonraí. Ní dhéanann tú ach na sonraí JSON a scríobh isteach in athróg Python, réamhrá a dhéanamh le treoir allmhairithe, agus ag deireadh an chomhaid cuir trí líne leis chun an t-aschur a chur i bhfeidhm.

#!/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

Anois ritheann muid an comhad seo i Python agus faighimid an comhad 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

Is YAML breá bailí é seo, ach tabharfaidh yamllint rabhadh duit nach dtosaíonn sé le -. Bhuel, is féidir é seo a cheartú go héasca de láimh nó beagán a mhodhnú sa script Python.

Comhshó trí scripteanna

Sa chás seo, scríobhann muid i JSON ar dtús, agus ansin reáchtáilimid an tiontaire mar script Python ar leith, a tháirgeann YAML mar aschur. I gcomparáid leis an modh roimhe seo, tá an modh seo ag scála níos fearr, ós rud é go bhfuil an comhshó ar leithligh ó na sonraí.

Ar dtús, cruthaimis comhad JSON example.json, mar shampla, is féidir leat é a thógáil uaidh json.org:

{
	"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"
			}
		  }
		}
	  }
	}

Ansin cruthóimid script tiontaire simplí agus sábhálfaimid é faoin ainm json2yaml.py. Iompórtálann an script seo modúil YAML agus JSON Python araon, agus luchtaíonn sé comhad JSON atá sonraithe ag an úsáideoir, déanann sé an tiontú, agus scríobhann sé na sonraí chuig an gcomhad 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()

Sábháil an script seo i gcosán an chórais agus rith mar is gá:

$ ~/bin/json2yaml.py example.json

3. Parsáil go leor agus go minic

Uaireanta bíonn sé úsáideach breathnú ar fhadhb ó uillinn eile. Má tá deacracht agat na caidrimh idir do shonraí a léiriú in YAML, is féidir leat rud éigin níos eolach a dhéanamh orthu go sealadach.

Mar shampla, má tá tú compordach ag obair le liostaí foclóra nó JSON, is féidir leat YAML a thiontú go JSON le dhá ordú sa bhlaosc idirghníomhach Python. Ligean le rá go bhfuil comhad YAML mydata.yaml agat, mar sin is é seo an chuma a bheadh ​​air:

$ 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.'}

Is féidir leat teacht ar go leor samplaí eile ar an ábhar seo. Ina theannta sin, tá go leor tiontairí ar líne agus parsálaithe áitiúla ar fáil. Mar sin, ná bíodh leisce ort na sonraí a athfhormáidiú nuair nach bhfeiceann tú ach smionagar dothuigthe iontu.

4. Léigh na specs

Ag filleadh ar YAML tar éis sos fada, tá sé úsáideach cuairt a thabhairt yaml.org agus na sonraíochtaí (sonraí) a athléamh. Má tá deacrachtaí agat le YAML, ach nach bhfuil an tsonraíocht faighte agat, tá sé in am an cás seo a chur ina cheart. Is ionadh go bhfuil na sonraíochtaí éasca le scríobh, agus léirítear na riachtanais chomhréire le líon mór samplaí i Caibidil 6.

5. Pseudo-configs

Agus leabhar nó alt á scríobh, bíonn sé úsáideach i gcónaí réamh-imlíne a sceitseáil, ar a laghad i bhfoirm tábla na n-ábhar. Tá sé mar an gcéanna le YAML. Is dócha go bhfuil tuairim agat cad iad na sonraí is gá a scríobh isteach i gcomhad YAML, ach ní thuigeann tú i ndáiríre conas é a nascadh lena chéile. Mar sin, roimh YAML a dhealbhú, tarraing pseudo-config.

Tá pseudo-config cosúil le pseudo-code, áit nach gá duit a bheith buartha faoi struchtúr nó eangú, caidrimh tuismitheora-leanaí, oidhreacht agus neadú. Tá sé mar an gcéanna anseo: tarraingíonn tú atriallta de na sonraí de réir mar a thagann siad chun cinn i do cheann.

10 gcéim go dtí YAML Zen

Ríomhchláraitheoirí liostála pseudo-config (Martin agus Tabitha) agus a gcuid scileanna (teangacha ríomhchlárúcháin: Python, Perl, Pascal agus Lisp, Fortran, Erlang, faoi seach).

Tar éis pseudo-config a tharraingt ar phíosa páipéir, déan anailís chúramach air agus, má tá gach rud in ord, formáid é i bhfoirm comhad bailí YAML.

6. Na Cluaisíní vs. Spásanna Aincheist

Beidh ort an aincheist a réiteach "cluaisíní nó spásanna?". Ní sa chiall domhanda, ach ar leibhéal d'eagraíochta amháin, nó ar a laghad tionscadal. Is cuma an mbaineann sé seo le hiarphróiseáil a úsáid le script sed, eagarthóirí téacs a chur ar bun ar mheaisíní ríomhchláraitheoirí, nó admhálacha a ghlacadh go huilíoch maidir le dianchomhlíonadh threoracha an línéara atá faoi bhagairt dífhostú, ach gach ball de d’fhoireann atá i mbaol dífhostú. ní mór bealach amháin nó bealach eile a bhaineann le YAML a úsáid ach spásanna (mar a éilíonn an tsonraíocht YAML).

In aon ghnátheagarthóir téacs, is féidir leat cluaisíní uathoibríoch-chearta a chumrú go dtí líon sonraithe spásanna, mar sin éirí amach na bpríomhghleacaithe Tab ní gá go mbeadh eagla ort.

Mar is eol go maith do gach fuathadóir YAML, ní fheiceann tú an difríocht idir cluaisíní agus spásanna ar an scáileán. Agus nuair nach bhfuil rud éigin le feiceáil, is gnách gurb é an rud deireanach a chuimhníonn daoine, tar éis dóibh gach fadhb eile a d'fhéadfadh a bheith ann a réiteach, a sheiceáil agus a dhíchur. Déanann uair an chloig ama a chaitear ag cuardach cuar táblaithe nó bloc spásanna screamáil go simplí go gcaithfidh tú go práinneach polasaí a chruthú maidir le húsáid ceann amháin nó eile, agus ansin seiceáil coincréit threisithe a chur i bhfeidhm maidir le comhlíonadh é (mar shampla, trí a Git hook chun é a bhrú trí línéar).

7. Níos lú tá níos mó (nó níos mó is lú)

Is maith le daoine áirithe scríobh in YAML mar cuireann sé béim ar struchtúr. Ag an am céanna, úsáideann siad eangú go gníomhach chun béim a chur ar bhlocanna sonraí. Is cineál camscéim é seo chun aithris a dhéanamh ar theangacha marcála a úsáideann teorainneacha sainráite.

Seo sampla de struchtúr den sórt sin ó Doiciméadúchán inchoigeartaithe:

# Employee records
-  martin:
        name: Martin D'vloper
        job: Developer
        skills:
            - python
            - perl
            - pascal
-  tabitha:
        name: Tabitha Bitumen
        job: Developer
        skills:
            - lisp
            - fortran
            - erlang

I gcás roinnt daoine, cuidíonn an rogha seo leo struchtúr YAML a réiteach ina gceann; do dhaoine eile, ar a mhalairt, cuireann sé greannú orthu le go leor fleasc nach bhfuil gá leo, dar leo.

Ach más tusa úinéir an doiciméid YAML agus go bhfuil tú freagrach as é a chothabháil, ansin tusa agus tusa amháin Ní mór a shainiú conas eangú a úsáid. Má chuireann stuáil mhór isteach ort, coinnigh chomh híseal agus is féidir é de réir shonraíocht YAML. Mar shampla, is féidir an comhad thuas ón doiciméadú Ansible a athscríobh mar seo gan aon chaillteanas:

---
- martin:
   name: Martin D'vloper
   job: Developer
   skills:
   - python
   - perl
   - pascal
- tabitha:
   name: Tabitha Bitumen
   job: Developer
   skills:
   - lisp
   - fortran
   - erlang

8. Bain úsáid as bearnaí

Má dhéanann tú na botúin chéanna arís i gcónaí agus comhad YAML á líonadh agat, tá ciall leis teimpléad a chur isteach ann mar thráchtaireacht. Ansin an chéad uair eile is féidir leat an teimpléad seo a chóipeáil agus fíorshonraí a chur isteach ann, mar shampla:

---
# - <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. Bain úsáid as rud éigin difriúil

Mura bhfuil srian ag an bhfeidhmchlár ort, b’fhéidir gurbh fhiú an YAML a athrú go formáid eile. Le himeacht ama, is féidir le comhaid cumraíochta dul i léig agus ansin is fearr iad a thiontú ina scripteanna simplí i Lua nó Python.

Is rud iontach é YAML a bhfuil grá ag go leor daoine mar gheall ar a minimalism agus a simplíocht, ach tá sé i bhfad ón uirlis amháin i do Arsenal. Mar sin uaireanta is féidir leat é a dhiúltú. Is furasta leabharlanna parsála a aimsiú le haghaidh YAML, mar sin má thairgeann tú roghanna aistrithe éasca, mairfidh d’úsáideoirí an teip seo gan phian.

Mura féidir leat a dhéanamh gan YAML, ansin tóg na 10 leid seo agus faigh amach nach dtaitníonn YAML leat uair amháin agus go deo!

Foinse: will.com

Add a comment