X gradus ad YAML Zen

Omnes amamus Ansible, sed Ansible est YAML. Multae formae ad conformationem imaginum sunt: ​​indices valorum, paria valorum parametri, imaginum INI, YAML, JSON, XML et multi alii. Multis autem de causis ex omnibus, YAML saepe difficilis existimatur. Praesertim, non obstante reficiens minimalismo et infigendo facultates ad operandum cum valoribus hierarchicis, YAML syntaxin molestus esse potest cum suis Pythonicis accessu ad incisum.

X gradus ad YAML Zen

Si YAML minxerit te, potes et debes! – Sequentes 10 gradus sume, ut frustrationem tuam ad gradum acceptabilem redigas et in amorem cum YAML incidas. Ut hoc indicem dignum est, decem apices nostri a scabro numerabuntur, meditationes et exercitia spiritualia ad voluntatem adjiciemus.

0. fac tibi editor opus

Non refert quod textum editor habes, probabiliter saltem unum plugin operandi cum YAML. Si non habes, reperi statim et institue. Tempus inquisitionis et instaurationis pluries reddet per omne tempus quod emendare YAML habes.

Exempli gratia editor Atom YAML defaltam sustinet, sed pro GNU Emacs debebis fasciculos additos instituere, v.gr. yaml-modus.

X gradus ad YAML Zen

Emacs in YAML modum ostentans spatia.

Si ventus editor tuus modum YAML non habet, quaedam problematum operando cum uncinis solvi possunt. Exempli gratia, vexillum GNOME textorum editoris Gedit non habet modum YAML, sed per defectionem syntaxin YAML effert ac te permittit ut opus cum fuluum configurare;

X gradus ad YAML Zen

Indentum in Gedit.

Plugin drawspaces nam Gedit, spatia quasi puncta ostendit, ambiguitates cum incisis gradibus eliminans.

Id est, vacare discendi de editore tuo dilectissimo. Cognoscere quid ipse communitas progressionis ipsius offerat ad operandum cum YAML et illis notis utendum. Certe non pΕ“nitet.

1. uti linter

Specimen programmandi linguarum et linguarum notae praedictio syntaxi utuntur. Computers sunt bonae ad praedictibilitatem, quare conceptus ipsius lintera. Si in 40 annis exsistentiae suae te praeteriit et adhuc YAML linter non uteris, tempus est temptare yamllint.

statuam yamllint Vexillum Linux sarcina procurator uti potes. Exempli gratia Rubrum Hat Enterprise Linux aut 8 Fedora Hoc modo fit:

$ sudo dnf install yamllint

Tunc solum yamllint currite, transitum fasciculi YAML sisto. Hoc simile est, si fasciculum cum errore ad linteolum transeas;

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

Numeri in sinistro non sunt temporis, sed erroris coordinatae: ordo et numerus columnae. Erroris descriptio non tibi quicquam narret, sed ubi sit scis. Spectate hunc locum in codice, et verisimilia omnia patebunt.

Cum yamllint nullos errores in tabella reperit, nihil in scrinio impressum est. Si tale silentium te terret ac paulo plus videre vis, tunc linter incurrere potes cum imperio vocis conditionalis per ampersand (&&), sicut hoc:

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

In POSIX, duplex ampersand ignes si et solum si praecedens mandatum redit 0. et yamllint mox redit numerus errorum inventus, unde haec tota opera conditionalis fabricatur.

2. Scribe in Pythone, non YAML

Si YAML vere minxerit te, modo in eo non scribe, literam. Contingit ut YAML unica forma sit quam applicatio intelligit. Sed etiam in hoc casu, non est necessarium file YAML creare. Scribe quod voles et postea converte. Exempli gratia magna est bibliotheca Pythonis pyyaml et duo modi conversionis: sui conversio et conversio per scripta.

Conversionis sui

In hoc casu, tabella data est etiam script Python quod YAML generat. Haec methodus ad parvas notitias occidendas aptissima est. Simpliciter scribes datam JSON in Pythone variabili, praemitte illam cum import directivo, et in fine tabella tres lineas ad efficiendum output adde.

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

Nunc hunc fasciculum in Pythone currimus et tabellam output.yaml obtinemus:

$ 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

Hoc perfecte valet YAML, sed yamllint monent te non incipere ab -. Hoc bene manually vel leviter in Scripto Pythone mutari facile corrigi potest.

Conversio per scripta

In hoc casu primum in JSON scribimus, et deinde convertentis currunt ut separatum scriptionem Python, quae YAML ut output producit. Priori methodo comparata, haec methodus melius librat, cum conversio a notitia separata sit.

Primum, exempli causa lima JSON creare.json, exempli gratia, ex 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"
			}
		  }
		}
	  }
	}

Tunc simplicem scripturam convertentem creabimus et eam sub nomine json2yaml.py servabimus. Scriptum hoc utrumque YAML et JSON modulorum Python importat, et fasciculum JSON usoris definitum onerat, conversionem exercet, et notitias in tabella output.yaml scribit.

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

Serva hoc scriptum in viae systematis et currite ut opus fuerit:

