YAML Yapılandırması (.yaml)

YAML Standart

YAML Ain't Markup Language (YAML), temiz boşluk girintileri yoluyla insan tarafından okunabilirliğe önem veren; modern DevOps, bulut altyapısı (Kubernetes, Docker Compose) ve CI/CD otomasyonu için baskın veri serileştirme formatıdır.

YAML formatını JSON formatına dönüştür

Ücretsiz tarayıcı içi YAML - JSON dönüştürücü. Dosyalarınızı cihazınızda anında dönüştürün.

İncele & Meta Veriler

İşletim sistemleri ve dosya çözümleyicileri, YAML dosyalarını başlangıçtaki ikili bayt dizisini inceleyerek tanımlar:

Dosyaları buraya seçin veya bırakın

Kesinlikle %100 tarayıcı içi gizli dönüşüm - dosyalar asla cihazınızdan ayrılmaz

veya yapıştırın Ctrl+V
Sıfır Ağ Aktarımı Gizlilik Garantisi: Harici sunuculara 0 bayt yüklendi. Tüm işlemler tarayıcınızın korumalı alanında (sandbox) yerel olarak gerçekleştirildi.

Bayt Düzeyinde Başlık İmzası (Magic Bytes)

İşletim sistemleri ve dosya çözümleyicileri, YAML dosyalarını başlangıçtaki ikili bayt dizisini inceleyerek tanımlar:

HEX İMZASI (OFSET 0):

2D 2D 2D 0A

ASCII GÖSTERİMİ: ---\n

Standardizasyon: YAML 1.2.2 Specification

Teknik Özellikler

Konteyner MimarisiIndentation-based human-friendly data serialization format superset of JSON supporting anchors and aliases
SıkıştırmaUncompressed text stream
Bayt Düzeni (Endianness)UTF-8 / Unicode text stream
Renk UzaylarıN/A (Data Serialization)
Kanallar ve YapıMappings (key-value dictionaries), sequences (lists), scalar types (strings, numbers, booleans), and anchors (&ref/*ref)
Maksimum BoyutlarUnbounded document size (supports multi-document streams separated by '---')
ŞeffaflıkNone
Akış ve Aşamalı (Streaming & Progressive)Multi-document streams allow sequential document-by-document processing

Teknik Karşılaştırma Matrisi: YAML ve Rakipleri

Teknik NitelikYAML (Güncel)JSONTOMLXML
Sözdizimi StiliGirinti boşluk hiyerarşisiKatı köşeli parantezler ve tırnaklarTablolar ve anahtar=değer çiftleriAyrıntılı açılış/kapanış etiketleri
Yorum DesteğiYerel (# yorumları)Yorumlara izin verilmezYerel (# yorumları)<!-- yorumlar -->
DevOps BenimsenmesiEvrensel standart (Kubernetes, CI/CD)Evrensel API standardıRust/Python paket yapılandırmasıKurumsal eski yapılandırma
Veri Yeniden KullanımıYerel Çapalar (&) ve Takma Adlar (*)Yok (manuel çoğaltma)Yok (manuel çoğaltma)XML Varlıkları

Yaygın Bozulma Modları ve Hex Kurtarma Kılavuzu

Ayrıştırıcı hatası: 'mapping values are not allowed here' (eşleme değerlerine burada izin verilmiyor) veya girinti hatası.

Kök Neden: Sekmelerin boşluklarla karıştırılması veya yanlış hizalanmış girinti seviyeleri.

Kurtarma: Sekmeleri boşluklara dönüştürün ve File2File YAML Biçimlendiriciyi kullanarak sözdizimini doğrulayın.

Güvenlik Analizi ve Ayrıştırıcı Saldırı Vektörleri

Özel tip etiketlerini destekleyen YAML ayrıştırıcıları (PyYAML'ın 'yaml.load()' fonksiyonu gibi), tarihi olarak rastgele nesne oluşturma yoluyla uzaktan kod yürütmeye izin veriyordu.

Bilinen Saldırı Vektörleri

  • Güvensiz nesne seri durumdan çıkarma etiketleri (örn. '!!python/object/apply') aracılığıyla rastgele kod yürütme.
  • Varlık genişletme bombaları (YAML çapaları ve takma adları kullanılarak milyarlarca kahkaha eşdeğeri).
  • Örtük boolean ve zaman damgası ayrıştırmasından kaynaklanan tip karışıklığı açıkları.

Savunmacı En İyi Uygulamalar:

Tarihsel Kökenler ve Kilometre Taşları

2021JSON uyumluluğunu ve resmi dilbilgisi tanımlarını iyileştiren YAML 1.2.2 revizyonu yayınlandı.
2009YAML 1.2, YAML'ı JSON'ın katı bir üst kümesi olarak standartlaştırdı; bu, geçerli tüm JSON'ın geçerli bir YAML olduğu anlamına gelir.
2001Clark Evans, Ingy döt Net ve Oren Ben-Kiki, YAML'ı XML'e insan dostu bir alternatif olarak yarattı.

Temel Avantajlar ve Artılar

  • Modern bulut altyapısı için tartışmasız standart: Kubernetes manifestolarında, Docker Compose'da ve GitHub Actions'da evrensel olarak kullanılır.
  • Temiz, okunabilir sözdizimi: sezgisel girintiler sayesinde süslü parantezler, köşeli parantezler ve tırnak işaretlerinin karmaşasını ortadan kaldırır.
  • Yinelenen yapılandırma bloklarını çoğaltmadan yeniden kullanmak için referansları ve çapaları (&anchor / *anchor) destekler.

Teknik Kısıtlamalar ve Eksiler

  • Boşluk duyarlı: kazara konulan bir sekme veya tek bir fazladan boşluk, belge hiyerarşisini bozabilir veya ayrıştırma hatalarına neden olabilir.
  • Kötü şöhretli tip zorlama hataları: 'no', 'on', 'yes' gibi tırnak içine alınmamış kelimeler veya ülke kodları ('NO' - Norveç için) sessizce boolean (mantıksal) değerlere dönüşebilir.
  • İkili formatlara veya katı JSON'a kıyasla önemli ölçüde daha yavaş ayrıştırma hızı.

İlginç Teknik Bilgiler

  • YAML başlangıçta 'Yet Another Markup Language' anlamına geliyordu, ancak veri serileştirmesini vurgulamak için eğlenceli bir şekilde yinelemeli kısaltma olan 'YAML Ain't Markup Language' olarak yeniden adlandırıldı.
  • Norveç Sorunu, bir YAML dosyasındaki 'NO' ülke kodunun 'false' mantıksal değeri olarak ayrıştırıldığı ünlü bir programlama hatasıdır.
  • Dünyadaki her geçerli JSON dosyası aynı zamanda %100 geçerli bir YAML dosyasıdır.

Sıkça Sorulan Teknik Sorular

YAML ne için kullanılır?

YAML; bulut bilişim, Kubernetes küme dağıtımı, Docker Compose dosyaları, GitHub Actions iş akışları ve yazılım ayarları için birincil yapılandırma dilidir.

YAML dosyalarında sekme (tab) kullanabilir miyim?

Hayır. Resmi YAML spesifikasyonu, girinti için sekme karakterlerinin kullanılmasını kesinlikle yasaklar; her zaman boşluk kullanmalısınız (genellikle seviye başına 2 boşluk).

YAML'ı JSON formatına nasıl dönüştürebilirim?

Tam gizlilikle, web tarayıcınız üzerinden doğrudan File2File.app kullanarak YAML dosyalarını tek tıkla temiz, doğrulanmış bir JSON formatına dönüştürebilirsiniz.