Komentáře k článku

YAML: Serializační formát pro ukládání dat

Aplikace často potřebují ukládat a načítat různé údaje – nastavení, nejrůznější seznamy, data ke zpracování či další informace. Nejjednodušší je prostý zápis do datového souboru. Otázkou však zůstává: Jaký formát zvolit? Představíme si jeden z méně známých, ale přesto poměrně dobře standardizovaných formátů.

Zpět na článek

46 komentářů k článku YAML: Serializační formát pro ukládání dat:

  1. wayan

    S tou jednoduchostí nevím

    Používáme ve firmě konfiguráky v YAMLu a pomalu pro něj ztrácím sympatie. Většinou i mírně zanořenou strukturu si musím nejdřív napsat v Perlu a do YAMLu konvertovat přes YAML::Dump, abych se nesekl s odsazením.

    U JSONu alespoň díky složeným a hranatým závorkám člověk vidí, kde mu jaká struktura začíná a končí.

  2. fous

    slozena data

    kapitola slozena data

    …položka seznamu je opět asociativní pole s klíčem „články“.

    opravdu clanky???

  3. Zuzka

    Nádhera

    Vrrr, vrrr, ještě více textových formátů! Ach, až každý bude mít alespoň pět vlastních formátů, to bude doba.

    Bože bože… Kdo nic neumí, vymyslí vlastní „jazyk“.

      1. Zuzka

        Re: Nádhera

        By ses divil.

        Je to směšné. Každého pseudoprogramátora jednou za čas popadne jakési zvláštní vnitřní puzení, vezme si existující formát nebo jazyk a dá se do díla. Tady jsou závorky normální, řekne si, tak tam dáme složené. Nebo dvojtečky? Jo, dvojtečy budou nejlepšejší, jsou tak půvabné. Tady jsou zas hvězdičky, tak místo nich dáme stříšky, místo uvozovek použijeme dvě nebo tři mezery, och, to bude _tak_ krásné!

        A „nový“ bezvýznamný jazyk nebo formát je na světě.

        Ještě se k tomu napíše spousta blábolů, že jako ty hvězdičky fakt už nejsou cool, zato stříšky, a že to zabere méně/více místa, což sice nikoho nezajímá, a že je to teď mnohem srozumitelnější (pro autora snad), je to jedinečné, autor je jedinečný, mistr světa amoleta.

        1. Inkvizitor

          Re: Nádhera

          Odlišná syntaxe není zase takový problém, ale někdy ty zvláštnosti opravdu vypadají, že jsou samoúčelné. Nepochopil jsem třeba, proč TCL vypadá, jak vypadá, ale ani jsem po tom nijak nepátral. Jinak jsem rád, že vznikají nové jazyky, pokud ovšem přinášejí nějaké výhody.

          Ne vždy tomu tak ale je. U formátů to je menší problém, ty jsou obyčejně jednoduché a málokdy je člověk používá přímo. YAML mi přijde v některých případech velice výhodný a elegantní. Je starší než JSON a podle všeho i univerzálnější. Takže moc nechápu, proč Ti vadí zrovna tenhle formát.

          1. pr.rybar

            Re: Nádhera

            Zizka je iste blond a este navyse kratkozraka :)
            Ona ani netusi aky je YAML skvely format a vobec netusi aky je jeho ciel a to nehovorim ze netusi ako sa lisi od XML a ze JSON je podmnozinou YAML.

            Tak Zuzka, ulozit hracky a spat!

            1. Culibrk

              Re: Nádhera

              No.. Netiketa nic, ze. A k zene uz vubec ne, ze. Jenze tohle, pane dospely, asi nejste schopen pripustit, ze. Povozit se na foru po nekom, kdo mi nevidi do karet (a vysledku at uz v praci nebo ve skole) je TAK jednoduche. Tak proc to neudelat, ze. :-P

              1. Alenka

                Re: Nádhera

                Netiketa je aj registrovat sa. Ste si isty, ze zuzka je naozaj ONA?
                Zuska robi hanbu vsetkym nam zenam! Distancujeme sa od nej.

    1. Jiří Kosek

      Re: Bílé znaky

      A znáte programovací jazyk Whitespace? Je perfektní, akorát se zdrojáky po vytištění špatně čtou ;-)

      1. Mirek

        Re: Bílé znaky

        .. pro účely strukturování dat … nikoli vizuální podoby kódu nebo zápisu. Myslím to zkrátka tak, že bílé znaky by neměly mít žádný význam pro strojové zpracování. Jakmile někde záleží na tom, jestli je tam mezera, nebo odsazení, tak je to je pro zlost.

      1. Inkvizitor

        Re: Bílé znaky

        Nejenom „krajtisti“, jazyků se sémanticky významným odsazením je více. Nejde jenom o potomky Pythonu (Boo, Cobra…), ale třeba i o Haskell. U Haskellu to odsazování nedělá problémy prakticky vůbec, protože nemá třídy (v OOP slova smyslu) a funkce v něm napsané nemají tendenci lézt 5 úrovní doprava, jak mají ve zvyku nedisciplinovaní uživatelé imperativních jazyků.

  4. Kit

    HAML

    Zkouším teď podobný formát HAML. Spíše než na výměnu dat se hodí na rychlé vytváření HTML, CSS a XML souborů. XSL zvládá také, i když je to trochu kostrbatější.

    1. theninja

      Re: HAML

      haml neni serializacni format. haml je template engine v ruby. Na vymenu dat se hodi asi tolik, jako hrabe na kaceni stromu. Nevim tedy v cem je podobny, nicmene je zajimavy.

  5. Jakub D.

    Re: YAML: Serializační formát pro ukládání dat

    Clanek jsem s usmevem proletl. Vskutku, na XML to nema:

    1) Syntax XML je podobna (X)HTML, ktere dnes umi kazdy. Neni treba se ucit neco noveho.
    2) XML je samovysvetlujici, z nazvu elementu/atributu lze pochopit spoustu veci bez nutnosti cteni dokumentace.
    3) V XML jsou chyby syntaxe snadno viditelne. Spatne ukonceny tag vam nahlasi kde jaky editor, navic jsou jasne vztahy rodic – potomek v prehledne stromove strukture.
    4) XML parseru je plno pro ruzne jazyky.
    5) S XML se poji uzasne technologie jako XSLT nebo XPath, ktere davaji informacim, obsazenym v XML, kridla :-))

    1. Kit

      Re: YAML: Serializační formát pro ukládání dat

      XML je pro výměnu dat asi nejvhodnější. Vadí mi na něm však, že je trochu víc ukecaný, než by mi bylo milé.

      Ohledně čitelnosti je to podle mne sporné. Pokud jsou data v kratších řetězcích než jsou názvy značek a atributů, čitelnost klesá. Proto vznikají alternativní jazyky. Pro zápis většího množství dat ve formátu YAML (a podobných) je potřeba používat outline editory.

      Tvůrci alternativních jazyků by si však měli uvědomit, že bez funkčního obousměrného konvertoru do/z jazyka XML má jejich jazyk jen omezené uplatnění. Každý ať si vytváří a ukládá svá data v čem chce, ale vnější rozhraní XML bych v dnešní době bral jako dogma.

    2. pr.rybar

      Re: YAML: Serializační formát pro ukládání dat

      1) To snad nemyslite vazne. Viete aky je rozdiel medzi XML a HTML?

      2) Myslite? Tak mi prosim popiste co je ulozene v tomto XML:

      <?xml version=‚1.0‘ encoding=‚UTF-8‘?>
      <pl><t><c>Jim­bo</c><ttl>12-i_huvet_på_en_gr­is</ttl><l>12-i_huvet_på_en_gr­is.mp3</l></t>­</pl>

      v YAML by to vyzeralo takto:

      ---
      playlist:
         - creator: Jimbo
           title: 12-i_huvet_på_en_gris
           location: 12-i_huvet_på_en_gris.mp3

      YAML mi umoznuje dokonca mat v jednom subore viac dokumentov, co v XML nejde. Viacero dokumentov je vyhoda, ak chcete serializovat dokumenty a tlacit ich do streamu a naopak.

      3) V YAML jsou chyby syntaxe snadno viditelne. YAML nema ukoncovacie tagy, ved naco. V YAML su vztahy rodic – potomok v prehlednej stromovej strukture.

      4) parser !== serializator; chapete?

      5) XSLT alebo XPath nemaju kridla, asi ste s nimi nikdy nerobili (minimalne nic poriadne), ked neviete ake su pomale :(

      1. fos4

        Re: YAML: Serializační formát pro ukládání dat

        Tvuj priklad je nesmyslny, nebot pouzivas uplne jine pojmenovani, XML by spravne vypadalo takto:

        <playlist>
        <node>
        <creator>Jim bo</creator>
        <title>12-i_huvet_på_en_gr is</title>
        <location>12-i_huvet_på_en_gr is.mp3</location>
        </node>
        </playlist>

        Ve firme pouzivame XML + XSLT a YAML. Kazde pro neco jineho, YAML pro tvoreni SQL dotazu a XML pro sablony. Neumim si predstavit ze bych v XML psal SQL dotazy stejne tak i ze bych mel pomoci YAMLU nejak tvorit sablony, kazde ma svoje plus a kazde svoje minus.

        K tomu XSLT jeste, pokud mas dobre napsanou sablonu a vyuzivas klicovani, neprojizdis vse pomoci „//“ tak s rychlosti nebudes mit problem.

        1. pr.rybar

          Re: YAML: Serializační formát pro ukládání dat

          To nic nemeni na tom, ze

          ---
          playlist:
             - creator: Jimbo
               title: 12-i_huvet_på_en_gris
               location: 12-i_huvet_på_en_gris.mp3

          je omnoho citatelnejsi ako

          <playlist>
          <node>
          <creator>Jim bo</creator>
          <title>12-i_huvet_på_en_gr is</title>
          <location>12-i_huvet_på_en_gr is.mp3</location>
          </node>
          </playlist>

          Co sa tyka velkosti:
          XML: 7 riadkov 176 znakov
          YAML: 5 riadkov 111 znakov

          Co sa tyka pouzitia, tak to uz padlo viac krat; YAML je seerializacny format a XML ako taky nim nie je. Naucme sa vnimat detaily.

          1. fos4

            Re: YAML: Serializační formát pro ukládání dat

            Myslim ze pocet radku a znaku je irelevatni. XML muze byt na jednom radku, YAML v zadnem pripade. Pri vetsi stromove strukture tak bude v YAMLU mnohem vice bilych znaku nez XML znacek – takze toto cele porovnani na prikladu s jednou mptrojkou je zbytecne.

            A co se tyka prehlednosti radeji si otevru velke XMLko nez velky YAML – ale asi je to vec nazoru.

            1. pr.rybar

              Re: YAML: Serializační formát pro ukládání dat

              > Myslim ze pocet radku a znaku je irelevatni.

              Nie, pokial bude XML formatovane.

              To co v tejto diskusii nevedia ludia pochopit (zasa to zopakujem) je:

              1) YAML je serializacny format a XML nie.
              2) YAML ma podporu pre viacero dokumentov, co mu dava silu pri streamovom spracovani a XML nie.
              3) YAML je human readable, zatial co XML sa teda moc dobre necita (hoci sa tiez povazuje za human readable)

              Co neviem pochopit je, co sa vlastne ludom na YAML nepaci. Tie biele znaky? Keby som mal data zapisat rukou na papier, asi sa to bude podobat YAMLu a nie XML (a taky format povazujem navyse aj za human writable).

              1. fos4

                Re: YAML: Serializační formát pro ukládání dat

                Nechapu proc tu resite velikost XML – YAML. Pokud napisu do YAMLU 100 novych radku bude vysledek stejny, stejne tak pokud bude XML na jednom radku.

                Z vasich reakci usuzuji ze mate odpor proti XML.

                1. pr.rybar

                  Re: YAML: Serializační formát pro ukládání dat

                  Bingo!

                  Cize ako sam vravite velkost je o tom istom, akurat YAML ma v par veciach navrch.
                  Ano, nepovazujem XML za serializacny format, lebo nim nie je. A neuznavam programovamie v XML.
                  Nemam odpor k XML. Mam odpor k „IT odbornikom“, ktori honoruju XML na nieco, cim vobec nie je.

                  1. fos4

                    Re: YAML: Serializační formát pro ukládání dat

                    Rikate ze YAML ma v par vecech navrch (tim asi myslite vice dokumentu v jednom souboru a human-rw) ale uz jen princip srovnavat XML a YAML je spatny (mimo jine XML ma namespace, validaci a dalsi veci ktere u YAMLu nejsou mozne). YAML je serializovany object, XML nikoli (nikdo tu netvrdil opak). Proto srovnavat a tvrdit ze jedno je lepsi nez druhe je nesmyslne.

                    1. pr.rybar

                      Re: YAML: Serializační formát pro ukládání dat

                      Suhlasim, ale clanok je o serializacii, tak vysvetlite diskutujucim, ze XML tu nema co hladat.
                      Teda z hladiska serializacie dat stale plati ze YAML ma navrch.

  6. omo

    YAML je intuitivni a zaroven pevne specifikovany format, slava mu

    cca posledni rok pouzivam format YAML kde se da, jak pro konfiguracni soubory, tak pro serializaci dat.

    Pri letmem pohledu na priklad YAMLu okamzite intuitivne vim, co se jak a proc pouziva, konstrukce tohoto formatu jsou krasne logicke a de facto samopopisne.

    Casto s nadsazkou pouzivam takovy bonmot: yaml je format, ktery jsem pouzival jiz davno pred objevenim jeho specifikace, napr. pri sepisovani seznamu na nakup ;)

    1. Kit

      Re: Já favorizuji ...

      Na JSONu mi chybí převodník do XML – alespoň jsem nic vhodného nenašel. Také čitelnost YAMLu se mi zdá o něco lepší.

      1. pravdokop

        Re: Já favorizuji ...

        To je zajímavé. Řekl bych, že prográmek na převod z XML do JSON a naopak by měl být triviální úlohou pro začínajícího studenta informatiky. Zatím jsem jej ale nepotřeboval, v nehorším si jej napíši :-).
        Na JSONu se mi hlavně líbí nativnost použití v JavaScriptu, kde využívám „odonož“ zvanou JSONP (JSON with padding).

  7. wayan

    Serializace polí a hashů do XML

    Jak YAML, tak JSON jsou určeny pro serializaci obecných „nativních“ dat, t.j. polí a hashů (záznamů, či jak tomu kdo říká). Serializační a deserializační funkce (JSON::encode, YAML::Dump, …) jsou přímo součástí příslušných knihoven – bez nich by to nemělo smysl.

    U XML nic takového (alespoň já) nemám. Abych strukturu složenou z polí a hashů serializoval do XML, potřebuju k tomu další jazyk – nějakou normu, která mi řekne jak se bude jmenovat element do kterého se serializuje pole, jak element do kterého se serializuje hash…

    Zná někdo takovou obecně přijímanou normu?

    1. pr.rybar

      Re: Serializace polí a hashů do XML

      Konecne nazor niekoho, kto rozumie teme. Presne to iste som chcel napisat. Pani, ktori sa tu zapajaju do diskusie, nemaju ani len ponatia o rozdiele medzi XML a YAML/JSON.

      Mam taky pocit ze Zdrojak spravili pre looserov, ktori sa na root.cz citili menejcenni koli neschopnosti uvazovat.
      Asi prestanem Zdrojak navstevovat. Nemam rad bulvar. :(

      1. pravdokop

        Tak se mi zdá, že si tady někdo honí triko.

        Faktický přínos Vašeho příspěvku: Nula čili nic. Jen jsme se dozvěděli, že tu nikdo nemá ponětí o tématu.

        Jak XML tak YAML tak i JSON a také třeba LUA a jiné formáty se dají využít jak pro přenos tak pro uložení strukturovaných dat. V tomto smyslu jsou plně záměnné. Vybrat nejvhodnější formát je otázkou širšího kontextu, ve kterém se data budou využívat (včetně srozumitelnosti pro lidi). O tom je zdejší debata, pokud jste to nepochopil.

        1. pr.rybar

          Re: Tak se mi zdá, že si tady někdo honí triko.

          Presne o Vas som pisal. Trafena hus zagagala. :)
          wayan to napisal presne, staci to pochopit.

          http://en.wikipedia.org/wiki/XML
          XML (Extensible Markup Language) is a set of rules for encoding documents electronically.

          http://en.wikipedia.org/wiki/YAML
          YAML (pronounced /ˈjæməl/, rhymes with camel) is a human-readable data serialization format that takes concepts from programming languages such as C, Perl, and Python, and ideas from XML and the data format of electronic mail (RFC 2822)

          Dokazete pochopit ten rozdiel?
          „set of rules for encoding documents“ versus „data serialization format“

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=3109