$ ~/bin/json2yaml.py example.json

3. Parse multum et saepe

Aliquando utile est ex alio angulo problema intueri. Si molestus es repraesentans relationes inter notitias tuas in YAML, tempus illud in familiarius aliquid transformare potes.

Exempli gratia, si opus es commodae cum dictionariis electronicis vel JSON, potes YAML ad JSON convertere cum duobus iustis praeceptis in concha interactiva Pythonis. 'Dicamus te tabellam mydatam' YAML habere.yaml, hoc est quid simile videretur:

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

Multa alia huius argumenti exempla reperire potes. Plures praeterea sunt online convertentium et parsers localis in promptu. Noli igitur dubitare informationem reformare, cum videris solum incomprehensibilem confutationem in ea esse.

4. Read in arcu

YAML post longum intervallum reverti, visitare utile est yaml.org et re- legere specificationes (species). Si difficultates cum YAML habes, sed specificationem non comparasti, tempus est hanc condicionem emendare. Species mirae faciles sunt ad scribendum, et syntaxin requisita cum exemplis permultis illustrantur Caput 6.

5. Pseudo-configs

Cum scribo librum vel articulum, semper utile est primum adumbrare prooemium, saltem in forma tabulae contentorum. Idem est cum YAML. Verisimile, habes ideam de notitia quae in tabella YAML scribenda est, sed vere non intellegis quomodo eam inter se coniungas. Priusquam ergo YAML sculptura, pseudo-config ducatur.

Pseudo-config simile est cum pseudo-code, ubi non debes sollicitari de structura vel incisatione, parente filio, de relationibus, de hereditate et nidificatione. Idem est hic: trahis iterationes notitiarum quae in capite tuo oriuntur.

X gradus ad YAML Zen

Pseudo-config programmatores enumerant (Martin et Tabitha) eorumque artes (linguarum programmandi: Python, Perl, Pascal et Lisp, Fortran, Erlang, respective).

Postquam pseudo-configo in chartam ducta est, diligenter illud resolve et, si omnia ita ordinantur, in forma fasciculi validi YAML format.

6. Tabs vs. Spatia Dilemma

Dilemma solvere tibi erit "Tab aut spatia?". Non in sensu globali, sed solum in ordine dispositionis tuae, vel saltem in project. Non refert an hoc involvat utens post-processus cum sed scripto, editores in machinis programmatorum constituendo textum, vel universaliter accepti- tiones strictae obsequii cum mandato linterarii sub comminatione dimissionis, sed omnia membra sodalium tuorum qui in uno modo vel alio se referunt ad YAML spatia tantum uti debet (secundum specificationem YAML requiritur).

In quolibet textu normali editore, tabs auto- rectas ad certum spatiarum numerum configurare potes, sic rebellio clavium adherentium. tab non timere.

Ut quisque bene novit inimicus YAML, non potes videre differentiam inter tabs et spatia in screen. Cum aliquid non visibile est, plerumque minime meminerunt, postquam omnes alias difficultates possibilis, per cohibitas et evulsas, digessisse. Hora temporis consumpti quaerendo tabulationem curvam vel truncum spatia tantum clamat ut instanter indigeas consilio ad unum vel alterum utendum creare, ac deinde solidam concretam perspiciendam ad obsequium cum ea efficiendum (exempli gratia, per. a Git hamum per linter adigere).

7. Minus plus est (vel plus minus est)

Nonnulli placet scribere in YAML quia structuram extollit. Eodem tempore, active incisum utuntur ad exaggerandam caudices notitiarum. Hoc genus est MALITIA ad imitandum notas linguarum quae in delimiters expressis utuntur.

Huiusmodi structurae exemplum est Ansible documenta:

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

Quibusdam haec optio adiuvat YAML structuram in capitibus exponere: alii contra, multum supervacaneum in eorum sententia indentum exasperat.

Si autem dominus documenti YAML es et reus est conservandi illud, tunc tu et solus definire debet quomodo incisum utatur. Si moleste magnae padssores sunt, eam retine ad minimum secundum specificationem YAML. Exempli gratia, fasciculus superior documentorum Ansibilis sine ullo detrimento sic rescribi potest:

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

8. Usus codicellos

Si eadem errata constanter repetas cum tabellam YAML implens, sensum praebet exemplum ei in commentarium inserere. Tunc proximo tempore hanc paginam solum imitari potes et notitias reales ibi ingredi, exempli gratia:

---
# - <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 uti aliquid aliud

Si applicatio in te strangulationem non habet, tunc valeret mutato YAML in aliam formam. Subinde, imaginatio imaginum crescere se potest et melius est eas in scripta simplicia in Lua vel Pythone converti.

YAML Magnum est quod multi minimam ac simplicitatem amant, sed a solo instrumento in armamentario tuo longe est. Interdum igitur id negare potes. Parsing bibliothecae facile sunt invenire pro YAML, ergo si optiones migrationum faciles praebes, usores tui hanc defectum relative sine dolore superabunt.

Si sine YAML facere non potes, sume has 10 apices et odium tuum YAML semel et pro omnibus vince!

Source: www.habr.com