د YAML زین ته 10 مرحلې

موږ ټول د ځواب وړ سره مینه لرو، مګر ځواب ویونکی YAML دی. د تشکیلاتو فایلونو لپاره ډیری فارمیټونه شتون لري: د ارزښتونو لیست ، د پیرامیټر ارزښت جوړه ، INI فایلونه ، YAML ، JSON ، XML او ډیری نور. په هرصورت، د دې ټولو څخه د ډیری دلیلونو لپاره، YAML اکثرا په ځانګړې توګه ستونزمن ګڼل کیږي. په ځانګړي توګه ، د دې تازه کولو minimalism او د درجه بندي ارزښتونو سره کار کولو لپاره اغیزمنو وړتیاو سربیره ، د YAML ترکیب کولی شي د انډینټیشن لپاره د هغې د پایتون په څیر چلند سره ناراضه وي.

د YAML زین ته 10 مرحلې

که YAML تاسو خپه کوي، تاسو کولی شئ — او تاسو باید! - د منلو وړ کچې ته د خپګان کمولو لپاره لاندې 10 ګامونه واخلئ او د YAML سره مینه وکړئ. لکه څنګه چې د دې لیست سره سم، زموږ لس لارښوونې به له پیل څخه شمیرل کیږي، موږ به مراقبت او روحاني تمرینونه په خپله خوښه اضافه کړو 😉

0. خپل مدیر کار وکړئ

دا مهمه نده چې تاسو کوم متن ایډیټر لرئ ، شاید د YAML سره کار کولو لپاره لږترلږه یو پلگ ان شتون ولري. که تاسو دا نلرئ، سمدلاسه یې ومومئ او نصب کړئ. هغه وخت چې په لټون او تنظیم کولو کې مصرف شوی د هر وخت په پرتله چې تاسو یې د YAML ترمیم کولو لپاره څو ځله تادیه کوئ.

د مثال په توګه، مدیر atom د ډیفالټ لخوا د YAML ملاتړ کوي، مګر د GNU Emacs لپاره تاسو باید اضافي کڅوړې نصب کړئ، د بیلګې په توګه، yaml-mode.

د YAML زین ته 10 مرحلې

Emacs په YAML حالت کې او د ښودلو ځایونه.

که ستاسو د خوښې مدیر د YAML حالت نلري ، نو ځینې ستونزې د تنظیماتو سره کار کولو سره حل کیدی شي. د مثال په توګه، د معیاري GNOME متن مدیر ګیډیټ د YAML حالت نلري، مګر د ډیفالټ په واسطه دا د YAML نحو روښانه کوي او تاسو ته اجازه درکوي د انډیټیشن سره کار تنظیم کړئ:

د YAML زین ته 10 مرحلې

په ګیډیټ کې د شاخصونو تنظیم کول.

یو پلگ ان ځایونه د ګیډیټ لپاره، ځایونه د نقطو په توګه ښکاره کوي، د انډیټیشن کچې سره ابهام له منځه وړي.

په بل عبارت، د خپل غوره مدیر په اړه زده کړه وخت مصرف کړئ. ومومئ چې هغه یا د هغه پراختیایی ټولنه د YAML سره کار کولو لپاره څه وړاندیز کوي ، او دا ځانګړتیاوې وکاروئ. تاسو به یقینا پښیمانه نه یاست.

1. یو لیتر وکاروئ

په عین حال کې، د پروګرام کولو ژبې او مارک اپ ژبې د وړاندوینې وړ ترکیب کاروي. کمپیوټر د وړاندوینې وړتیا کې ښه دي ، له همدې امله تصور لینټرا. که چیرې د دې د شتون په 40 کلونو کې دا ستاسو لخوا تیر شوی وي او تاسو لاهم د YAML لینټر نه کاروئ ، نو دا وخت دی چې د یاملینټ هڅه وکړئ.

لګول yamllint تاسو کولی شئ د معیاري لینکس کڅوړې مدیر وکاروئ. د مثال په توګه، په Red Hat Enterprise Linux 8 یا فیډورا دا د دې په څیر ترسره کیږي:

$ sudo dnf install yamllint

