Dukkanmu muna son Mai yiwuwa, amma Mai yiwuwa shine YAML. Akwai nau'i-nau'i da yawa don fayilolin daidaitawa: lissafin ƙima, nau'i-nau'i masu ƙima, fayilolin INI, YAML, JSON, XML da sauran su. Koyaya, saboda dalilai da yawa daga cikin duka, YAML galibi ana ɗaukarsa da wahala musamman. Musamman ma, duk da ƙarancin kuzarin sa na shakatawa da kuma iyakoki masu ban sha'awa don aiki tare da ƙimar matsayi, tsarin YAML na iya zama mai ban haushi tare da tsarin sa na Python-kamar shigar da shi.
Idan YAML ya ba ka haushi, za ka iya - kuma ya kamata! – ɗauki waɗannan matakai guda 10 masu zuwa don rage ɓacin ranku zuwa matakin yarda da soyayya da YAML. Kamar yadda ya dace da wannan jerin, shawarwarinmu guda goma za a ƙidaya su daga karce, za mu ƙara yin tunani da ayyukan ruhaniya yadda ya kamata 😉
0. Sanya editan ku yayi aiki
Komai wane editan rubutu kuke da shi, tabbas akwai aƙalla plugin ɗin don aiki tare da YAML. Idan ba ku da ɗaya, nemo kuma shigar da shi nan da nan. Lokacin da aka kashe bincike da kafawa zai biya sau da yawa a duk lokacin da za ku gyara YAML.
Misali, edita
Emacs a yanayin YAML da nunin sarari.
Idan editan da kuka fi so ba shi da yanayin YAML, to ana iya magance wasu matsalolin ta hanyar aiki tare da saitunan. Misali, daidaitaccen editan rubutu na GNOME Gedit ba shi da yanayin YAML, amma ta tsohuwa yana haskaka tsarin YAML kuma yana ba ku damar saita aiki tare da indentations:
Saitin indents a cikin Gedit.
A plugin
A takaice dai, ba da lokacin koyo game da editan da kuka fi so. Nemo abin da shi ko al'ummarsa na ci gaba zasu bayar don aiki tare da YAML, kuma kuyi amfani da waɗannan fasalulluka. Tabbas ba za ku yi nadama ba.
1. Yi amfani da linter
Mahimmanci, harsunan shirye-shirye da yarukan da ake yin alama suna amfani da maƙasudin ƙira. Kwamfuta suna da kyau a tsinkaya, wanda shine dalilin da ya sa manufar
Sanya
$ sudo dnf install yamllint
Sa'an nan kuma kawai ku kunna yamllint, ku aika da shi fayil ɗin YAML don dubawa. Wannan shine abin da yake kama idan kun ƙaddamar da fayil tare da kuskure zuwa linter:
$ yamllint errorprone.yaml
errorprone.yaml
23:10 error syntax error: mapping values are not allowed here
23:11 error trailing spaces (trailing-spaces)
Lambobin hagu ba lokaci bane, amma daidaitawar kuskure: jere da lambar shafi. Bayanin kuskuren bazai gaya muku komai ba, amma kun san ainihin inda yake. Kawai kalli wannan wurin a cikin lambar, kuma wataƙila komai zai bayyana.
Lokacin da yamllint bai sami kurakurai a cikin fayil ba, ba a buga komai akan allo. Idan irin wannan shiru ya ba ku tsoro kuma kuna son ƙarin ra'ayi, to zaku iya gudanar da linter tare da umarnin amsawar sharadi ta hanyar ampersand sau biyu (&&), kamar haka:
$ yamllint perfect.yaml && echo "OK"
OK
A cikin POSIX, ampersand sau biyu yana ƙone idan kuma kawai idan umarnin da ya gabata ya dawo 0. Kuma yamllint kawai ya dawo da adadin kurakurai da aka samu, wanda shine dalilin da ya sa wannan duka yanayin ginin yana aiki.
2. Rubuta da Python, ba YAML ba
Idan da gaske YAML ya ba ka haushi, kawai kada ka rubuta a ciki, a zahiri. Ya faru cewa YAML shine kawai tsarin da aikace-aikacen ke fahimta. Amma ko a wannan yanayin, ba lallai ba ne don ƙirƙirar fayil ɗin YAML. Rubuta akan abin da kuke so sannan ku tuba. Misali, akwai babban ɗakin karatu na Python
Juya kai
A wannan yanayin, fayil ɗin bayanan kuma rubutun Python ne wanda ke haifar da YAML. Wannan hanya ta fi dacewa da ƙananan saitunan bayanai. Kuna rubuta bayanan JSON a cikin maballin Python, gabatar da shi tare da umarnin shigo da kaya, kuma a ƙarshen fayil ɗin ƙara layi uku don aiwatar da fitarwa.
#!/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
Yanzu muna gudanar da wannan fayil ɗin a Python kuma mu sami fitarwa.yaml fayil:
$ 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
Wannan ingantaccen YAML ne, amma yamllint zai gargaɗe ku cewa ba ya farawa da -. To, ana iya gyara wannan cikin sauƙi da hannu ko a ɗan gyara shi a rubutun Python.
Juyawa ta hanyar rubutun
A wannan yanayin, da farko muna rubutawa a JSON, sannan mu gudanar da mai canzawa a matsayin rubutun Python daban, wanda ke samar da YAML azaman fitarwa. Idan aka kwatanta da hanyar da ta gabata, wannan hanyar tana da ma'auni mafi kyau, tun da canjin ya bambanta da bayanai.
Da farko, bari mu ƙirƙiri fayil ɗin JSON misali.json, alal misali, zaku iya ɗauka daga gare ta
{
"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"
}
}
}
}
}
Sa'an nan kuma za mu ƙirƙira rubutun mai sauƙi kuma mu adana shi a ƙarƙashin sunan json2yaml.py. Wannan rubutun yana shigo da duka tsarin YAML da JSON Python, kuma yana loda takamaiman fayil ɗin JSON mai amfani, yana yin jujjuyawa, kuma yana rubuta bayanan zuwa fayil ɗin fitarwa.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()
Ajiye wannan rubutun a cikin hanyar tsarin kuma gudanar da shi kamar yadda ake buƙata:
$ ~/bin/json2yaml.py example.json
3. Yi la'akari da yawa kuma akai-akai
Wani lokaci yana da amfani a kalli matsala ta wani kusurwa daban. Idan kuna fuskantar matsala wajen wakiltar alaƙar da ke tsakanin bayananku a cikin YAML, zaku iya canza shi na ɗan lokaci zuwa wani abu da kuka saba.
Misali, idan kuna jin daɗin yin aiki tare da jerin ƙamus ko JSON, zaku iya canza YAML zuwa JSON tare da umarni biyu kawai a cikin harsashi na Python mai mu'amala. Bari mu ce kuna da fayil ɗin YAML mydata.yaml, to wannan shine yadda zai yi kama:
$ 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.'}
Kuna iya samun wasu misalai da yawa akan wannan batu. Bugu da kari, akwai da yawa online converters da na gida parsers samuwa. Don haka kada ku yi jinkirin sake fasalin bayanan lokacin da kuka ga jumble mara fahimta kawai a ciki.
4. Karanta ƙayyadaddun bayanai
Komawa zuwa YAML bayan dogon hutu, yana da amfani don ziyarta
5. Tsara-tsare
Lokacin rubuta littafi ko labarin, yana da amfani koyaushe don fara zana jita-jita na farko, aƙalla a cikin nau'in tebur na abun ciki. Haka yake da YAML. Mafi mahimmanci, kuna da ra'ayin abin da ake buƙatar rubuta bayanai a cikin fayil ɗin YAML, amma ba ku fahimci yadda ake haɗa shi da juna ba. Don haka, kafin zana YAML, zana tsarin ƙira.
Pseudo-config yana kama da lambar ƙididdiga, inda ba lallai ne ku damu da tsari ko shigar da ku ba, dangantakar iyaye da yara, gado da gida. Haka yake a nan: kuna zana bayanan bayanan yayin da suke tasowa a cikin ku.
Pseudo-Confilling Programmers (Martin da Tabitha) da basirarsu (harsunan shirye-shirye: Python, Perl, Pascal da Lisp, Fortran, Erlang, bi da bi).
Bayan zana ɓangarorin ƙididdiga akan takarda, bincika ta a hankali kuma, idan komai yana cikin tsari, tsara shi ta hanyar ingantaccen fayil ɗin YAML.
6. The Tabs vs. Spaces Dilemma
Dole ne ku warware matsalar
A cikin kowane editan rubutu na al'ada, zaku iya saita shafuka masu daidaitawa ta atomatik zuwa takamaiman adadin sarari, don haka tawaye na maɓallai. tab ba sai ka ji tsoro ba.
Kamar yadda kowane maƙiyin YAML ya san da kyau, ba za ku iya ganin bambanci tsakanin shafuka da sarari akan allo ba. Kuma idan ba a ga wani abu ba, yawanci shine abu na ƙarshe da mutane ke tunawa, bayan sun daidaita, bincika da kuma kawar da duk wasu matsalolin da za su iya yiwuwa. Sa'a guda na lokacin da aka kashe don neman madaidaicin tabo ko toshe sararin samaniya kawai yana kururuwa cewa kuna buƙatar ƙirƙirar manufa don amfani da ɗayan ko ɗayan, sannan aiwatar da ingantaccen bincike don bin shi (misali, ta hanyar. Git ƙugiya don tilasta shi ta hanyar linter).
7. Kadan ya fi (ko fiye da ƙasa)
Wasu mutane suna son rubutawa a cikin YAML saboda yana jaddada tsari. A lokaci guda, suna amfani da rayayye don yin amfani da indentation don haskaka tubalan bayanai. Wannan wani nau'i ne na zamba don yin koyi da yarukan ƙira waɗanda ke amfani da ƙayyadaddun iyaka.
Ga misalin irin wannan tsarin daga
# Employee records
- martin:
name: Martin D'vloper
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
Ga wasu, wannan zaɓin yana taimaka musu wajen warware tsarin YAML a cikin kawunansu; ga wasu, akasin haka, yana fusatar da su da abubuwa da yawa waɗanda ba dole ba, a ra'ayinsu, ƙima.
Amma idan kai ne ma'abucin takardar YAML kuma ke da alhakin kiyaye ta, to kai da kai kadai dole ne ya ayyana yadda ake amfani da indentation. Idan babban fasinja ya fusata ku, kiyaye shi zuwa mafi ƙarancin yuwuwar bisa ga ƙayyadaddun YAML. Misali, fayil ɗin da ke sama daga Takaddun da za a iya sake rubutawa ana iya sake rubuta shi kamar haka ba tare da wata asara ba:
---
- martin:
name: Martin D'vloper
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
8. Yi amfani da babura
Idan koyaushe kuna maimaita kuskure iri ɗaya yayin cika fayil ɗin YAML, yana da ma'ana don saka samfuri a ciki azaman sharhi. Sannan lokaci na gaba zaku iya kwafi wannan samfuri kawai kuma ku shigar da bayanan gaske a wurin, misali:
---
# - <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. Yi amfani da wani abu daban
Idan aikace-aikacen ba shi da makama akan ku, to yana iya dacewa da canza YAML zuwa wani tsari na daban. Bayan lokaci, fayilolin sanyi na iya girma da kansu sannan yana da kyau a canza su zuwa rubutun sauƙi a cikin Lua ko Python.
YAML abu ne mai girma da mutane da yawa ke so don ƙarancinsa da sauƙi, amma ya yi nisa da kawai kayan aiki a cikin arsenal. Don haka wani lokacin kuna iya ƙi shi. Binciken dakunan karatu suna da sauƙin nemowa ga YAML, don haka idan kun ba da zaɓuɓɓukan ƙaura cikin sauƙi, masu amfani da ku za su tsira daga wannan gazawar ba da raɗaɗi ba.
Idan ba za ku iya yin ba tare da YAML ba, to ku ɗauki waɗannan shawarwari guda 10 kuma ku shawo kan rashin son YAML sau ɗaya kuma gaba ɗaya!
source: www.habr.com