abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
včera 12:11 | Nová verze

Byla vydána nová verze 2019-06-20 linuxové distribuce Raspbian určené především pro jednodeskové miniaturní počítače Raspberry Pi. Přehled novinek v poznámkách k vydání. Společně s Raspbianem byl aktualizován také instalační nástroj NOOBS (New Out Of the Box Software). Nejnovější verze Raspbianu vychází z Debianu 10 s kódovým názvem Buster a přináší především podporu Raspberry Pi 4 Model B.

Ladislav Hagara | Komentářů: 0
včera 10:55 | Zajímavý článek

Vývojáři postmarketOS (GitLab) hodnotí dva roky vývoje tohoto v květnu 2017 představeného operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky [reddit, Hacker News].

Ladislav Hagara | Komentářů: 0
včera 10:11 | IT novinky

Nadace Raspberry Pi na svém blogu oficiálně představila (YouTube) jednodeskový počítač Raspberry Pi 4 Model B. K dispozici je ve třech verzích: 1 GB, 2 GB a 4 GB RAM. Cena začíná na 35 dolarech za verzi s 1 GB RAM. Nejnovější Raspberry Pi podporuje 2 monitory a rozlišení 4K.

Ladislav Hagara | Komentářů: 28
23.6. 18:22 | Komunita

Oznámení, že Ubuntu od vydání 19.10 nebude distribuovat 32bitové balíčky (ani multilib) a uživatelé mohou použít virtualizaci či kontejnery LXD, se setkalo s vlnou nevole, mj. protože i řada 64bitových aplikací využívá 32bitový instalátor. Vývojáři Wine a Steamu oznámili, že zřejmě přestanou Ubuntu od vydání 19.10 podporovat. Diskuze na Redditu: [Wine], [Steam].

Fluttershy, yay! | Komentářů: 55
22.6. 16:11 | IT novinky

Nový open source Windows Terminal představený na vývojářské konferenci Microsoft Build 2019 lze již instalovat z Microsoft Store. Podrobnosti v příspěvku na blogu Microsoftu.

Ladislav Hagara | Komentářů: 10
21.6. 13:11 | Zajímavý projekt

Článek na OMG! Ubuntu! představuje projekt Wayfire, jehož cílem je vývoj kompozitního správce oken inspirovaného Compizem běžícího nad Waylandem. Videoukázky na YouTube. Zdrojové kódy na GitHubu.

Ladislav Hagara | Komentářů: 4
21.6. 09:11 | Zajímavý projekt

Vzdělávací a veřejné instituce mohou získat open source router Turris Omnia formou bezplatné výpůjčky. Router Turris Omnia je poskytován v rámci projektu "Vybudování a ověřovací provoz systému Cyber Threat Intelligence (CTI)" podpořeného Ministerstvem vnitra ČR v rámci programu Bezpečnostního výzkumu pro potřeby státu v letech 2016 - 2021. Podrobnosti na stránkách projektu.

Ladislav Hagara | Komentářů: 1
20.6. 17:00 | Nová verze

Vývojáři Ubuntu informují, že od snapd verze 2.36 lze paralelně instalovat různé verze daného snap balíčku. Lze tak mít nainstalovaný například multimediální přehrávač VLC současně ve verzích stable, candidate, beta i edge.

Ladislav Hagara | Komentářů: 9
20.6. 16:11 | Nová verze

Byla vydána nová stabilní verze 2.6 (2.6.1566.40) webového prohlížeče Vivaldi (Wikipedie). Z novinek vývojáři zdůrazňují možnost blokování reklam s obtěžujícím chováním, vylepšenou podporu uživatelských profilů nebo zobrazení počtu nepřečtených listů na postranní liště. Nejnovější Vivaldi je postaveno na Chromiu 75.0.3770.94.

Ladislav Hagara | Komentářů: 0
20.6. 14:22 | Nová verze

Byla vydána nová verze 1.0.0 open source virtuálního modulárního syntezátoru VCV Rack. Přehled novinek v oznámení o vydání a na GitHubu. K dispozici jsou také open source pluginy. Ukázka práce s VCV Rack na YouTube.

Ladislav Hagara | Komentářů: 0
Jakou verzi jádra Linux typicky používáte na osobním počítači?
 (17%)
 (20%)
 (55%)
 (3%)
 (5%)
