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 biçimini JSON biçimine dönüştür

Tarayıcında YAML biçimini JSON biçimine ücretsiz dönüştür. Dosyaları cihazında anında dönüştür.

İncele ve Meta Veriler

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

Dosyaları buraya seç veya bırak

Özel - dosyalar cihazınızdan asla ayrılmaz

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

Bayt düzeyinde başlık imzası (sihirli baytlar)

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

HEX İMZASI (OFSET 0):

2D 2D 2D 0A

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

Standartlaştırma: YAML 1.2.2 belirtimi

Teknik Özellikler

Kapsayıcı mimarisiGirintiye dayalı, insanın kolayca okuyabileceği veri serileştirme biçimidir; JSON'ın üst kümesidir ve çapaları ve takma adları destekler.
SıkıştırmaSıkıştırılmamış metin akışı
Bayt Düzeni (Endianness)UTF-8 / Unicode metin akışı
Renk UzaylarıUygulanamaz (veri serileştirme)
Kanallar ve YapıEşlemeler (anahtar-değer sözlükleri), diziler (listeler), skaler türler (dizgeler, sayılar, mantıksal değerler) ve çapalar (&ref/*ref)
Maksimum BoyutlarSınırsız belge boyutu ('---' ile ayrılmış çok belgeli akışları destekler)
ŞeffaflıkYok
Akış ve Aşamalı İşlemeÇok belgeli akışlar, belgelerin sırayla işlenmesini sağlar.

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 BenimsenmesiDestek, yazılıma göre değişir.Destek, yazılıma göre değişir.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şluklarla değiştir ve File2File.app YAML Formatter ile sözdizimini doğrula.

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), geçmişte 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ı.

Savunmaya yönelik en iyi uygulamalar: Her zaman güvenli YAML ayrıştırıcıları kullan (Python'daki 'yaml.safe_load()' gibi) ve çapaların açılma derinliğini sınırla.

Tarihsel kökenler ve önemli dönüm noktaları

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

Temel Avantajlar ve Artılar

  • YAML altyapı araçlarında yaygındır, ancak destek ve davranış uygulamaya göre değişir.
  • 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 karakterlerine duyarlı: kazara konulan bir sekme veya tek bir fazladan boşluk, belge hiyerarşisini bozabilir veya ayrıştırma hatalarına neden olabilir.
  • Bilinen tür dönüştürme sorunları: Tırnaksız 'no', 'on', 'yes' gibi sözcükler veya ülke kodları ('NO', Norveç'in kodu) fark edilmeden boole değerlerine 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'ın açılımı önce 'Yet Another Markup Language' idi. Veri serileştirmeyi vurgulamak için ad daha sonra, aynı kısaltmayı yineleyen 'YAML Ain't Markup Language' olarak değiştirildi.
  • 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ımları, Docker Compose dosyaları, GitHub Actions iş akışları ve yazılım ayarları için başlıca yapılandırma dilidir.

YAML dosyalarında sekme (tab) kullanabilir miyim?

Hayır. Resmî YAML belirtimi girinti için sekme karakterlerini kesinlikle yasaklar; her zaman boşluk kullanmalısın (genellikle her girinti düzeyi için 2 boşluk).

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

YAML dosyalarını web tarayıcında doğrudan File2File.app ile tek tıkta temiz ve doğrulanmış JSON'a, gizliliğini koruyarak dönüştürebilirsin.