Co to jest format pliku YML?
.yml to plik tekstowy i format wymiany danych. Jest to standaryzowany, niezależny od platformy format, który przechowuje dane jako tekst czytelny dla człowieka, zorganizowany poprzez strukturę klucz: wartość opartą na wcięciach. Pliki .yml mogą być odczytywane i zapisywane przy użyciu bibliotek YAML dostępnych dla praktycznie każdego głównego języka programowania. Rozszerzenia .yml i .yaml identyfikują ten sam format - .yml to starsza, trzyliterowa forma zachowana przez wiele narzędzi, takich jak docker-compose.yml, .gitlab-ci.yml oraz przepływy pracy GitHub Actions. Format ten jest najczęściej używany do serializacji danych i konfiguracji aplikacji.
Serializacja to termin używany w informatyce, odnoszący się do koncepcji wymiany danych między programami lub aplikacjami przy użyciu dobrze zdefiniowanych obiektów. Obiekt można rozumieć jako kontener danych. Na przykład rekordy bazy danych są formą serializacji danych, ponieważ można je łatwo wymieniać między różnymi bazami danych. Zserializowane dane mogą również przybierać formę plików strukturalnych, które można przesyłać między aplikacjami. Do najczęściej używanych formatów serializacji należą .yml, XML, JSON oraz TOML.
Charakterystyczną cechą .yml jest wykorzystanie znaczących białych znaków: wcięcia definiują strukturę dokumentu i dozwolone są tylko spacje - tabulatory są wyraźnie zabronione przez specyfikację. Dokumenty mogą opcjonalnie zaczynać się od --- (początek dokumentu) i kończyć na .... YAML obsługuje również komentarze wewnątrz linii zaczynające się od #, wieloliniowe bloki skalarne przy użyciu | lub > oraz kotwice (&) z aliasami (*) do ponownego użycia powtarzających się wartości.
Bezpieczeństwo
RYZYKO: MEDIUMPlik .yml jest czystym tekstem i nie wykonuje się samodzielnie, więc jego odczyt jest bezpieczny. Istnieją dwa realne zagrożenia: (1) pliki konfiguracyjne YAML (potoki CI, Compose, K8s, Ansible) często zawierają sekrety - tokeny, hasła, klucze - więc nie wklejaj ich do niezaufanych walidatorów online ani nie publikuj publicznie. (2) Niebezpieczeństwo programistyczne: ładowanie niezaufanego YAML za pomocą niebezpiecznego parsera (np. PyYAML „yaml.load” zamiast „yaml.safe_load”) może wykonać dowolne obiekty/kod - zawsze używaj bezpiecznego ładowania dla plików, którym nie ufasz. Ryzyko edycji: tabulator lub źle wyrównana spacja po cichu zmienia znaczenie, więc waliduj plik po edycji.
Szczegóły formatu
w pigułce- Strangereal IFL camera-map (rzadko) - Kilka starszych aplikacji używało rozszerzenia .yml dla danych innych niż YAML, ale dziś to rozszerzenie praktycznie zawsze oznacza tekst YAML.
Programy otwierające pliki YML
Szczegóły techniczne
specyfikacja| Typ MIME | application/yaml (zarejestrowany w IANA); starsze warianty to text/yaml, text/x-yaml, application/x-yaml |
| Kodowanie | UTF-8 (domyślne i najczęstsze); UTF-16 i UTF-32 z BOM są dozwolone przez specyfikację, ale rzadko używane w praktyce |
| Struktura pliku | Mapowania oparte na wcięciach (klucz: wartość), sekwencje (- element) i skalary; zagnieżdżanie jest wyrażane wyłącznie przez poziom wcięcia |
| Znaczące białe znaki | Wcięcia definiują strukturę; dozwolone są tylko spacje - tabulatory są wyraźnie zabronione przez specyfikację YAML |
| Znaczniki dokumentu | Opcjonalne --- oznacza początek dokumentu; ... oznacza koniec dokumentu; pojedynczy plik .yml może zawierać wiele dokumentów YAML oddzielonych przez --- |
| Obsługa komentarzy | Komentarze wewnątrz linii i pełnoliniowe wprowadzane przez # - nieobecne w JSON i większości binarnych formatów serializacji |
| Natywne typy danych | String, integer, float, boolean, null, timestamp oraz dane binarne (zakodowane w base64 za pomocą tagu !!binary) |
| Kotwice i aliasy | & deklaruje kotwicę wielokrotnego użytku; * odwołuje się do niej (alias) - eliminuje powtarzanie danych przez kopiuj-wklej w złożonych plikach konfiguracyjnych |
| Bloki skalarne | | (dosłowny blok skalarny) zachowuje znaki nowej linii bez zmian; > (złożony blok skalarny) zamienia znaki nowej linii na spacje |
| Nadbiór JSON | Od wersji YAML 1.2 (2009) każdy poprawny plik JSON jest również poprawnym plikiem YAML, więc parsery YAML mogą natywnie odczytywać JSON |
| Magic bytes / sygnatura | Brak - brak binarnego nagłówka lub liczby magicznej; identyfikowany przez strukturę klucz: wartość opartą na wcięciach oraz rozszerzenie .yml lub .yaml |
| Rozmiar pliku (typowy) | Od bajtów do kilkudziesięciu KB dla plików konfiguracyjnych i potoków CI/CD; rzadko przekracza kilkaset KB |
| Równoważność rozszerzeń | .yml i .yaml mają identyczny format; .yml to trzyliterowa forma z ery DOS przyjęta przez docker-compose.yml, .gitlab-ci.yml i GitHub Actions |
| Dyrektywa wersji specyfikacji | Opcjonalna pragma %YAML 1.2 na początku pliku deklaruje wersję specyfikacji; większość plików ją pomija, polegając na domyślnych ustawieniach parsera |
| Wydano | 2001 (YAML 1.0); YAML 1.1 (2005); current YAML 1.2 (2009, revised 1.2.2 in 2021) |
| Najnowsza wersja | YAML 1.2.2 (2021) |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | yaml.org |
Konwersje YML
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki YML.