Celkem 353 hlasů
 Komentářů: 9, poslední 21.6. 14:42
Rozcestník

jq a xmlstarlet - utility pro zpracování strukturovaných dat

18.7.2017 10:31 | Přečteno: 1018× | Za vším hledej Linux

Možná jste i vy někdy řešili otázku, jaký formát použít pro uložení výchozí konfigurace vašeho skriptu či aplikace. U shellových skriptů, si většinou vystačíte s jednoduchým textovým souborem, ve kterém jsou přiřazené výchozí hodnoty proměnných stejně jako ve skriptu – takový soubor si pak může skript natahovat rovnou při spuštění. Pro složitější konfiguraci je však lepší pracovat se strukturovanými formáty, jako je XML, YAML, nebo JSON.

Ovšem zpracování strukturovaného formátu přímo shellovým skriptem vyžaduje napsání parsovací funkce, která nemusí být triviální záležitostí. Proto je lepší držet se unixové filozofie a pro jejich zpracování využívat specializované procesory.

Snad nejrozšířenějším formátem pro uložení strukturovaných dat v současnosti je XML, pro jehož zpracování je k dispozici řada nástrojů počínaje těžkotonážními XSLT parsery v javě a subtilní aplikací xmlstarlet konče. Právě posledně jmenovaná aplikace se mi velice osvědčila při zpracování velkých XML souborů. Nechci vás zatěžovat zdlouhavým popisem co všechno umí, proto vás odkazuji na jeho manuálovou stránku a jeden ukázkový příklad ve zdejší poradně, který uvedl již před sedmi lety Fuky.