بیا تاسو په ساده ډول yamllint پرمخ وړئ ، د چیک کولو لپاره یې د YAML فایل انتقال کړئ. دا هغه څه دي چې داسې ښکاري که تاسو لینټ ته د غلطۍ سره فایل تیر کړئ:

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

په ښي خوا کې شمیرې وخت نه دی، مګر د خطا همغږي: قطار او کالم شمیره. د خطا توضیح ممکن تاسو ته هیڅ ونه وایی ، مګر تاسو واقعیا پوهیږئ چې دا چیرې دی. یوازې دا ځای په کوډ کې وګورئ، او ډیری احتمال به هرڅه روښانه شي.

کله چې yamllint په فایل کې کومه تېروتنه ونه موندله، په سکرین کې هیڅ شی نه چاپ کیږي. که دا ډول چوپتیا تاسو ویروي او تاسو یو څه نور فیډبیک غواړئ ، نو تاسو کولی شئ لینټ د مشروط ایکو کمانډ سره د ډبل امپرسینډ (&&) له لارې پرمخ وړئ ، لکه:

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

په POSIX کې، یو ډبل امپرسینډ ډزې کوي که چیرې او یوازې مخکینۍ کمانډ 0 بیرته راشي. او یاملینټ یوازې د موندلو غلطیتونو شمیر بیرته راګرځوي، له همدې امله دا ټول مشروط جوړښت کار کوي.

2. په Python کې ولیکئ، نه YAML

که YAML واقعیا تاسو خفه کوي ، نو په لفظي توګه یې مه لیکئ. دا پیښیږي چې YAML یوازینۍ بڼه ده چې غوښتنلیک پوهیږي. مګر حتی پدې حالت کې ، دا اړینه نده چې د YAML فایل رامینځته کړئ. په هغه څه ولیکئ چې تاسو یې خوښوي او بیا یې بدل کړئ. د مثال په توګه، د Python لپاره یو لوی کتابتون شتون لري pyyaml او د تبادلې دوه طریقې: ځان بدلول او د سکریپټونو له لارې تبادله.

د ځان تبادله

پدې حالت کې ، د ډیټا فایل هم د Python سکریپټ دی چې YAML رامینځته کوي. دا طریقه د وړو ډیټا سیټونو لپاره غوره ده. تاسو په ساده ډول د JSON ډیټا په Python متغیر کې ولیکئ ، دا د وارداتو لارښود سره مخکینۍ کړئ ، او د فایل په پای کې د محصول پلي کولو لپاره درې کرښې اضافه کړئ.

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

اوس موږ دا فایل په Python کې چلوو او د 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

دا په بشپړ ډول د اعتبار وړ YAML دی، مګر yamllint به تاسو ته خبرداری درکړي چې دا د - سره پیل نه کوي. ښه ، دا په اسانۍ سره په لاسي ډول سم کیدی شي یا د Python سکریپټ کې یو څه ترمیم کیدی شي.

د سکریپټونو له لارې تبادله

پدې حالت کې، موږ لومړی په JSON کې لیکو، او بیا کنورټر د جلا Python سکریپټ په توګه چلوو، کوم چې YAML د محصول په توګه تولیدوي. د پخوانۍ میتود په پرتله، دا طریقه ښه اندازه کوي، ځکه چې تبادله د معلوماتو څخه جلا ده.

لومړی، راځئ چې د JSON فایل example.json جوړ کړو، د بیلګې په توګه، تاسو کولی شئ له دې څخه واخلئ 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"
			}
		  }
		}
	  }
	}

بیا به موږ یو ساده کنورټر سکریپټ جوړ کړو او د json2yaml.py په نوم به یې خوندي کړو. دا سکریپټ دواړه YAML او JSON Python ماډلونه واردوي، او د کارونکي لخوا مشخص شوي JSON فایل پورته کوي، تبادله ترسره کوي، او ډاټا د 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()

دا سکریپټ د سیسټم په لاره کې خوندي کړئ او د اړتیا سره سم یې چل کړئ:

$ ~/bin/json2yaml.py example.json

3. ډیری او ډیری وختونه تحلیل کړئ

