اسان سڀني کي جواب ڏيڻ سان پيار آهي، پر جوابي YAML آهي. ڪنفيگريشن فائلن لاءِ ڪيترائي فارميٽ آھن: قدرن جون لسٽون، پيٽرول-قدر جوڙو، INI فائلون، YAML، JSON، XML ۽ ٻيا ڪيترائي. بهرحال، انهن سڀني مان ڪيترن ئي سببن لاء، YAML اڪثر ڪري خاص طور تي ڏکيو سمجهيو ويندو آهي. خاص طور تي، ان جي تازگي واري minimalism ۽ حيرت انگيز قدرن سان ڪم ڪرڻ لاءِ متاثر ڪندڙ صلاحيتن جي باوجود، YAML نحو ان جي پٿون-جهڙي انداز سان انڊينٽيشن سان ناراض ٿي سگهي ٿو.
جيڪڏهن YAML توهان کي پريشان ڪري ٿو، توهان ڪري سگهو ٿا- ۽ توهان کي گهرجي! - ھيٺ ڏنل 10 قدم وٺو توھان جي مايوسي کي گھٽائڻ لاءِ قابل قبول سطح تي ۽ YAML سان پيار ڪرڻ. جيئن ته هن فهرست جي فائدي ۾، اسان جا ڏهه ٽوٽڪا شروع کان شمار ڪيا ويندا، اسان مراقبي ۽ روحاني طريقا شامل ڪنداسين 😉
0. پنهنجو ايڊيٽر ڪم ڪريو
اهو مسئلو ناهي ته توهان وٽ ڪهڙو ٽيڪسٽ ايڊيٽر آهي، شايد گهٽ ۾ گهٽ هڪ پلگ ان آهي YAML سان ڪم ڪرڻ لاءِ. جيڪڏهن توهان وٽ ناهي، ڳوليو ۽ انسٽال ڪريو فوري طور تي. ڳولها ۽ سيٽنگ ڪرڻ ۾ خرچ ڪيل وقت هر وقت توهان کي YAML کي ايڊٽ ڪرڻ جي ڀيٽ ۾ ڪيترائي ڀيرا ادا ڪندو.
مثال طور، ايڊيٽر
Emacs YAML موڊ ۾ ۽ جڳھ ڏيکاريندي.
جيڪڏهن توهان جي پسنديده ايڊيٽر وٽ YAML موڊ ناهي، ته پوءِ سيٽنگن سان ڪم ڪندي ڪجهه مسئلا حل ڪري سگهجن ٿا. مثال طور، معياري GNOME ٽيڪسٽ ايڊيٽر گيڊٽ وٽ YAML موڊ نه آهي، پر ڊفالٽ طور اهو YAML نحو کي نمايان ڪري ٿو ۽ توهان کي ڪم کي ترتيب ڏيڻ جي اجازت ڏئي ٿو اشارن سان:
Gedit ۾ انگن اکرن کي ترتيب ڏيڻ.
هڪ پلگ ان
ٻين لفظن ۾، پنهنجي پسنديده ايڊيٽر بابت سکڻ ۾ وقت گذاريو. ڳولهيو ته هن کي يا هن جي ترقياتي ڪميونٽي کي YAML سان ڪم ڪرڻ لاءِ ڇا پيش ڪرڻو آهي، ۽ انهن خاصيتن کي استعمال ڪريو. توهان کي يقيني طور تي افسوس نه ٿيندو.
1. هڪ لينٽر استعمال ڪريو
مثالي طور، پروگرامنگ ٻوليون ۽ مارڪ اپ ٻوليون استعمال ڪن ٿيون اڳڪٿي لائق نحو. ڪمپيوٽر اڳڪٿي ڪرڻ جي صلاحيت ۾ سٺا آهن، انهي ڪري جو تصور
انسٽال ڪريو
$ 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 موٽائي ٿي. ۽ yamllint صرف مليل غلطين جو تعداد واپس ڪري ٿو، جنهن ڪري هي سڄو مشروط تعمير ڪم ڪري ٿو.
2. Python ۾ لکو، YAML نه
جيڪڏهن YAML واقعي توهان کي پريشان ڪري ٿو، صرف ان ۾ نه لکو، لفظي. اهو ٿئي ٿو ته YAML واحد فارميٽ آهي جيڪا ايپليڪيشن سمجهي ٿي. پر انهي صورت ۾ به، اهو ضروري ناهي ته YAML فائل ٺاهي. ان تي لکو جيڪو توهان پسند ڪيو ۽ پوء تبديل ڪريو. مثال طور، اتي Python لاء هڪ وڏي لائبريري آهي
پاڻ بدلائڻ
انهي صورت ۾، ڊيٽا فائل پڻ هڪ پٿون اسڪرپٽ آهي جيڪو YAML ٺاهي ٿو. اهو طريقو ننڍڙو ڊيٽا سيٽ لاء بهترين آهي. توھان صرف JSON ڊيٽا کي Python variable ۾ لکو، ان کي درآمد واري ھدايت سان پيش ڪريو، ۽ فائل جي آخر ۾ ٻاھرين کي لاڳو ڪرڻ لاء ٽي لائين شامل ڪريو.
#!/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 توهان کي ڊيڄاريندو ته اهو شروع نٿو ٿئي - سان. خير، اهو آساني سان درست ڪري سگھجي ٿو دستي طور تي يا ٿورڙي تبديل ٿيل پٿون اسڪرپٽ ۾.
اسڪرپٽ ذريعي تبديلي
ان صورت ۾، اسان پهريون ڀيرو JSON ۾ لکندا آهيون، ۽ پوء ڪنورٽر کي هڪ الڳ پٿون اسڪرپٽ طور هلائيندا آهيون، جيڪو YAML پيدا ڪري ٿو. پوئين طريقي جي مقابلي ۾، ھي طريقو بھتر آھي، ڇو ته تبديلي ڊيٽا کان الڳ آھي.
پهرين، اچو ته هڪ JSON فائل ٺاهيو example.json، مثال طور، توهان ان کان وٺي سگهو ٿا
{
"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 کي JSON ۾ صرف ٻن حڪمن سان انٽرايڪٽو Python شيل ۾. اچو ته چئو ته توهان وٽ 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 ڏانهن واپسي، اهو دورو ڪرڻ مفيد آهي
5. Pseudo-configs
جڏهن ڪو ڪتاب يا مضمون لکندو هجي، اهو هميشه ڪارائتو هوندو آهي ته پهريان هڪ ابتدائي خاڪو ٺاهيو، گهٽ ۾ گهٽ مواد جي جدول جي صورت ۾. اهو ساڳيو YAML سان آهي. گهڻو ڪري، توهان وٽ هڪ خيال آهي ته ڪهڙي ڊيٽا کي YAML فائل ۾ لکڻ جي ضرورت آهي، پر توهان واقعي نه ٿا سمجهو ته ان کي هڪ ٻئي سان ڪيئن ڳنڍجي. تنهن ڪري، YAML کي مجسم ڪرڻ کان اڳ، هڪ pseudo-config ٺاهي.
Pseudo-config pseudo-code سان ملندڙ جلندڙ آهي، جتي توهان کي ساخت يا انڊينٽيشن، والدين-ٻارن جي رشتي، وراثت ۽ nesting بابت پريشان ٿيڻ جي ضرورت ناهي. اهو هتي ساڳيو آهي: توهان ڊيٽا جي ورهاڱي کي ڇڪيو جيئن اهي توهان جي سر ۾ پيدا ٿين ٿا.
Pseudo-config لسٽنگ پروگرامر (مارٽن ۽ تبيتا) ۽ انهن جون صلاحيتون (پروگرامنگ ٻوليون: Python، Perl، Pascal ۽ Lisp، Fortran، Erlang، ترتيب سان).
ڪاغذ جي هڪ ٽڪري تي هڪ pseudo-config ڊرائنگ ڪرڻ کان پوء، احتياط سان تجزيو ڪريو ۽، جيڪڏهن سڀ ڪجهه ترتيب ۾ آهي، ان کي فارميٽ ڪريو صحيح YAML فائل جي صورت ۾.
6. ٽيب بمقابلہ اسپيس ڊيليما
توهان کي مشڪوڪ حل ڪرڻو پوندو
ڪنهن به عام ٽيڪسٽ ايڊيٽر ۾، توهان ترتيب ڏئي سگهو ٿا خودڪار-صحيح ٽيب هڪ مخصوص تعداد ۾ جڳهن تي، تنهنڪري اهم پيروي ڪندڙن جي بغاوت ٽيبل توهان کي ڊڄڻ جي ضرورت ناهي.
جيئن ته هر 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 دستاويز جا مالڪ آهيو ۽ ان کي برقرار رکڻ جا ذميوار آهيو، ته پوءِ تون ۽ صرف تون وضاحت ڪرڻ گهرجي ته ڪيئن استعمال ڪجي indentation. جيڪڏهن توهان وڏي پئڊنگ کان ناراض آهيو، ان کي گهٽ ۾ گهٽ رکو ته 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 کي مختلف شڪل ۾ تبديل ڪرڻ جي قابل. وقت گذرڻ سان گڏ، ڪنفيگريشن فائلون پاڻ کي اڳتي وڌائي سگھن ٿيون ۽ پوءِ اھو بھتر آھي ته انھن کي لوا يا پٿون ۾ سادي اسڪرپٽ ۾ تبديل ڪيو وڃي.
YAML هڪ عظيم شيءِ آهي جنهن کي ڪيترائي ماڻهو پسند ڪن ٿا ان جي گھٽتائي ۽ سادگي لاءِ ، پر اهو پري آهي توهان جي هٿيارن ۾ واحد اوزار. تنهنڪري ڪڏهن ڪڏهن توهان ان کي رد ڪري سگهو ٿا. YAML لاءِ لڏپلاڻ ڪندڙ لائبريريون ڳولڻ آسان آهن، تنهن ڪري جيڪڏهن توهان آسان لڏپلاڻ جا اختيار پيش ڪندا آهيو، توهان جا صارف هن ناڪاميءَ کان بچي ويندا نسبتاً بي درديءَ سان.
جيڪڏهن توهان YAML کان سواءِ نٿا ڪري سگهو، پوءِ اهي 10 ٽوٽڪا وٺو ۽ هڪ ڀيرو ۽ سڀني لاءِ YAML جي پنهنجي ناپسنديدگي تي قابو پاؤ!
جو ذريعو: www.habr.com