Dalším poměrně rozšířeným strukturovaným formátem je JSON, se kterým se můžete setkat na nejrůznějších místech. Kupříkladu u QMP konzole QEMU, nebo u souborů které používá rmlint, o kterém jsem tu rovněž před časem psal (viz rmlint - řešení duplicit. I pro něj existuje podobná malá svižná aplikace – jq, která dovoluje výstup zpracovávat podobně, jako když aplikujeme sed na obsah textových souborů. Viz několik ukázkových příkladů

       

Hodnocení: 67 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

18.7.2017 13:19 Kalašnikov
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
U shellových skriptů, si většinou vystačíte s jednoduchým textovým souborem

Se souborem si vystačíme všude tam, kde nám stačí jednoduchá struktura typu seznam a jsme ochotni obětovat jeden znak jako oddělovač. Se shellem to nijak nesouvisí, nebo jo?
18.7.2017 13:55 Aleš Kapica | skóre: 49 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Když píšu o nástrojích, které lze využít ke zpracování konfigurace ve strukturovaném formátu v rámci shellových skriptů, tak asi jo.
18.7.2017 14:33 Kalašnikov
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
A co myslíte tou složitější konfigurací v shellu? Nestačilo by prostě source initfile nebo v shellu jen tečka pro inklůdnutí kousku kódu s init nastavením?
18.7.2017 15:07 Aleš Kapica | skóre: 49 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Třeba něco takového:
[WRAPPER_B]
socket = /tmp/xnbd_wrapper.B.ctl
port = 8250
volumes = ['/testovaci/disc.img' ,'/testovaci/cd.iso']
address = localhost

[WRAPPER_A]
socket = /tmp/xnbd_wrapper.A.ctl
port = 777
volumes = ['/next/disc.img' ,'/next/cd.iso']
address = 10.0.0.1
Podotýkám, že v tomto případě nejde o konfiguraci shellového skriptu, nýbrž pouze o ukázku toho co považuji za složitější konfiguraci.
18.7.2017 15:35 Kalašnikov
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
A co je špatného na takovém konfiguráku?
socket_A = '/tmp/xnbd_wrapper.B.ctl'
port_A = 8250
volumes_A = ('/testovaci/disc.img' ,'/testovaci/cd.iso')
address_A = localhost

socket_B = '/tmp/xnbd_wrapper.A.ctl'
port_B = 777
volumes_B = ('/next/disc.img' ,'/next/cd.iso')
address_B = '10.0.0.1'
, který se pak inklůdne (v shellu) a mám hned inicializované proměnné k dispozici bez jakéhokoliv potřebného parsovacího modulu.
18.7.2017 15:57 Aleš Kapica | skóre: 49 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Kupř. názvy proměnných. Každopádně se ale rozebíráním téhle marginálie dostáváme úplně jinam, než kam mířil blogpost. Ten není o tom, jak optimálně řešit konfigurační soubor, ale o nástrojích, které lze s výhodou využívat pro zpracování XML a JSON formátu v shellovém prostředí.
18.7.2017 16:15 Kalašnikov
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Názvy proměnných vám udělám stejné, jaké vám je udělá ten parser, když budete chtít. Při nějakém zpracování v cyklu se pak nechají vytvářet dynamicky prostě příkazem eval a tedy takových nastavení může být v konfiguráků od A-Z. Jedinou slabinou může být bezpečnost, aby vám do toho někdo nevložitl nějaký, ošklivý příkaz, ale to stačí před inklůdnutím projet nějakým regulárním výrazem a případně vyhodit chybu. - Co takhle přiznat, že ty první dva odstavce jste psal, aniž byste věděl vo co go. Proti druhé půlce - třetímu a čtvrtému odstavci - už v zásadě nic nemám. Programování není politika. Nazdar!
18.7.2017 16:30 Aleš Kapica | skóre: 49 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
A co takhle si uvědomit, že jste tématicky mimo mísu? V poradně tady každou chvíli někdo řeší, jak pomocí shellu zpracovat XML, JSON, nebo něco podobného. A tohle jsou právě ty nástroje, které jsou k tomu třeba.
Bedňa avatar 19.7.2017 00:06 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Nech mi Franta odpustí, ale XML je formát kde v reále sú hrôzy aka toto:
<category>
	<sub page_id="74823" parent_page_id="20331">
		<![CDATA[PowerBanky]]>
	</sub>
	<sub page_id="75681" parent_page_id="20338">
		<![CDATA[Nabíjačky]]>
	</sub>
	<sub page_id="71290" parent_page_id="20338">
		<![CDATA[Univerzálne nabíjačky]]>
	</sub>
	<sub page_id="72975" parent_page_id="">
		<![CDATA[]]>
	</sub>
	<sub page_id="74824" parent_page_id="">
		<![CDATA[]]>
	</sub>
	<sub page_id="75676" parent_page_id="20338">
		<![CDATA[Mobilné a telefónne príslušenstvo]]>
	</sub>
	<sub page_id="76162" parent_page_id="20331">
		<![CDATA[Energia na cesty]]>
	</sub>
</category>
Nechcelo sa mi hľadať tie najhošie, kde sú niektoré suby prázdne a inak posraté, nepoznám parser ktorý by to rozchodil, preto používam svoj vlastný.

Tie parseri nevedia rozchodiť rovnaký tag z/bez atributov a ešte keď sa tam opakujú rovnaké hodnoty atribútov a tagov. Samozrejme je tam niekedy jeden sub a pri ďalšej položke 15 subov.

Je pravda, že teoreticky by to šlo vyexportovať do XML aj cez tagy a hodnoty, ale proste také XML v reále od nikoho nedostaneš, takže môj parser tie suby čísluje 1,2,3 ... inak to proste do ničoho neskonvertuješ a ani tabuľkové procesory to nerozchodia, teda už z podstaty nemajú ako.

Každé väčšie XML má proste nejaký skurwený formát, entity a ja neviem čo. Jako momentálne dokážem vyťahať údaje hádam z každého XML, ale chvíľu mi trvalo než som nad tým vyhral.

Ono väčšina tých úplných parserov je ľahko hacknutelných, pretože je tam ešte podpora ťahania dát z externých súborov.
KERNEL ULTRAS video channel >>>
19.7.2017 00:31 ehm
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
XML je formát kde v reále sú hrôzy aka toto
S dovolením bych to přeformuloval: V XML je možné vytvořit dokument, který není well-formed.
19.7.2017 02:03 Martin Mareš
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Račte prominout, ale XML i JSON jsou pro ručně editovanou konfiguraci naprosto nevhodné. Editují se dost nepříjemně: v XML je spousta balastu, JSON pro změnu neumí tak základní věci jako komentáře, 64-bitová celá čísla a čárky za poslední položkou seznamu.

YAML, ačli nechutně složitý, je proti tomu hvězdou první velikosti.
19.7.2017 08:29 JS1 | skóre: 2 | blog: intuition_pump
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Napsal jsi to strucne a naprosto pravdive. A YAML je opravdu slozity, vzdycky, kdyz koukam na nejaky konfigurak v nem, tak je velmi tezke uhodnout, jaka syntaxe se vlastne pouziva (na to abych si to pamatoval ho pouzivam prilis malo).

Je neco cemu bys ty osobne dal prednost?
Lidstvo má již jen 12 let, aby odvrátilo nejhorší důsledky klimatické katastrofy. Podpořte výzvu na proplanetu.cz!
19.7.2017 11:25 little-drunk-jesus | skóre: 14
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
JSON je v podstate podmnozinou YAMLu a parser to zvladne, takze muzes psat vse v JSON syntax a pouzivat casti YAMLu, ktere zrovna potrebujes.
20.7.2017 11:44 Martin Mareš
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Je neco cemu bys ty osobne dal prednost?
Bohužel je to bída s nouzí...

Pro své projekty psané v Céčku používám konfigurační mechanismus z LibUCW, ale nikdy jsem se nedostal k napsání slušných bindingů pro jiné jazyky, mimo jiné proto, že je to celé snad až příliš ukotvené v typovém systému Céčka.

Jinak používám různé omezené podmnožiny YAMLu, ale skřípu nad tím zuby od doby, kdy jsem si zkoušel napsat vlastní YAMLový parser :)
19.7.2017 08:40 Aleš Kapica | skóre: 49 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
A já snad někde psal, že se taková konfigurace musí nutně zpracovávat ručně?