ځینې ​​​​وختونه دا ګټوره ده چې ستونزې ته د مختلف زاویې څخه وګورئ. که تاسو په YAML کې ستاسو د معلوماتو ترمینځ د اړیکو استازیتوب کولو کې ستونزه لرئ ، نو تاسو کولی شئ په لنډمهاله توګه دا په ډیر پیژندل شوي شی بدل کړئ.

د مثال په توګه ، که تاسو د لغت لیستونو یا JSON سره کار کولو کې راحت یاست ، تاسو کولی شئ YAML په متقابل Python شیل کې یوازې دوه کمانډونو سره JSON ته بدل کړئ. راځئ چې ووایو تاسو د YAML فایل mydata.yaml لرئ، نو دا به داسې ښکاري:

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

تاسو کولی شئ پدې موضوع کې ډیری نور مثالونه ومومئ. سربیره پردې، ډیری آنلاین کنورټرونه او محلي پارسر شتون لري. نو د ډیټا ریفورمیټ کولو کې اندیښنه مه کوئ کله چې تاسو پدې کې یوازې د نه پوهیدو وړ ګډوډي وګورئ.

4. مشخصات ولولئ

د اوږدې وقفې وروسته YAML ته راستنیدل، د لیدلو لپاره ګټور دی yaml.org او مشخصات (شخصیات) بیا ولولئ. که تاسو د YAML سره ستونزې لرئ ، مګر توضیحاتو ته نږدې نه یاست ، نو دا د دې وضعیت سمولو وخت دی. مشخصات د لیکلو لپاره په حیرانتیا سره اسانه دي، او د نحو اړتیاوې د لوی شمیر مثالونو سره په ګوته شوي ګلاب 6.

5. Pseudo-configs

کله چې یو کتاب یا مقاله ولیکئ، دا تل ګټور وي چې لومړی یو ابتدايي خاکه جوړه کړئ، لږترلږه د منځپانګو د جدول په بڼه. دا د YAML سره ورته دی. ډیری احتمال ، تاسو پدې اړه نظر لرئ چې کوم ډیټا باید د YAML فایل کې لیکلو ته اړتیا ولري ، مګر تاسو واقعیا نه پوهیږئ چې دا څنګه له یو بل سره وصل کړئ. له همدې امله، مخکې له دې چې د YAML مجسمه جوړه کړئ، یو pseudo-config رسم کړئ.

Pseudo-config د pseudo-code سره ورته دی، چیرته چې تاسو د جوړښت یا نښه کولو، د والدینو-ماشومانو اړیکو، میراث او ځړولو په اړه اندیښنه نلرئ. دا دلته ورته دی: تاسو د ډیټا تکرارونه رسم کړئ لکه څنګه چې دوی ستاسو په سر کې راپورته کیږي.

د YAML زین ته 10 مرحلې

د Pseudo-config لیست کولو پروګرام کونکي (مارټین او تبیتا) او د دوی مهارتونه (د پروګرام کولو ژبې: Python، Perl، Pascal او Lisp، Fortran، Erlang، په ترتیب سره).

د کاغذ په یوه ټوټه کې د pseudo-config رسم کولو وروسته، دا په دقت سره تحلیل کړئ او که هرڅه سم وي، دا د یو معتبر YAML فایل په بڼه بڼه کړئ.

6. د ټبونو په مقابل کې د خلا ډیلیما

تاسو باید ستونزه حل کړئ "ټبونه یا ځایونه؟". په نړیوال مفهوم کې نه، مګر یوازې ستاسو د سازمان په کچه، یا لږترلږه یوه پروژه. دا مهمه نده چې ایا پدې کې د سیډ سکریپټ سره د پوسټ پروسس کولو کارول شامل دي ، د پروګرام کونکو ماشینونو کې د متن ایډیټرونو تنظیم کول ، یا په نړیواله کچه د برطرفۍ له ګواښ سره سم د لینټر لارښوونو سره د سخت اطاعت رسیدونه شامل دي ، مګر ستاسو د ټیم ټول غړي چې یو ډول یا بل د YAML سره تړاو لري باید یوازې ځایونه وکاروي (لکه څنګه چې د YAML توضیحاتو لخوا اړین وي).

