مقدمة إلى YAML للمبتدئين
إذا كنت مطورًا يكتب واجهات برمجة تطبيقات ، فمن المحتمل أنك صادفت YAML على الرغم من أن أداة التسلسل الأساسية لديك قد تكون JSON.
تمتلك YAML تركيبًا ودودًا خاصًا بها ، وهي لغة مفيدة تضيفها إلى ترسانة التطوير الخاصة بك.
دعنا نتعلم أساسيات YAML.
تسلسل البيانات
عندما تريد إرسال بعض بنية البيانات أو كائن عبر شبكات الكمبيوتر ، على سبيل المثال الإنترنت ، عليك تحويله إلى تنسيق خاص لقراءته وتخزينه. تُعرف العملية عمومًا باسم التسلسل ولها أهمية كبيرة على الويب. مثال الاستخدام الشائع للتسلسل هو عند قراءة البيانات من قواعد البيانات ونقلها عبر الويب.
تتضمن بعض تكوينات التسلسل JSON و YAML و XML.
في هذه المقالة ، نتحدث عن YAML ، وفي نهاية المقال ، ستتمكن من شق طريقك من خلال YAML ولديك مقدمة واضحة عن YAML.
ما هو برنامج YAML وكيف يفيدني؟
YAML هو تنسيق تسلسل البيانات الذي يرمز إلى YAML ليست لغة ترميز.
الميزة الرئيسية لاستخدام YAML هي سهولة القراءة والكتابة. إذا كان لديك ملف تكوين يجب أن يكون أسهل على البشر لقراءته ، فمن الأفضل استخدام YAML. YAML ليس بديلاً كاملاً لـ JSON لأن JSON و XML لهما مكانهما أيضًا ؛ ومع ذلك ، من المفيد تعلم YAML.
فائدة أخرى لـ YAML هي دعمها لأنواع بيانات مختلفة مثل الحالات والمصفوفات والقواميس والقوائم والقياسات. إنه يدعم اللغات الأكثر شيوعًا مثل JavaScript و Python و Ruby و Java وما إلى ذلك.
يدعم YAML المسافات فقط ، وهو حساس لحالة الأحرف بالإضافة إلى أنه حساس للمساحة. علامات التبويب غير مقبولة عالميا. يحتوي ملف YAML على الامتداد .yaml.
بناء جملة YAML الأساسي
يبدأ كل YAML بـ – مما يدل على بداية ملف YAML.
عند إنشاء واجهة برمجة تطبيقات ، نحن مهتمون بميزة تقدمها YAML تُعرف باسم التعيين.
توضح الأمثلة التالية مثال التعيين في YAML.
--- name: James boy: yes GPA: 3.41
بناء جملة التعيين هو المفتاح: القيمة. (لاحظ المساحة ، إنها مهمة جدًا في YAML ، على عكس JSON أو XML.
يدعم YAML أيضًا أنواع البيانات مثل الأحرف والسلاسل والأعداد الصحيحة والقيم العائمة والمجموعات مثل المصفوفات والقوائم التي يتم إنشاؤها من أنواع البيانات الأساسية.
أنواع البيانات في YAML
دعنا نرى مثال YAML أدناه:
--- MALE: FALSE GPA: 3.61 ISSUES: NULL NAME: “BIGYAN” AGE: 16
نوع البيانات الأول هو نوع منطقي ، حيث يمكن أن يحتوي على قيمتين: صواب أو خطأ. قيمة المعدل التراكمي هي النقطة العائمة. يدعم YAML أيضًا نوع البيانات الفارغ كما لدينا في “المشكلات”. قيمة “الاسم” عبارة عن سلسلة يجب نقلها داخل علامات اقتباس مزدوجة أو مفردة. يدعم YAML أيضًا سلسلة متعددة الأسطر وسلسلة متعددة الأسطر باعتبارها سلسلة واحدة لسهولة القراءة.
سلاسل متعددة الأسطر وسطر واحد
--- About: > Hello this is Ryan From Alabama and I like to Play soccer.
يتيح لك الرمز > كتابة سلسلة سطر واحد إلى عدة أسطر. الجملة هي في الواقع وصف سطر واحد على الرغم من أن لدينا عدة أسطر.
يمكن أن يكون لدينا أيضًا سلاسل أسطر متعددة إذا استخدمنا | رمز مثل المسموح به:
About: | This is a multiline string And will be printed line wise.
قائمة
القوائم مهمة جدًا في YAML.
ويرد مثال على القائمة أدناه.
--- - apple - banana - mango
يظهر التعيين من الحجمي إلى القوائم أدناه ، وهو أمر مهم جدًا لمعظم ملفات التكوين.
--- Fruits: Apples Banana Guava
التداخل مطلوب لتعيين الحجم إلى القائمة. يمكن أن يكون لدينا أيضًا قوائم متداخلة متعددة ، كما هو موضح في المثال أدناه.
Automobiles: Car: Hyundai Volkswagen Ford
هنا تتداخل السيارات داخل السيارات ، وتتداخل Hyundai داخل السيارات. هذا مثال على تداخل متعدد. يمكن أن يكون لدينا تداخل متعدد بقدر ما نريد.
Subjects: Engineering: Mechanical engineering: Design and manufacture Automobile Control and Design Civil engineering: Structural engineering Hydropower Arts: Medieval Modern Painting
يوفر YAML أيضًا & و * الرموز كمثبتات ومراجع إلى المرساة لتجنب الازدواجية. إنها ضرورية في ملفات التكوين في أطر مثل Ruby on Rails لجعل ملف YAML أصغر.
انظر المثال أدناه
<span class="hljs-attr">details:</span> <span class="hljs-meta">&details</span> <span class="hljs-attr">name:</span> <span class="hljs-string">"John" </span> age: 18
profession: engineer << : * details
وهو ما يعادل:
profession: engineer name: "John" age: 18
YAML في بايثون
تدعم Python YAML ، بما في ذلك بعض الوحدات النمطية مثل ruamel و pyyaml. ابدأ بتثبيت Pyyaml
نقطة تثبيت بيامل
بالنسبة للبرنامج التعليمي ، قم بإنشاء ملف باسم details.yaml
name: "john" age:18 gender: male
قم بإنشاء ملف آخر باسم feed.yaml بالمحتوى التالي:
sports: football basketball cricket baseball --- countries: Brazil Lithuania Australia USA
لنبدأ بقراءة تفاصيل الملف
import yaml with open('details.yaml') as f: data = yaml.load(f, Loader=yaml.FullLoader) print(data)
بعد تشغيل ملف details.py ، نحصل على الإخراج التالي
$ python details.py {'name': "john", 'age': 18, 'gender': male}
import yaml with open(r'feed.yaml') as file: # The FullLoader parameter handles the conversion from YAML # scalar values to Python the dictionary format fruits_list = yaml.load(file, Loader=yaml.FullLoader) print(fruits_list)
كتابة YAML إلى ملفات في بايثون
import yaml dict_file = [{'sports' : ['hockey', 'rugby', 'tennis', 'ping pong', 'football', 'badminton']}, {'countries' : ['Jamaica', 'England', 'Nepal', 'Netherlands', 'South Africa', 'Bolivia', 'Portugal']}] with open(r'E:data.yaml', 'w') as file: #create a new yaml file data = yaml.dump(dict_file, file)
تنفيذ YAML في Node.js
Node.js هي لغة معالجة من جانب الخادم ، وتسلسل البيانات له أهمية كبيرة في عملية التطوير.
بالنسبة لبرنامجنا التعليمي ، دعنا نفكر في مثال الملف التالي. yaml:
name:John age:18 Hobbies: Hobby1:Football Hobby2:BasketBall Hobby3:Hockey Job: -System administrator -Programmer
لدينا مكتبة npm متاحة لـ Node.js تسمى شبيبة يامل. لنبدأ بتثبيت الوحدة بواسطة
npm install js-yaml
ثم نستخدم الوحدة النمطية js-yaml في ملفنا.
const yaml = require('js-yaml'); //initialize js-yaml const fs = require('fs'); //initialize filestream try { const result = yaml.load(fs.readFileSync('example.yml', 'utf8')); console.log(result); } catch (e) { console.log(e); //catch exception }
استنتاج
في أطر البرمجة والتطبيقات الحديثة حيث يتم تخزين البيانات أو توزيعها ، أصبح YAML أكثر شيوعًا في ملفات التكوين. يستهدف YAML العديد من تطبيقات الاتصال نفسها مثل لغة التوصيف الموسعة (XML) ، لكن له حد أدنى من بناء الجملة يختلف عمداً عن XML.
يمكن إنشاء ملفات YAML لهياكل البيانات الثابتة باستخدام أوامر الطباعة التي تكتب كلاً من البيانات وزخرفة YAML الخاصة. ومع ذلك ، يُفضل استخدام باعث YAML المخصص لإلقاء بيانات هرمية متنوعة أو معقدة. وبالمثل ، مع التعبيرات العادية ، يتم تحليل ملفات YAML الأساسية (على سبيل المثال ، أزواج المفتاح والقيمة) بسهولة.