Stačí se podívat kupř. na takový pacemaker. Ten sám o sobě udržuje konfiguraci v XML, ale pro práci s ní se používají hned dva nástroje pcs a crmsh, které ji překládají z a do human friendly podoby.
19.7.2017 10:45 Kalašnikov
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Možná bysme tedy mohli rovnou přejít na binárky.
GeoRW avatar 20.7.2017 14:43 GeoRW | skóre: 13 | blog: GeoRW | Bratislava
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
no mozes kludne pouzit sqlite ;-)
"This is to be taken with a grain of salt." ACBF - Advanced Comic Book Format
19.7.2017 12:11 trekker.dk | skóre: 71
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Jo, přesně o tomhle o diskuzi vedle mluvil Heron - je úplně jedno, jak si program uchovává konfiguraci, když poskytuje nástroje, jak ji snadno editovat.
Quando omni flunkus moritati
19.7.2017 13:28 Aleš Kapica | skóre: 49 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
U svých skriptů se složitější konfigurací pracuji jednak s konfigurací v /etc/default, přes kterou lze měnit výchozí hodnoty globálních proměnných a pak (pokud je to nutné) s dílčí konfigurací která se může spravovat přímo skriptem.

Zrovna teď si píšu tool, který umožňuje řídit virtuály v situaci, kdy potřebuji mít z nějakého důvodu odstavený pacemaker. Na jejich řízení (pokud je pacemaker aktivován a služba ve stavu managed) mám svého agenta, který pracuje přímo s QEMU. Nepotřebuji tedy žádný libvirt ani omáčku kolem. Psal jsem o tom před časem v blogpostu o parametru utilization v konfiguraci pacemakeru. Ten tool tedy pracuje se zcela identickou výchozí konfigurací, ale protože nabízí i další možnosti, které původní kvm agent nemá, uvažuji o její paralelní interpretaci v JSON formátu, která by se využívala kupř. při uspání stroje, modifikaci konfigurace VM za běhu, nebo při live migraci. Před šesti lety jsem si už jeden takový tool napsal, možná by byl i použitelný, ale byl závislý i na aplikacích které nejsou běžnou součástí standardní instalace, takže bych ho stejně musel téměř celý přepsat.
20.7.2017 11:38 Martin Mareš
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Slušná textová konfigurace má tu výhodu, že na ni nepotřebuji speciální nástroj šitý na míru konkrétní aplikaci, ale mohu využívat bohatství nástrojů pro práci s textem, které mi každý unixový systém nabízí.

