ወደ YAML Zen 10 ደረጃዎች

ሁላችንም አንሲብልን እንወዳለን፣ ነገር ግን አንሲብል YAML ነው። የውቅር ፋይሎች በተለያዩ ቅርጸቶች ይመጣሉ፡ የእሴቶች ዝርዝር፣ የፓራሜትር-እሴት ጥንዶች፣ የINI ፋይሎች፣ YAML፣ JSON፣ XML እና ሌሎች ብዙ። ሆኖም፣ YAML ብዙውን ጊዜ በብዙ ምክንያቶች በተለይ አስቸጋሪ እንደሆነ ይታሰባል። በተለይም፣ አድስ ዝቅተኛነት እና ከተዋረድ እሴቶች ጋር ለመስራት አስደናቂ ችሎታዎች ቢኖሩትም፣ የYAML አገባብ በፓይዘን መሰል ወደ ውስጥ በማስገባት አቀራረብ ምክንያት የሚያበሳጭ ሊሆን ይችላል።

ወደ YAML Zen 10 ደረጃዎች

YAML ቢያበሳጭዎት፣ ይችላሉ - እና ማድረግ አለብዎት! -- የሚከተሉትን 10 እርምጃዎች መውሰድ ይችላሉ - እና ማድረግ አለብዎት! -- ብስጭትዎን ወደ ማስተዳደር ደረጃ ለመቀነስ እና YAMLን መውደድን ለመማር የሚከተሉትን 10 ደረጃዎች ይውሰዱ። ከእውነተኛ ዝርዝር ጋር በሚስማማ መልኩ፣ 10 ምርጥ ምክሮቻችን ከዜሮ ጀምሮ ቁጥር ይሰጣቸዋል፣ ማሰላሰል እና መንፈሳዊ ልምምዶች አማራጭ ናቸው።

0. አርታኢዎን ወደ ስራ ያስገቡ

የትኛውንም የጽሑፍ አርታኢ ቢጠቀሙ፣ ቢያንስ አንድ የYAML ተሰኪ ሊኖር ይችላል። ከሌለዎት አንዱን ያግኙና ወዲያውኑ ይጫኑት። YAMLን ለማርትዕ በሚፈልጉበት ጊዜ ሁሉ ብዙ ጊዜ ይከፈለዎታል።

ለምሳሌ፣ አርታኢ አቶም YAMLን በነባሪነት ይደግፋል፣ ነገር ግን ለጂኤንዩ ኢማክስ ተጨማሪ ፓኬጆችን መጫን ይኖርብዎታል፣ ለምሳሌ፣ የያምል-ሁነታ.

ወደ YAML Zen 10 ደረጃዎች

በ YAML ሁነታ እና የማሳያ ቦታዎች ውስጥ ያሉ ኢማኮች።

የምትወደው አርታኢ የYAML ሁነታ ከሌለው፣ ቅንብሮቹን በማስተካከል አንዳንድ ችግሮችን መፍታት ትችላለህ። ለምሳሌ፣ ነባሪው የGNOME የጽሑፍ አርታኢ የሆነው Gedit የYAML ሁነታ የለውም፣ ነገር ግን በነባሪነት የYAML አገባብን ያጎላል እና ገብን እንዲያበጁ ይፈቅድልዎታል፡

ወደ YAML Zen 10 ደረጃዎች

በጌዲት ውስጥ ያሉትን ገብ ማስተካከል።

እና ፕለጊኑ የመሳቢያ ክፍተቶች ለ Gedit ክፍተቶችን እንደ ነጥቦች ያሳያል፣ ይህም ከመግቢያ ደረጃዎች ጋር ያለውን ግራ መጋባት ያስወግዳል።

በሌላ አነጋገር፣ የሚወዱትን አርታኢ ለመማር ጊዜ ያሳልፉ። ከYAML ጋር ለመስራት የእሱ ወይም የልማት ማህበረሰቡ ምን እንደሚያቀርብ ይወቁ እና እነዚህን ባህሪያት ይጠቀሙ። በእርግጠኝነት አይቆጩም።

1. ተንተር ይጠቀሙ

በሐሳብ ደረጃ፣ የፕሮግራሚንግ ቋንቋዎች እና የማርክ አፕ ቋንቋዎች ሊገመት የሚችል አገባብ ይጠቀማሉ። ኮምፒውተሮች በመተንበይ ረገድ ጥሩ ናቸው፣ ለዚህም ነው የ ላንተርየYAML ሊንተርን ከ40 ዓመታት በፊት ተጠቅመህ የማታውቅ ከሆነ፣ የYAML ሊንተርን ለመሞከር ጊዜው አሁን ነው።

ይጫኑ ያምሊንት можно с помощью штатного менеджера пакетов Linux. Например, в ቀይ ኮፍያ ኢንተርፕራይዝ Linux 8 ወይም Fedora እንደዚህ ተከናውኗል

$ 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. በ YAML ሳይሆን በፓይቶን ይፃፉ

YAML በእርግጥ የሚያበሳጭህ ከሆነ፣ ቃል በቃል አትጻፍበት። አንዳንድ ጊዜ YAML አንድ መተግበሪያ የሚረዳው ብቸኛው ቅርጸት ነው። ነገር ግን በዚህ ሁኔታ ውስጥም ቢሆን የYAML ፋይል መፍጠር አያስፈልግዎትም። የፈለከውን ጻፍ እና ከዚያ ቀይር። ለምሳሌ፣ ለፓይዘን ጥሩ ቤተ-መጽሐፍት አለ። ፒየም እና ሁለት የመቀየሪያ ዘዴዎች፡ ራስን መለወጥ እና በስክሪፕቶች መለወጥ።

