YAML Yapılandırması (.yaml)
YAML StandartYAML 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:
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 0AASCII GÖSTERİMİ: ---\n
Standardizasyon: YAML 1.2.2 Specification
Teknik Özellikler
| Konteyner Mimarisi | Indentation-based human-friendly data serialization format superset of JSON supporting anchors and aliases |
| Sıkıştırma | Uncompressed 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 Boyutlar | Unbounded document size (supports multi-document streams separated by '---') |
| Şeffaflık | None |
| 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 Nitelik | YAML (Güncel) | JSON | TOML | XML |
|---|---|---|---|---|
| Sözdizimi Stili | Girinti boşluk hiyerarşisi | Katı köşeli parantezler ve tırnaklar | Tablolar ve anahtar=değer çiftleri | Ayrıntılı açılış/kapanış etiketleri |
| Yorum Desteği | Yerel (# yorumları) | Yorumlara izin verilmez | Yerel (# yorumları) | <!-- yorumlar --> |
| DevOps Benimsenmesi | Evrensel 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ı
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.
İlgili YAML Dönüşüm Çiftleri
YAML yapılandırma dosyalarını JSON biçimine dönüştürmek, insan tarafından okunabilen girintili metin yapılarını web uygulamaları için katı bir şekilde makine tarafından ayrıştırılabilen nesnelere çevirir.
JSON yapılandırma dosyalarını YAML biçimine dönüştürmek, katı programlı veri yapılarını, sistem yöneticilerinin düzenlemesi çok daha kolay olan temiz, insan tarafından okunabilen belgelere dönüştürür.