Typický případ, kdy se to projeví, je udržování konfigurace na více strojích, přičemž některé z nich mají různé lokální změny. Se slušnými textovými konfiguráky řešitelné vcelku snadno třeba Gitem. S méně slušnými je to řešitelné také, ale řešení konfliktů mezi různými verzemi souboru v XML není zrovná má oblíbená kratochvíle. A muset se ke konfigurákům různých programů chovat úplně jinak, to už by bylo vyslovené peklo.
20.7.2017 13:56 trekker.dk | skóre: 71
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Tak v té diskuzi šlo zrovna o Postfix a postconf - kde je konfigurace textová a postconf umožňuje vypsat jenom ta nastavení, která se odlišují od výchozích hodnot.

A je to obráceně - ne o tom, že bych potřeboval specifální nástroj šitý na míru aplikaci, ale že aplikace sama umožní manipulovat se svojí konfigurací. Pacemaker zmíněný o kousek výš je ukázkový příklad. Je mi jedno, že je konfigurace uložená v XML, pomocí crm si ji můžu vypsat v textové podobě a - pro mě za mě - prohnat skrz diff, například.
Quando omni flunkus moritati
20.7.2017 18:35 Aleš Kapica | skóre: 49 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Co takhle vyzkoušet augeas?
Josef Kufner avatar 20.7.2017 12:24 Josef Kufner | skóre: 68
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
JSON na konfiguraci není zas až tak špatný. Sice chybějící komentáře jsou opravdu velký nedostatek, ale pokud je potřeba uložit pár hodnot a neočekává se moc častá ruční editace, je to docela dobře použitelné. Obzvlášť, pokud jazyk už ve „standardní“ knihovně obsahuje nástroje na práci s ním (např. PHP).

YAML už vyžaduje knihovnu a je docela složitý. (A XML je ještě horší hrůza.) Ale i tak se YAML docela chytil a na webu (PHP) se hojně používá.

Kdyby JSON měl komentáře, toleroval čárku a nepožadoval uvozovky kolem klíčů v objektech, bylo by to docela dobře použitelné i na konfiguraci. Na druhou stranu, právě absence komentářů umožňuje JSON snadno načíst a uložit bez ztráty dat (komentářů) a bez komplikací se zachováváním takových dat (viz asi 15 typů uzlů v XML), což ho činí skvělým na čistě strojové zpracování.
Hello world ! Segmentation fault (core dumped)
20.7.2017 14:02 RM
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
což ho činí skvělým na čistě strojové zpracování

Tak jasně, pokud dojde k tomu, že si musíme někam odkládat složitější datové struktury, pak se JSON (případně jiné vhodnější) pro to může hodit. Pokud to není konfigurák, pak si data může každý uložit sám, jak uzná za vhodné. Já bych třeba v Perlu použil jednoduchý modul 'Storable', který se mi o to postará. Soubor je pak texťák, ale takový, aby byl co nejlépe a nejrychleji zpracovatelný strojově, takže je pro "čtenáře" skoro nečitelný. I takto optimalizovaný formát se mi ale zdá být při načítání/ukládání nějakého rozsáhlejšího rozvětveného slovníku pomalý.

Zkrátka je asi na pováženou, jestli takové odkládání složitějších datových struktur je vůbec dobře odvedená práce programátora ;). A pokud se jedná jen o něco plochého, pak je zase na pováženou, jestli nebude podstatně rychlejší načíst/uložit seznam (z/do souboru nebo databáze) a udělat si parser (v Perlu to pravděpodobně vyjde jen na pár řádek kódu s regulárním výrazem). -- Případně pro odložení jen pár hodnot bych použil k sestavení formát jazyka a prostě pak ten soubor includnul. Takže já zatím nevidim pro JSON a jiné v této oblasti rozumné využití.
20.7.2017 14:05 trekker.dk | skóre: 71
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Já bych třeba v Perlu použil jednoduchý modul 'Storable', který se mi o to postará. Soubor je pak texťák, ale takový, aby byl co nejlépe a nejrychleji zpracovatelný strojově, takže je pro "čtenáře" skoro nečitelný.