ራስን መለወጥ

በዚህ ሁኔታ፣ የውሂብ ፋይሉ የYAML ን የሚያመነጭ የፓይዘን ስክሪፕት ነው። ይህ ዘዴ ለአነስተኛ የውሂብ ስብስቦች በጣም ተስማሚ ነው። የJSON ውሂብን ወደ ፓይዘን ተለዋዋጭ መጻፍ፣ በማስመጣት መመሪያ ቅድመ ቅጥያ ማድረግ እና በፋይሉ መጨረሻ ላይ ሶስት የውጤት መስመሮችን ማከል ይችላሉ።

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

አሁን ይህንን ፋይል በፓይቶን እናስኬዳለን እና የ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፣ ለምሳሌ፣ ከ 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ን ወደ JSON መቀየር ይችላሉ። mydata.yaml የሚባል የ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. የውሸት ውቅሮች

መጽሐፍ ወይም ጽሑፍ ሲጽፉ፣ ቢያንስ በይዘት ሠንጠረዥ መልክ አጭር ንድፍ ማውጣት ሁልጊዜ ጠቃሚ ነው። ለYAMLም ተመሳሳይ ነው። ምናልባት በYAML ፋይል ውስጥ ምን ውሂብ መፃፍ እንዳለበት ሀሳብ ሊኖርዎት ይችላል፣ ነገር ግን እንዴት ማገናኘት እንደሚችሉ እርግጠኛ አይደሉም። ስለዚህ YAMLን መቅረጽ ከመጀመርዎ በፊት የውሸት-ውቅር ይፍጠሩ።

የውሸት-ውቅር ልክ እንደ ውሸት-ኮድ ነው፣ እዚያም ስለ መዋቅር ወይም ገብ፣ የወላጅ-ልጅ ግንኙነቶች፣ ውርስ ወይም ጎጆ መስራት መጨነቅ አያስፈልግዎትም። ስለዚህ እዚህ አለ፡ በአእምሮዎ ውስጥ ሲነሱ የውሂብ ድግግሞሾችን ይሳሉ።

ወደ YAML Zen 10 ደረጃዎች

የፕሮግራመሮች ዝርዝር (ስሙዝ-ውቅር) ዝርዝር ፕሮግራመሮች (ማርቲን እና ታቢታ) እና ክህሎቶቻቸው (የፕሮግራሚንግ ቋንቋዎች፡ ፓይዘን፣ ፐርል፣ ፓስካል እና ሊስፕ፣ ፎርትራን፣ ኤርላንግ፣ በቅደም ተከተል)።

በወረቀት ላይ የውሸት-ውቅር ከሳሉ በኋላ በጥንቃቄ ይተንትኑት እና ሁሉም ነገር በሥርዓት ከሆነ እንደ ትክክለኛ የYAML ፋይል ቅርጸት ይስሩለት።

6. የትር ወይም የቦታዎች አጣብቂኝ

አንድ ችግር መፍታት ይጠበቅብዎታል "ትሮች ወይስ ክፍተቶች?"በዓለም አቀፍ ደረጃ ሳይሆን በድርጅትዎ ደረጃ ወይም ቢያንስ በፕሮጀክትዎ ላይ ብቻ። ይህ በ sed ስክሪፕት ድህረ ሂደትን የሚያካትት፣ የጽሑፍ አርታኢዎችን በፕሮግራመሮች ማሽኖች ላይ ማዋቀር ወይም ከሥራ መባረር ስጋት ስር የሊንተር መመሪያዎችን በጥብቅ መከተልን የሚያካትት ይሁን አይሁን ምንም ለውጥ አያመጣም፣ ነገር ግን 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 ወደ ሌላ ቅርጸት መቀየር ጠቃሚ ሊሆን ይችላል። የውቅር ፋይሎች በጊዜ ሂደት ጊዜ ያለፈባቸው ሊሆኑ ይችላሉ፣ እና ወደ ቀላል የሉአ ወይም የፓይዘን ስክሪፕቶች መቀየር የተሻለ ነው።

YAML በብዙዎች ዘንድ በጣም ጥሩ መሳሪያ ሲሆን በአነስተኛነቱ እና በቀላልነቱ የተወደደ ነው፣ ነገር ግን በጦር መሳሪያዎ ውስጥ ካሉት ብቸኛው መሳሪያ በጣም የራቀ ነው። ስለዚህ፣ አንዳንድ ጊዜ መተው ችግር የለውም። ለYAML ቤተ-መጻሕፍትን መተንተን በቀላሉ ማግኘት ይቻላል፣ ስለዚህ ምቹ የፍልሰት አማራጮችን የሚያቀርቡ ከሆነ፣ ተጠቃሚዎችዎ በማብሪያ / ማጥፊያው በአንጻራዊነት ምቾት ይሰማቸዋል።

YAMLን መጠቀም የግድ አስፈላጊ ከሆነ፣ እነዚህን 10 ምክሮች ይውሰዱ እና ለYAML ያለዎትን ጥላቻ ለአንዴና ለመጨረሻ ጊዜ ያሸንፉ!

ምንጭ: hab.com

በDDoS ጥበቃ፣ VPS VDS አገልጋዮች ለጣቢያዎች አስተማማኝ ማስተናገጃ ይግዙ 🔥 አስተማማኝ የድር ጣቢያ ማስተናገጃ በዲዶኤስ ጥበቃ፣ በቪፒኤስ ቪዲኤስ አገልጋዮች ይግዙ | ProHoster