په هر نورمال متن ایډیټر کې، تاسو کولی شئ د ځان سره سم ټبونه یو مشخص شمیر ځایونو ته تنظیم کړئ، نو د کلیدي پیروانو بغاوت ټب تاسو باید ویره نلرئ.

لکه څنګه چې هر YAML نفرت کوونکی ښه پوهیږي ، تاسو نشئ کولی په سکرین کې د ټبونو او ځایونو ترمینځ توپیر وګورئ. او کله چې یو څه نه لیدل کیږي، دا معمولا وروستی شی دی چې خلک یې په یاد لري، وروسته له دې چې دوی د نورو ټولو ممکنه ستونزو له لارې ترتیب، چک او له منځه یوسي. یو ساعت وخت چې د جدول منحني یا د ځایونو بلاک په لټه کې تیریږي په ساده ډول چیغې وهي چې تاسو په عاجل ډول د یو یا بل کارولو لپاره پالیسي رامینځته کولو ته اړتیا لرئ ، او بیا د دې سره موافقت لپاره قوي کنکریټ چیک پلي کړئ (د مثال په توګه ، له لارې. د ګیټ هک د لینټر له لارې مجبورولو لپاره).

7. لږ ډیر دی (یا ډیر لږ دی)

ځینې ​​​​خلک په YAML کې لیکل خوښوي ځکه چې دا په جوړښت ټینګار کوي. په ورته وخت کې، دوی په فعاله توګه د ډیټا بلاکونو روښانه کولو لپاره انډیټینشن کاروي. دا د مارک اپ ژبو تقلید کولو لپاره یو ډول درغلي ده چې واضح محدودیتونه کاروي.

دلته د داسې جوړښت یوه بیلګه ده د منلو وړ اسناد:

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

د ځینو لپاره، دا اختیار د دوی په سر کې د YAML جوړښت ترتیب کولو کې مرسته کوي؛ د نورو لپاره، په برعکس، دا دوی د دوی په نظر، د ډیری غیر ضروري سره خپه کوي.

مګر که تاسو د YAML سند مالک یاست او د دې ساتلو مسؤل یاست ، نو بیا تاسو او یوازې تاسو باید تعریف کړئ چې څنګه د انډیټیشن کارولو څرنګوالی. که تاسو د لوی پیډینګ لخوا ناراض یاست ، نو دا د YAML توضیحاتو سره سم لږترلږه ممکنه وساتئ. د مثال په توګه، د ځواب وړ اسنادو څخه پورته فایل د کوم زیان پرته د دې په څیر بیا لیکل کیدی شي:

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

8. خالي ځایونه وکاروئ

که تاسو د YAML فایل ډکولو پرمهال په دوامداره توګه ورته غلطی تکرار کړئ ، نو دا د تبصرې په توګه پدې کې د ټیمپلیټ دننه کول معنی لري. بیا بل ځل تاسو کولی شئ په ساده ډول دا ټیمپلیټ کاپي کړئ او هلته اصلي ډاټا داخل کړئ، د بیلګې په توګه:

---
# - <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. یو څه مختلف وکاروئ

که چیرې غوښتنلیک په تاسو باندې غلبه ونه لري ، نو دا ممکن د YAML مختلف ب formatې ته بدلولو ارزښت ولري. د وخت په تیریدو سره ، د ترتیب فایلونه کولی شي خپل ځان ته وده ورکړي او بیا دا غوره ده چې دوی په لوا یا پایتون کې ساده سکریپټونو ته واړوئ.

YAML یو عالي شی دی چې ډیری خلک یې د دې دقیقیت او سادگي لپاره خوښوي ، مګر دا ستاسو په ارسنال کې یوازینۍ وسیلې څخه لرې دی. نو ځینې وختونه تاسو کولی شئ دا رد کړئ. د YAML لپاره د پارس کولو کتابتونونه موندل اسانه دي ، نو که تاسو د مهاجرت اسانه اختیارونه وړاندیز کړئ ، نو ستاسو کارونکي به دا ناکامي په نسبي ډول بې درده ژوندي پاتې شي.

که تاسو د YAML پرته نشئ کولی، نو دا 10 لارښوونې واخلئ او یو ځل او د ټولو لپاره د YAML څخه ستاسو ناخوښي لرې کړئ!

سرچینه: www.habr.com

Add a comment