<rejp>Neplatí tohle náhodou i pro zdrojáky v tom perlu?</rejp> ;-)
Quando omni flunkus moritati
20.7.2017 14:27 RM
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Rozdíly tam jsou, pokud rejpnutí dobře rozumim. Použití modulu 'Storable' bude minimálně bezpečnější.
20.7.2017 14:36 RM
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
ok, ten druhý význam, kdy nejde o include, tedy beru s humorem
20.7.2017 19:50 Martin Mareš
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Tak jasně, pokud dojde k tomu, že si musíme někam odkládat složitější datové struktury, pak se JSON (případně jiné vhodnější) pro to může hodit.
Mimochodem, docela zajímavý je k těmto účelům CBOR. Sémantika podobná jako JSON, ale je binární a mnohem efektivnější jak časově, tak prostorově.
20.7.2017 21:39 JS1 | skóre: 2 | blog: intuition_pump
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
CBOR je skvely format, bohuzel ho (z moji zkusenosti) temer nikdo nezna..
Lidstvo má již jen 12 let, aby odvrátilo nejhorší důsledky klimatické katastrofy. Podpořte výzvu na proplanetu.cz!
20.7.2017 18:37 Aleš Kapica | skóre: 49 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Chybějící komentáře? JSON nabízí X možností jak ten problém řešit. Teda, pokud si sám navrhuji jak má vypadat.
20.7.2017 19:48 Martin Mareš
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Myslíte X poměrně ošklivých obezliček? ;)
20.7.2017 20:41 Aleš Kapica | skóre: 49 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Absolutně netuším kam tím míříte. Pokud potřebuji komentáře, k obsahu konfigurace, přidám si potřebný element. Pokud chcete komentovat JSON jako takový, pak nechápu proč.
20.7.2017 22:53 Kalašnikov
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Hele di už do politiky!
21.7.2017 02:30 Martin Mareš
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Třeba takto: v konfiguraci je pole IP adres, na kterých má server poslouchat. Já si k jedné z nich chci připsat komentář, že je dočasná a že ji mám časem zrušit. Jak to udělám?
21.7.2017 08:41 Aleš Kapica | skóre: 49 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Třeba takhle?:
[
  {
    "interfaces": [
      {
        "device": "eth1",
        "ipv4": "10.0.0.12",
        "timestamp": 1500558336,
        "note": "Odstavit až vyprší čas"
      },
      {
        "device": "eth2"
      }
    ]
  }
]
21.7.2017 09:30 RM
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Jé, to je super. Já tedy JSON moc neznam, ale tohle se mi líbí. To bych mohl třeba v C psát další typ komentáře takhle:
array[0]="hrušky\0";
array[1]="jablka\0"
array[2]="#nějaký komentář\0"
21.7.2017 10:39 Kate | skóre: 9
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Ano, rozhodně je to úplně to samé. Proboha…
21.7.2017 10:59 RM
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Co je na tom špatně? Já bych si ten element se znakem # parserem před použitím odfiltroval nebo bych poslední prvek pole nepoužíval a odečítal 1 při určování velikosti. Časem bych si udělal své API a třeba by se to pak i chytlo. Tak se tu nad tím hned nekřižujte :).
21.7.2017 11:10 Martin Mareš
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Psal jsem, že v konfiguraci je pole IP adres, nikoliv pole složitých objektů obsahujících IP adresy.
21.7.2017 11:21 Aleš Kapica | skóre: 49 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
A já jsem zase psal pokud si sám navrhuji jak má vypadat. A v blogu jsem hovořil o složitější konfiguraci. Na konfiguraci, která si vystačí s jednoduchým seznamem adres nebudu používat JSON, to dá rozum.
21.7.2017 19:46 Martin Mareš
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Složitá konfigurace často obsahuje spoustu jednoduchých částí. Myslím, že je hloupost pro každou z nich definovat zvláštní způsob, jak ukládat komentáře. Síla rozumných konfiguračních formátů tkví právě v tom, že autor aplikace se nemusí o komentáře a podobné věci starat a ony fungují samy od sebe.
21.7.2017 20:18 Aleš Kapica | skóre: 49 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Mám dojem, že se tady míchají jabka s hruškama. Je totiž rozdíl, chci-li komentovat konfigurační soubor jako takový, nebo jednotlivé položky konfigurace. Polemizovat o tom, jestli je či není rozumný formát konfiguračního souboru mi přijde totálně mimo mísu, pokud plní svůj účel a je "opracovatelný" pomocí textového editoru.

Mým záměrem rozhodně není se dohadovat co je či není lepší. Každý ať si použije co chce. Do téhle slepé uličky jsme se dostali díky zcela banální větě, kterou jsem nastínil jednu z možných situací, při které se můžeme setkat s JSON formátem a nabídnout informaci o nástroji, který umožňuje jeho výstup nějak rozumně opracovat – toť vše.

Ale když už zde padlo několik názorů na to co je lepší, tak já kupř. upřednostňuji na systémové úrovni výhradně konfiguraci, kterou lze upravovat pomocí běžného texťáku. Tj. žádné databáze, žádné binární formáty. A mám pro to své dobré důvody.
20.7.2017 19:49 Martin Mareš
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Pro mě je zásadním problémem JSONu ještě to, že se v něm nedá přímo zapsat 64-bitové číslo. (A obecně to, že všechna čísla jsou floaty, takže když člověk napíše příliš velké číslo, dojde obvykle k tiché ztrátě přesnosti.)
20.7.2017 20:26 ehm
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
AFAIK JSON tohle vůbec neřeší a specifikace se zaobírá jen textovou reprezentací čísla. Do jakého typu ti to načte parser už je záležitost implementace.
20.7.2017 21:37 JS1 | skóre: 2 | blog: intuition_pump
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
To je dobra poznamka - a poprve jsem si ji vsiml uz v tvem puvodnim prispevku, nikde driv jsem o tomto problemu neslysel. IMHO textovy format, ktery umi netypova cisla by mel zvladat libovolnou presnost (jinak receno, dekodovani a opetovne zakodovani by nemelo vest ke zmene informace).
Lidstvo má již jen 12 let, aby odvrátilo nejhorší důsledky klimatické katastrofy. Podpořte výzvu na proplanetu.cz!
21.7.2017 02:33 Martin Mareš
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Problém je, že specifikace JSONu (ono jich je různých "specifikací" víc, nejblíže tomuto pojmu je nejspíš RFC 7159) říká, že implementace má právo stanovit libovolná omezení na rozsah a přesnost čísel. Implementace si to vesměs vykládají tak, že čísla interpretují jako 64-bitové binární floaty dle IEEE 754.
21.7.2017 04:29 ehm
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Aha. Nevím, jak jsou na tom implementace třeba v C, ale referenční implementace pro Javu to má vyřešené dobře. Desetinná čísla to vždy ukládá jako double (což je v Javě taky 64-bit IEEE 754), celá čísla nejprve jako long, a pokud se to vleze do integeru, tak jako int. Viz #stringToValue.

Úplně správně bych si to tedy představoval tak, že pokud se to ani do jednoho z těchto typů nevleze, uloží se to jako BigInteger, resp. BigDecimal. :-)
21.7.2017 11:12 Martin Mareš
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
to má vyřešené dobře. Desetinná čísla to vždy ukládá jako double
... což mimochodem také může vést ke ztrátě přesnosti.
Úplně správně bych si to tedy představoval tak, že pokud se to ani do jednoho z těchto typů nevleze, uloží se to jako BigInteger, resp. BigDecimal. :-)
No to já také, ale takovou implementaci jsem nejspíš ještě nepotkal.

Problém tkví právě v tom, že chování čísel je specifické pro implementaci, takže se na něj prakticky nemůžete spolehnout.
Bedňa avatar 20.7.2017 20:12 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Komentáre idú v pohode všade. Proste si to dopíšeš do toho skriptu odkiaľ to odosielaš, načo ich posielať?
KERNEL ULTRAS video channel >>>
20.7.2017 20:27 ehm
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Wut? Jak to souvisí se zápisem konfigurace?
Bedňa avatar 20.7.2017 20:33 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Jéj, tak som si spojil s diskusiou na inom servery,fail.
KERNEL ULTRAS video channel >>>
20.7.2017 21:40 ehm
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
OK.
Heron avatar 19.7.2017 21:18 Heron | skóre: 51 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: jq a xmlstarlet - utility pro zpracování strukturovaných dat
Možná jste i vy někdy řešili otázku, jaký formát použít pro uložení výchozí konfigurace vašeho skriptu či aplikace.
Ani ne. Vzhledem k tomu, že všechny moje bastly používají db, tak jediný konfigurák je connstring. Někdy ani to ne, pokud to běží lokálně, tak se to připojí na unix socket s auth pomocí ident. Veškeré další nastavení stejně jako data jsou potom v db.

Pokud už se vyloženě něco musí nastavovat, tak je konf soubor v syntaxe daného jazyka (python, bash), který se prostě includuje.

Založit nové vláknoNahoru

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.