abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 18:00 | IT novinky

    DuckDuckGo AI Chat umožňuje "pokecat si" s GPT-3.5 Turbo od OpenAI nebo Claude 1.2 Instant od Anthropic. Bez vytváření účtu. Všechny chaty jsou soukromé. DuckDuckGo je neukládá ani nepoužívá k trénování modelů umělé inteligence.

    Ladislav Hagara | Komentářů: 0
    dnes 14:22 | IT novinky

    VASA-1, výzkumný projekt Microsoftu. Na vstupu stačí jediná fotka a zvukový záznam. Na výstupu je dokonalá mluvící nebo zpívající hlava. Prý si technologii nechá jenom pro sebe. Žádné demo, API nebo placená služba. Zatím.

    Ladislav Hagara | Komentářů: 2
    dnes 04:44 | Nová verze

    Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 140 (pdf) a HackSpace 77 (pdf).

    Ladislav Hagara | Komentářů: 0
    dnes 01:00 | Nová verze

    ESPHome, tj. open source systém umožňující nastavovat zařízení s čipy ESP (i dalšími) pomocí konfiguračních souborů a připojit je do domácí automatizace, například do Home Assistantu, byl vydán ve verzi 2024.4.0.

    Ladislav Hagara | Komentářů: 0
    včera 22:11 | IT novinky Ladislav Hagara | Komentářů: 0
    včera 20:55 | Nová verze

    Neziskové průmyslové konsorcium Khronos Group vydalo verzi 1.1 specifikace OpenXR (Wikipedie), tj. standardu specifikujícího přístup k platformám a zařízením pro XR, tj. platformám a zařízením pro AR (rozšířenou realitu) a VR (virtuální realitu). Do základu se z rozšíření dostalo XR_EXT_local_floor. Společnost Collabora implementuje novou verzi specifikace do platformy Monado, tj. open source implementace OpenXR.

    Ladislav Hagara | Komentářů: 2
    včera 17:22 | Nová verze

    Byla vydána nová verze 0.38.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 4.4 nebo novější a také libplacebo 6.338.2 nebo novější.

    Ladislav Hagara | Komentářů: 13
    včera 17:11 | Nová verze

    ClamAV (Wikipedie), tj. multiplatformní antivirový engine s otevřeným zdrojovým kódem pro detekci trojských koní, virů, malwaru a dalších škodlivých hrozeb, byl vydán ve verzích 1.3.1, 1.2.3 a 1.0.6. Ve verzi 1.3.1 je mimo jiné řešena bezpečnostní chyba CVE-2024-20380.

    Ladislav Hagara | Komentářů: 2
    včera 12:11 | IT novinky

    Digitální a informační agentura (DIA) oznámila (PDF, X a Facebook), že mobilní aplikace Portál občana je ode dneška oficiálně venku.

    Ladislav Hagara | Komentářů: 10
    včera 05:11 | Komunita

    #HACKUJBRNO 2024, byly zveřejněny výsledky a výstupy hackathonu města Brna nad otevřenými městskými daty, který se konal 13. a 14. dubna 2024.

    Ladislav Hagara | Komentářů: 2
    KDE Plasma 6
     (68%)
     (10%)
     (2%)
     (20%)
    Celkem 564 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Ideální datový formát

    21.7.2017 22:39 | Přečteno: 3039× | Softwarové inženýrství | Výběrový blog

    Převážně diskusní/dotazovací zápisek na téma návrhu datových formátů.

    Při návrhu datového formátu můžeme optimalizovat podle různých kritérií a priorit – a ty jdou často proti sobě. Možná proto existuje tolik formátů…

    Předesílám, že teď mluvím primárně o formátech pro strojovou komunikaci tzn. formáty, pomocí kterých budou programy ukládat strukturovaná data do souboru nebo kterými budou programy komunikovat po síti (formát zpráv nějakého protokolu). Nechci zde tedy zabředávat do problematiky formátů pro lidi (tzn. dokumenty, konfigurace, zdrojové kódy…) a hádat se, zda je lepší XML, YAML, INI, JSON atd. tato diskuse probíhá minimálně na dvou místech vedle.

    Jaká jsou tedy hlediska, na která se můžeme zaměřit? Napadá mne:

    Jaká další kritéria vás napadají?

    Už z těch uvedených výše je zřejmé, že ideální formát neexistuje – nezle se zavděčit všem a některá kritéria jdou přímo proti sobě (např. implementační náročnost vs. funkcionalita nebo datová vs. výpočetní náročnost). Jak velké rozpětí tedy lze ještě pokrýt jedním formátem a kdy už je lepší na to rezignovat a mít radši formáty dva… tři, deset, padesát…? Výhody jednoho formátu jsou snad zřejmé: sdílení kódu a znalostí, vyspělejší nástroje (stačí je napsat jednou), lépe otestovaný software (používá ho víc lidí)…

    Zajímá mě primárně dnešní pohled a budoucnost – tzn. z hlediska dnešního hardwaru, dnešní situace na trhu, dnešních jazyků, platforem… Řada současných formátů je zatížena minulostí a optimalizují pro něco, co už dneska třeba není aktuální. Nebo obsahují návrhové chyby (což je podle mého mj. aplikační/doménová specifičnost).

    -- 
    DDP
           

    Hodnocení: 50 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

    21.7.2017 23:22 JS1 | skóre: 2 | blog: intuition_pump
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Takova diskuse se tu uz nedavno vedla a ja tam napsal vsechno, co bych k tomu mohl rict.

    Ale jinak k tem formatum - zajimave jsou take "succinct data structures", viz treba. Urcite jedno kriterium by mohlo byt, co to znamena nacist ten format do pameti, aby se s nim dalo rozumne pracovat. Je potreba vytvaret nejakou paralelni strukturu (pointeru a objektu), nebo to lze delat primo?
    Lidstvo čelí v tomto století hrozbě civilizačního kolapsu. Podpořte hnutí klimatickakoalice.cz!
    xkucf03 avatar 21.7.2017 23:45 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Takova diskuse se tu uz nedavno vedla

    No vidíš, na tu už jsem pomalu zapomněl :-) Ale to byl spíš odstrašující příklad, jak to nedělat.

    a ja tam napsal vsechno, co bych k tomu mohl rict.

    Ten CBOR a MsgPack?

    Na stránkách CBORu mě děsí odstavec:

    One of the major practical wins of JSON is that successful data interchange is possible without casting a schema in concrete. This works much better in a world where both ends of a communication relationship may be evolving at high speed.

    To mi přijde jako zásadní nepochopení toho, jak funguje nebo by měla fungovat volná vazba.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    22.7.2017 06:09 JS1 | skóre: 2 | blog: intuition_pump
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Ale to byl spíš odstrašující příklad, jak to nedělat.
    Odstrasujici priklad je XML a JSON. :-)
    To mi přijde jako zásadní nepochopení toho, jak funguje nebo by měla fungovat volná vazba.
    Nechapu, co se tim snazis rict. Co ti konkretne na CBORu vadi?
    Lidstvo čelí v tomto století hrozbě civilizačního kolapsu. Podpořte hnutí klimatickakoalice.cz!
    xkucf03 avatar 22.7.2017 08:29 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Odstrasujici priklad je XML a JSON.

    Takže bys místo nich radši používal nový formát uSX 1.0? A že jsi to tehdy Dumblobovi nenapsal, měl by radost.

    Nechapu, co se tim snazis rict. Co ti konkretne na CBORu vadi?

    Na CBORu jako takovém asi nic – vypadá to na celkem jednoduchý formát, který cílí na implementační nenáročnost a datovou úspornost – což má jistě svoje využití a není nic špatného na tom zvolit si tyto priority (a obětovat jiné).

    Co mě zarazilo, byl ale ten odstavec:

    No Schema needed: One of the major practical wins of JSON is that successful data interchange is possible without casting a schema in concrete. This works much better in a world where both ends of a communication relationship may be evolving at high speed.

    Pokud si někdo myslí, že odstraněním schématu si nějak pomůže, tak se strašlivě mýlí.1 A to zvlášť v prostředí „where both ends of a communication relationship may be evolving at high speed“. To pak není volná vazba, ale jen náhodná shoda, když na sebe ty dvě strany pasují. A funkčního celku lze dosáhnout jen s vysokými náklady na (ruční) testování a úpravy/kontroly kódu. Navíc pokud tam má komunikovat M:N stran a ty je ani předem neznáš2, tak to ani pořádně otestovat nemůžeš.

    Je to hloupý přístup, který stojí spoustu lidské práce – práce, kterou za nás mohly dělat stroje (generátory datového modelu, parserů, generátorů, validátory, konvertory…).

    Dobrý meta-formát by podle mého měl podporovat schéma, verzování a rozšiřitelnost – a pak není problém, aby se formát nad ním postavený dynamicky rozvíjel, klidně i „at high speed“ a zároveň implementace budou spolehlivě fungovat – nebude se to chovat náhodně, ale předvídatelným a způsobem (ať už jde o pád/ohlášení chyby či třeba řízené ignorování neznámého atributu/struktury3 – typicky u nové verze schématu). Jmenné prostory pak řeší mj.4 to, aby se spolu omylem nespojily dvě strany, které implementují každá něco jiného, ale náhodou se tam nějaké atributy jmenují stejně.

    Znovu říkám, to nutně neznamená, že ten CBOR musí být špatný formát a neměl by se používat – jen bych si ho před použitím důkladně prostudoval, protože tenhle odstavec nepůsobí zrovna kompetentně.

    [1] dokonce i webaři na to už přišli – viz OpenAPI (Swagger), kde – zdá se – konečně po letech dohánějí XML, XSD, WSDL a píší strojově čitelnou specifikaci rozhraní, místo aby na web jen vyblili nějaké příklady a útržky komunikace (jak ale bývá mnohde zvykem dodnes) a čekali, že podle nich někdo dobře naimplementuje klienta nebo server; BTW: s tím OpenAPI se pracuje docela dobře – že to ale trvalo :-)
    [2] kdokoli si může napsat implementaci, aniž by se tě ptal, a připojit se
    [3] některé (meta)formáty k atributům umožňují připojit příznak, zda lze daný (pro druhou stranu neznámý) atribut ignorovat nebo ne
    [4] dále pak třeba to, že když někde najdeš nějaký kus dat, tak z toho poznáš, co je to za formát a máš šanci se dopátrat jeho autora/specifikace

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    Josef Kufner avatar 22.7.2017 09:37 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Absence schema je velmi užitečná v ranném stádiu vývoje. Umožňuje to rychle spíchnout prototyp (bez neustálého přepisován schema) a ověřit si, že to vůbec nějak funguje a jaká data jsou vlastně potřeba. JSON Schema je pak dobré napsat spolu s dokumentací a testy (nechat testy ať validují podle schema), než se to pustí do světa.
    Hello world ! Segmentation fault (core dumped)
    22.7.2017 10:18 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Vidím to podobně, proto mi debata pod mým předposledním blogpostem přijde zcela nesmyslná.
    xkucf03 avatar 23.7.2017 17:39 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Ideální datový formát

    Viz #41.

    Pro dynamický vývoj a ladění API za chodu je schéma ještě důležitější než při implementaci pevně dané (neměnné) specifikace/standardu.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    22.7.2017 11:46 Martin Mareš
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Přijde mi, že schémata jsou často přeceňována. Ohlídají pouze syntaxi zpráv, což je často ta jednodušší část problému, ve které se dělá málo chyb. Oproti tomu sémantika zpráv bývá složitější, formálně popsatelná mnohem hůře, a proto logicky častěji špatně. Takže spíš než schémata mi přijde důležité napsat ke každému protokolu kompletní specifikaci včetně sémantiky (typicky lidsky čitelnou, protože strojově čitelný použitelný popis sémantiky zatím neumíme) a sadu testů.

    Verzování protokolu může fungovat, pokud má protokol lineární historii. Pokud je to protokol, do nějž si různé implementace mohou přidávat svá rozšíření, už s číslováním verzí neuspějete. Spíš se specifikací toho, z jakých subprotokolů se protokol skládá. Což se pěkně kombinuje s definicí namespaců. Včera o implementaci něčeho takového nad CBORem dopsal David Čepelík svou bakalářskou práci :) Brzy bude zveřejněna včetně docela hezké knihovny.
    Josef Kufner avatar 22.7.2017 21:29 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Na druhou stranu schema pomůže s takovýma těma otravnýma malýma chybama na kterých se propálí hromada času. Dále to pak je možné schema použít jako základ pro dokumentaci, takže ve výsledku bude dokumentace čitelná strojem i člověkem, něco jako ze zdrojáků generovaná dokumentace (jen trochu naopak).
    Hello world ! Segmentation fault (core dumped)
    23.7.2017 06:13 JS1 | skóre: 2 | blog: intuition_pump
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Na tom neco je. Trochu mi to pripomnelo muj soucasny pocit, ze co by se melo ve skutecnosti v programovani testovat spis nez kod (kod by se mel IMHO hlavne assertovat a automaticky odvozovat/dokazovat) jsou (vstupni) data a skryte predpoklady, ktere na ne kladl puvodni autor kodu. Ty totiz, zda se mi, casto abdukujeme na zaklade nejakych typickych prikladu. (Trochu me zajimala automaticka synteza kodu a rychle jsem zjistil, ze je to v podstate uloha na strojove uceni.)

    Nekdo z Haskell komunity (ze Standard Chartered) tohle zminoval, ze casto pouzivaji QuickCheck na testovani ruznych API, s kterymi interaguji, a casto objevi mnoho skrytych predpokladu, ktere autori API "zapomneli" zdokumentovat.
    Lidstvo čelí v tomto století hrozbě civilizačního kolapsu. Podpořte hnutí klimatickakoalice.cz!
    23.7.2017 10:17 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Jestli tě chápu správně, tohle přesně dělá American Fuzzy Lop, ne?
    24.7.2017 10:03 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Na tom neco je. Trochu mi to pripomnelo muj soucasny pocit, ze co by se melo ve skutecnosti v programovani testovat spis nez kod (kod by se mel IMHO hlavne assertovat a automaticky odvozovat/dokazovat) jsou (vstupni) data a skryte predpoklady, ktere na ne kladl puvodni autor kodu.
    Ano, takhle se poznají dobré testy (a dobrá dokumentace, ale to je asi samozřejmé). A také je to jeden z hlavních znaků dobrých vývojářů.
    23.7.2017 09:26 JS1 | skóre: 2 | blog: intuition_pump
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Jinak tu bakalarku bych si rad prohledl.. Nemas nejaky blog nebo neco podobneho, kde by ses dal sledovat? Moc lidi nesleduji ale zrovna tebe bych i jo.
    Lidstvo čelí v tomto století hrozbě civilizačního kolapsu. Podpořte hnutí klimatickakoalice.cz!
    Bystroushaak avatar 23.7.2017 18:16 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Má ho v profilu: http://mj.ucw.cz/
    xkucf03 avatar 23.7.2017 17:36 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Schéma, specifikace
    Přijde mi, že schémata jsou často přeceňována. Ohlídají pouze syntaxi zpráv, což je často ta jednodušší část problému, ve které se dělá málo chyb.

    Mám odlišnou zkušenost. Např. jsem pozoroval lidi, kteří seděli metr od sebe, jejich aplikace spolu měly komunikovat a oni se v tom patlali, dělalo jim problém si domluvit API. Resp. napoprvé si ho nějak domluvili, ale pak bylo největší neštěstí v tom dělat změny a synchronizovat se na obou stranách. Jak se nějaký atribut jmenuje, jaký má datový typ, na kterém místě ve struktuře se nachází, jestli je povinný…˙to byly každodenní problémy. O nějakém verzování API ani nemluvě.

    Takhle to jde dělat leda, když máš pevně daný standard/specifikaci a už se to měnit nebude (nebo až za pár let). V takovém případě si to můžeš opsat z textové specifikace a uzavřít to. Ovšem i tam by ti existence strojově čitelného schématu práci ušetřila.

    Ale pokud se rozhraní ladí za chodu a během vývoje se mění/rozšiřuje API, tak je strojově čitelné schéma k nezaplacení.

    Oproti tomu sémantika zpráv bývá složitější, formálně popsatelná mnohem hůře, a proto logicky častěji špatně.

    Přijde mi, jako kdybychom se bavili o nakupování a „odpůrce schématu“ pořád zdůrazňoval, že pro úspěšný nákup je důležité dobře vybrat zboží na regálu. Ano, to sice důležité je, ale předně musíš vlézt do správného obchodu a najít ten správný regál. Schéma (strojově čitelná specifikace) je něco jako teleport, který tě dopraví do správného obchodu ke správnému regálu – a ty si tam už jen uděláš, co potřebuješ. Dobré schéma kromě toho teleportování vedle tebe ještě postaví počítač nebo knihovnu, ve které najdeš vše potřebné k výběru zboží.

    Jistě, mohl bys postupně obcházet všechny obchody a v nich regály jeden po druhém. Nebo by ses mohl zeptat někoho na ulici. Nebo bys mohl mít ručně nakreslenou mapu… Ale proč bys to proboha dělal, když se můžeš teleportovat? Proč bys měl trávit čas něčím, co za tebe dokáže vyřešit stroj, a ještě riskovat, že v tom uděláš chybu? Proč muset vždy hledat popis atributu ručně v textové specifikaci, když to může být třeba komentář ve třídě vygenerované ze schématu?

    Absence schématu je k ničemu a rozhodně nepodporuje volnou vazbu. (že se něco v prvním kroku podaří načíst a nespadne to hned, ale až o krok později – to opravdu nelze považovat za volnou vazbu)

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    Josef Kufner avatar 23.7.2017 20:21 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Schéma, specifikace
    Záleží na tom, jak je ten protokol postaven a kolik na tom dělá lidí. Pokud jeden člověk dává dohromady prototyp, tak mu schema spíš překáží. Když mu ale prototyp začne fungovat, měl by schema doplnit spolu s dokumentací, aby v tom jeho uživatelé (ostatní programátoři) neměli guláš.

    Pokud se dva vývojáři nemohou dohodnout, tak by se jednomu z nich měl dát protokol na starost celý a druhý by mu jen říkal, co mu ještě kde chybí, ale bylo by na tom prvním, jak přesně by to implementoval.
    Hello world ! Segmentation fault (core dumped)
    24.7.2017 10:08 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: Schéma, specifikace
    Pokud se dva vývojáři nemohou dohodnout, tak by se jednomu z nich měl dát protokol na starost celý a druhý by mu jen říkal, co mu ještě kde chybí, ale bylo by na tom prvním, jak přesně by to implementoval.
    Raději někomu úplně jinému. Jinak to pravděpodobně dopadne tak, že vznikne "API" kde se obě strany spoléhají na naprosto nezdokumentované chování té druhé strany. Pokud se někdo pokusí vytvořit alternativní implementaci jedné z nich, rychle zjistí že je to prakticky nemožné.

    Samozřejmě, je možné že v tom uvedeném příkladě (dva vývojáři se nedokáží zasynchronizovat) je vina zcela na straně jednoho z nich a ten druhý vy to zvládl pěkně.
    xkucf03 avatar 24.7.2017 22:49 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Schéma, specifikace

    Kdyby to celé vyvíjel jeden člověk, tak si spíš zapamatuje, co kam přidal a že to má udělat odpovídající změnu i na druhé straně (i když i ten jeden člověk může udělat chybu a neuhlídat všechno). Ale pokud má spolupracovat víc lidí, tak je schéma dobrý způsob, jak se předat tu informaci.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    23.7.2017 06:18 JS1 | skóre: 2 | blog: intuition_pump
    Rozbalit Rozbalit vše Re: Ideální datový formát
    A že jsi to tehdy Dumblobovi nenapsal, měl by radost.
    Napsali mu to jini, tak proc se opakovat? :-)
    Znovu říkám, to nutně neznamená, že ten CBOR musí být špatný formát a neměl by se používat – jen bych si ho před použitím důkladně prostudoval, protože tenhle odstavec nepůsobí zrovna kompetentně.
    Tak si ho prostuduj. :-) Ja myslim, ze hlavni myslenka je, ze CBOR muzes parsovat i bez znalosti schematu, nebo jenom s castecnou znalosti. Muzes treba ignorovat tagy.
    Lidstvo čelí v tomto století hrozbě civilizačního kolapsu. Podpořte hnutí klimatickakoalice.cz!
    xkucf03 avatar 23.7.2017 16:32 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Napsali mu to jini, tak proc se opakovat?

    Nevšiml jsem si. Naopak mu většina lidí psala, jakou to vymyslel blbost a jaké má ten formát vady.

    Ja myslim, ze hlavni myslenka je, ze CBOR muzes parsovat i bez znalosti schematu, nebo jenom s castecnou znalosti. Muzes treba ignorovat tagy.

    Jestli je to hlavní myšlenka, tak mi to přijde trochu málo.

    Ono ty formáty bychom mohli rozdělit na tři skupiny, ne dvě:

    • nepodporují schéma (např. CBOR)
    • podporují schéma, ale i bez něj lze data přečíst a sestavit z nich nějaký strom (např. XML nebo DER, BER, CER kódování ASN.1)
    • podporují schéma a bez jeho znalosti ani nic nepřečtu, protože např. nevím, jakých datových typů jednotlivé atributy jsou a tudíž nevím, kolik bajtů ještě patří tomuto atributu a kde už začíná další (např. PER kódování ASN.1)

    Podpora schématu tedy sama o sobě neznamená žádnou nevýhodu – i bez jeho znalosti si většinou můžeš dekódovat zprávu.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    23.7.2017 20:36 dumblob | skóre: 10 | blog: dumblog
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Takže bys místo nich radši používal nový formát uSX 1.0? A že jsi to tehdy Dumblobovi nenapsal, měl by radost.
    Nu, to by byla hodně povrchní radost (pořádnou radost bych měl, kdyby mnozí diskutující lépe četli a přemýšleli a hlavně i něco dělali, aby nezůstalo pouze u planých slov).

    Na tu diskuzi se již přes tři měsíce těším - naneštěstí jsem od chvíle zveřejnění toho blogu prakticky bez internetu (a když na internetu, tak cca 16 Kbit/s, takže většina spojení vytimeoutuje před stažením nějaké smysluplné části dat). Ale žádný strach, mám to v TODO a do konce roku nejpozději se k té diskuzi dostanu.
    Dobrý meta-formát by podle mého měl podporovat schéma, verzování a rozšiřitelnost ...
    No vida, tak to si konečně budeme rozumět. Přesně tohle podporuje do posledního puntíku uSX 1.0 již od prvního veřejného draftu. Chce se mi znovu postesknout, že diskutující nečtou a málo přemýšlí a nic moc nedělají (např. zkusit diskutovaný formát implementovat v rozličných prostředích a tím nejprve alespoň částečně ověřit různé šílené teorie jak je něco nepoužitelné apod. - on svět nebývá tak černobílý :-)).
    23.7.2017 23:15 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Ideální datový formát
    pořádnou radost bych měl, kdyby mnozí diskutující lépe četli a přemýšleli a hlavně i něco dělali, aby nezůstalo pouze u planých slov
    Tady jsi na abclinuxu. Šance, že z téhle diskuse pojde nějaký kód nebo praktický výsledek, je asi tak 0.1%...
    24.7.2017 10:42 snajpa | skóre: 20 | blog: snajpuv_blocek | Brno
    Rozbalit Rozbalit vše Re: Ideální datový formát
    hlavně i něco dělali, aby nezůstalo pouze u planých slov

    O co min ochotni tu lide jsou neco udelat, o to vic budou ty svoje "nazory" branit. A tak budou vymyslet racionalizacni konstrukce hajici jejich nazor a proc jsou vsichni ostatni strasne tupi idioti. Zajimavy fenomen, pro vetsinu je proste jednodussi vylozit mnohem vic mentalni energie na kecani okolo, vymlouvani se, overengineering a obecne vsechny mozne cinnosti, ktere se daji delat do nekonecna bez toho, aby bylo sahnuto na realnou vec.

    Pritom staci jit a udelat, coz je prave to, co urcuje smer a krok. Dalsi se budto chytnou, nebo jdou svym smerem, ale wastovat cas s chytrolinama, od kterych pak clovek vidi sotva jeden commit... skoda si ubirat motivaci. V diskuzi mne vetsinou zajimaji nazory dalsich 'stakeholders', tj. lidi, co na te diskuzi maji realny zajem, jsou v projektu nejak zapojeni a aktivni. Komentare nahodnych kolemjdoucich a obecne tluchubu discarduju vetsinou do kanalu.

    --- vpsFree.cz --- Virtuální servery svobodně
    xkucf03 avatar 24.7.2017 23:02 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Ideální datový formát

    Kódu už byly napsány miliardy řádků. A spousta z toho je odpad, šum nebo duplicita…

    Analýza a návrh jsou nedílnou součástí vývoje softwaru a pokud se podcení, tak z toho nic dobrého nevzejde. Proto nemám úplně rád, když někdo hned sedne a začne kódovat. Opačný extrém: navrhnout něco jen tak od stolu taky není ideální a všechno se předvídat nedá – proto se dělá iterativní vývoj a zadání/návrh se dolaďuje průběžně. Nicméně nějakou hrubou představu a požadavky by měl mít člověk předem. Jinak má smysl si zkoušet leda nějaké dílčí prototypy, ale těžko můžeš začít vyvíjet.

    Co se týče Ábíčka a asi i obecně diskusí – čím odbornější téma a čím větší úsilí je potřeba vynaložit, tím menší zpětnou vazbu dostaneš. Když sem hodím odkaz na nějaký zdroják, tak si ho stáhne jen zlomek lidí a jen zlomek z toho zlomku k tomu napíše něco přínosného (většinou nikdo – v poradnách to bývá lepší, ale tam bývá zdroják jen na pár řádků a je hned v příspěvku). Oproti tomu v nějaké lehčí diskusi (kde diskutující nemusí stahovat a studovat zdrojový kód) je šance, že se tam objeví aspoň nějaké nápady nebo požadavky, které má smysl vzít do úvahy.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    25.7.2017 18:25 snajpa | skóre: 20 | blog: snajpuv_blocek | Brno
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Kódu už byly napsány miliardy řádků. A spousta z toho je odpad, šum nebo duplicita…
    Na to mam protiargument prikladem, ktery mne v posledni dobe hodne netesi - kde je Slack, vs. kde je XMPP... Slacku sice vzdoruju, ale pres XMPP s nikym uz taky moc slov nevymenim ("downgradoval" jsem na IRC).
    čím odbornější téma a čím větší úsilí je potřeba vynaložit, tím menší zpětnou vazbu dostaneš
    To sice jo, ale tu jsme na Abicku, cekal bych z prvni ze tu to odborny publikum bude. Otazka je, kolik z nich jeste zustalo v takovem tom "furt cumim do monitoru", vs. kolik z nas uz to nekde dela za penice a potom chce mit pokoj a pri cteni Abicka si o tom maximalne potrolit.
    --- vpsFree.cz --- Virtuální servery svobodně
    25.7.2017 18:26 snajpa | skóre: 20 | blog: snajpuv_blocek | Brno
    Rozbalit Rozbalit vše Re: Ideální datový formát
    *penize
    --- vpsFree.cz --- Virtuální servery svobodně
    Bystroushaak avatar 25.7.2017 19:26 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Slacku sice vzdoruju, ale pres XMPP s nikym uz taky moc slov nevymenim ("downgradoval" jsem na IRC).
    +1, to samé.
    xkucf03 avatar 25.7.2017 21:26 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Na to mam protiargument prikladem, ktery mne v posledni dobe hodne netesi - kde je Slack, vs. kde je XMPP... Slacku sice vzdoruju, ale pres XMPP s nikym uz taky moc slov nevymenim ("downgradoval" jsem na IRC).

    Asi úplně nechápu, jak tohle souvisí. Chtěl jsem tím říct, že kódu je spousta, není vzácný, sám o sobě nemá valnou hodnotu. Osobně vnímám velký objem kódu spíš jako potenciální průšvih než něco, na co bych měl být hrdý, protože vím, kolik stojí jeho údržba.

    Co se týče toho IM, tak já jsem to omezil obecně, protože mne to rozptylovalo od práce – nezměnil jsem technologii, primární/jediná volba je pro mne pořád XMPP a SIP, jen tam nejsem pořád, spíš jen na vyžádání.

    To sice jo, ale tu jsme na Abicku, cekal bych z prvni ze tu to odborny publikum bude.

    Tak je to pořád o několik řádů lepší než jinde na českém webu, to je pravda. Nicméně už jsem sem víckrát dával odkaz na nějaký zdroják a lidi to moc nečtou nebo si aspoň nenajdou čas na to, něco konstruktivního napsat, to je spíš výjimka.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    21.7.2017 23:24 User682 | skóre: 38 | blog: aqarium | Praha
    Rozbalit Rozbalit vše Re: Ideální datový formát
    zdravim,

    k tem hlediskum si pridejte paraelizaci pri cteni a zapisu.

    Dalsi hledisko je odolnost vuci chybe a zotaveni se z ni.

    Dale verzovani. Jak jej resit ?

    K nefunkcnim pozadavkum bych pridal mit moznost videt data daneho formatu jinak nez se prenasi/ukladaji. To znamena, ze format se muze prenaset jako usporna binarka, ale muzete jej videt jako dobre citelne XML ci neco strukturovaneho. Jedna struktura, vice zobrazeni.

    Pokud hledate inspiraci=vzor ve formatech, tak si projdete OpenXML vcetne zapisu ruznych dalsich pouzitych formatu v tomto formatu, predtim nejake binarni formaty pro dokumenty(treba Word,Excel,Powerpoint 97-2003; Lotus123,...). Zajimave je RTF. Je to velmi zajimavy vyvoj.

    gf
    xkucf03 avatar 21.7.2017 23:38 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Ideální datový formát
    k tem hlediskum si pridejte paraelizaci pri cteni a zapisu.

    Dobrý tip. Trochu to souvisí s tou indexovaností – jednotlivá vlákna můžou skočit doprostřed zprávy a číst odtamtud a dohromady skládat celek.

    Dale verzovani. Jak jej resit ?

    Ve smyslu verzí schématu/slovníku? Nad tímhle jsem uvažoval, je to důležitá vlastnost… a taky jedna z dost obtížných na návrh a implementaci.

    K nefunkcnim pozadavkum bych pridal mit moznost videt data daneho formatu jinak nez se prenasi/ukladaji. To znamena, ze format se muze prenaset jako usporna binarka, ale muzete jej videt jako dobre citelne XML ci neco strukturovaneho. Jedna struktura, vice zobrazeni.

    Souhlas. On by měl existovat nějaký logický model a k němu serializace (kterých může být víc).

    Word,Excel,Powerpoint 97-2003; Lotus123,...

    Upřímně, do starých proprietárních formátů se pouštět nechci. Naopak jsem trochu studoval ASN.1, Diameter, ISO 8583 – to je inspirativní. Třeba ty bitmapy v ISO 8583 jsou zajímavé (i když jinak je ten formát celkem zvěrstvo).

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    22.7.2017 10:54 User682 | skóre: 38 | blog: aqarium | Praha
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Doplnte si jeste opravneni na casti dokumentu. Moznost podepsat vice podpisy cas dokumentu. Znovuobnoveni podpisu. Zapis na medium s omezenym poctem zapisu na blok......

    Dalo by se asi jmenovat mraky veci.

    Asi by to chtelo nejdrive popsat nejake pozadavky na dany format. Pripady pouziti. Metody ? Jinak tu muzeme chrlit jedno hledisko za druhym a misto diskuze o architekture to bude akadamicka debata, proc je A lepsi nez B.

    gf
    22.7.2017 06:55 .
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Jo jo, takový to letní vymýšlení píčovin.
    xkucf03 avatar 22.7.2017 08:32 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Ideální datový formát

    Možná :-) Ale přijde mi lepší o věcech nejdřív trochu přemýšlet a mluvit,1 než se bezhlavě vrhnout na implementaci (pak to totiž dopadá třeba takhle).

    [1] S tím, že člověk může dojít i k tomu, že to za tu námahu nestojí – což je taky dobrý závěr a výhra.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    22.7.2017 09:38 RM
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Má podle vás smysl někdy dělat aplikačně specifický formát

    Na základě mých skromných zkušeností bych řekl, že má. Dokonce se domnívám, že všechny ty meta-... formáty nemají budoucnost. Pokud se snad z nějakého důvodu uchytí, pak to bývá pro programátora většinou za trest s tím pracovat. Časem pak přijde nějaký průkopník, který nabídne něco méně meta-.. a programátor jásá.
    22.7.2017 11:00 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Ideální datový formát
    +1, kolikrát je větší problém adoptovat nějaký obecný metaformát než naimplementovat vlastní.

    Spíš než obecný metaformát by mi přišly užitečný nějaký dílčí "mikroformáty" (kde by třeba bylo i více různých možností jak kódovat např. string apod. s různými vlastnostmi), ze kterých by si člověk poskládal jako z lega to, co potřebuje.
    22.7.2017 11:59 RM
    Rozbalit Rozbalit vše Re: Ideální datový formát
    více různých možností jak kódovat např. string apod. s různými vlastnostmi

    Perl (ač tedy nejde o značkovací jazyk) jistou variabilitu v tomhle nabízí, akorát že to pak mnozí považují za matoucí, pokud není dané jasné schéma :).
    22.7.2017 12:38 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Ideální datový formát
    To asi nebude to, co mám na mysli. Mj. by tam měly být možnosti binárního kódování různých dat.

    V podsatatě spíš než nějaký formát bych to viděl na kolekci best practices v oblasti formátů + nástrojů a doporučení pro tvorbu, vše na jednom místě. To by bylo hezký. Ale je to asi spíše na úrovni vlhkého snu, tohle nikdo reálně neudělá. (Ačkoli třeba do XML nebo jiných bylo jistě už investovánO řádově více energie.)
    xkucf03 avatar 23.7.2017 17:07 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Ideální datový formát

    Pracoval jsem na pár projektech pro telco operátory (SMS, účtování…) a tam mě právě zaujalo, jak moc podobných formátů existuje. Mnohé byly dokonce navržené stejnou firmou (ale asi jiným týmem). Uvnitř to bylo pořád to samé dokola, nějaké TLV nebo AVP, tzn. nějaká hlavička, bajt nebo pár bajtů označujících typ atributu, pak jeden nebo více bajtů označujících délku atributu, samotná data a pak další atribut. Byly tam nějaké odchylky, datové typy byly trochu jiné atd. takže pro každý formát/protokol byla potřeba jiná knihovna resp. kodér/dekodér. Tahle variabilita byla úplně k ničemu, přínos: nula. Klidně to mohl být celé jeden meta-formát a nad ním odlišné slovníky/schémata definující specifické protokoly / formáty zpráv.

    Asi nejlíp z toho vychází Diameter, který je skoro dokonalý, ale i ten má nějaké vady a není obecně použitelný.

    Aby nedošlo k mýlce, meta-formát nijak nesouvisí se složitostí – XML, YAML, INI, JSON, CBOR, CSV, javovské .properties, textový formát typu klíč=hodnota… to všechno jsou meta-formáty. Spočívá to v tom, že neobsahují nic aplikačně specifického – to si nad nimi postaví každý sám.

    Někdy dává smysl vytvořit DSL – ovšem to se týká dat vytvářených člověkem (ale zdaleka ne všech). Např. POV-Ray má svůj jazyk, ve kterém se popisuje scéna/model. Tam mi to nějaký smysl dává. Pak je spousta případů, kdy je i pro člověkem psané/čtené soubory lepší použít meta-formát + schéma – jednak kvůli podpoře editorů, zvýrazňování syntaxe, znalosti lidí (aby ses nemusel učit tolik formátů, abys nemusel pořád v hlavě přepínat, jak se zrovna tady píše seznam hodnot, jak se píší čísla, jak textové hodnoty, jak se escapuje…). Nicméně hlavně se tu bavíme o formátu, který není psaný/čtený člověkem, ale který slouží ke komunikaci dvou programů – a tam podle mého v drtivé většině případů aplikačně specifický formát nedává smysl a je vhodnější použít meta-formát – pro kódování a dekódování použiješ dobře odladěnou existující knihovnu a jako programátor řešíš jen sémantiku, logiku nad tím, ale nemusíš se zabývat tím, jak převést na bajty datový typ XY nebo jak dekódovat seznam hodnot.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    22.7.2017 10:57 Tomáš
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Ještě bych tam přidal zpětnou/dopřednou kompatibilitu. U té dopředné, aby parser dokázal nahlásit, že formát souboru je novější, ale nespadnul.
    xkucf03 avatar 23.7.2017 16:00 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Zpštná a dopředná kompatibilita a kritické atributy

    Pokud to jde, tak je zpětná/dopředná kompatibilita žádoucí – ale nemělo by to být za cenu chyb – ignorovat některé části zprávy nebo atributy by mohlo mít fatální důsledky. Např. když v nějaké verzi protokolu přibude podpora ACL a já pošli na server data k uložení a k nim připojím ACL, kde řeknu, že k datům má přístup jen někdo, tak pokud bude server ve staré verzi a ignoroval by části zprávy, které nerozumí, zveřejnil by data všem, což je jednoznačně chyba.

    Pak jsou atributy/zprávy, které lze v klidu ignorovat – např. když ti poštovní server předem řekne, jaká je maximální velikost přílohy. Pokud této zprávě jako odesílatel nerozumíš a ignoruješ ji, není to žádná tragédie, při odesílání zprávy se jen dozvíš, že to nejde.

    Proto je dobré ty atributy nebo rozšíření protokolu dělit na kritické a nekritické – ty nekritické lze ignorovat, zatímco když nerozumím těm kritickým, měl bych ukončit zpracování a ohlásit chybu.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    22.7.2017 14:17 Martin Mareš
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Toto je důležité pro kryptografii, aby se snížilo riziko, že někdo zprávu vycpe takovými daty, že se dopočítá kolize hashovací funkce. Půjde do zprávy vložit nějaká data, která se v tichosti odignorují, ale do případného hashe by se započítala?
    Toto IMHO v kryptografii vůbec důležité není. Pokud používám rozumnou hešovací funkci, útočníkovi nějaké vycpávání nepomůže, pokud mizernou, mám ji zahodit. Rozhodně nemám navrhovat obezličky.
    xkucf03 avatar 23.7.2017 16:22 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Kryptografická bezpečnost, jednoznačnost

    Viz třeba DER kódování ASN.1 (X.690).

    To, co píšeš, je sice hezká teorie, ale v praxi máš určité období mezi bodem (A) někdo1 objevil slabiny hashovací funkce a bodem (B) všichni přešli na novou hashovací funkci.

    Jednoznačný způsob zápisu snižuje rizika a možné následky útoku. A je nezodpovědné pro takové případy používat formát, který útok usnadňuje.

    [1] a ten to ani nemusel zveřejnit, takže se o tom zatím ani neví, nebo se teprve jen diskutuje o tom, zda danou funkci lze efektivně prolomit nebo ne

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    22.7.2017 15:09 Petr
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Idealni datovy format neexistuje. Stejne tak jak neexistuje idealni zmrlina, idealni zena,... Kazdy ma jine potreby, predstavy,... Jiny format pouzijete pro ukladani konfigurace, jiny pouzijete pro prenos petabajtoveho multimedialni archivu, jiny format pouzijete k indexaci knih, jiny k indexaci multimedii. Obecne pozadavky na datovy format muzete mit, ale to co plati u jednoho formatu nemusi byt zapotrebi u jineho...
    22.7.2017 17:58 funebrák
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Ideální žena samozřejmě existuje.
    23.7.2017 06:04 JS1 | skóre: 2 | blog: intuition_pump
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Mluv za sebe, ja bych se do toho asi nevesel. :-) Navic mam i (nebo spise) intelektualni potreby.. Jak pise Petr - obecny ideal proste neexistuje.
    Lidstvo čelí v tomto století hrozbě civilizačního kolapsu. Podpořte hnutí klimatickakoalice.cz!
    23.7.2017 06:43 funebrák
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Fleshlight lze samozřejmě používat i během programování v Haskellu, nebo diskutování na Abclinuxu. Případné problémy s velikostí je možné řešit operativním zmenšením penisu.
    xkucf03 avatar 23.7.2017 15:43 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Idealni datovy format neexistuje.

    Co takhle si ten text nejdřív přečíst a nereagovat jen na titulek. Vždyť tam píšu, že ideální formát neexistuje a člověk si musí vybrat, která kritéria zohlední a která obětuje.

    Jiny format pouzijete pro ukladani konfigurace

    Dtto. Píšu, že zde neřeším konfiguraci (nebo lidsky psané dokumenty) a jde mi o formát pro komunikaci mezi dvěma programy.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    22.7.2017 16:39 RM
    Rozbalit Rozbalit vše Re: Ideální datový formát
    .XML, YAML, INI, JSON atd.

    BTW: INI/JSON/CBOR == formát pro struct data(text nebo bin), XML/YAML robustní značkovací meta-jazyk (obalovací/neobalovací{tedy lépe čitelnej}). Tedy z mého pohledu jablka a hrušky, ačkoliv místo jablek lze obvykle požít i hrušky, jen to bude zbytečně výživné.
    xkucf03 avatar 23.7.2017 15:49 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše YAML

    Co si o tom YAMLu něco přečíst?

    YAML: YAML Ain't Markup Language
    What It Is: YAML is a human friendly data serialization standard for all programming languages.

    A to XML je sice použitelné i pro tvorbu dokumentů, ale v zásadě i ten dokument je strom složený z uzlů různých typů (z nichž jeden je text) tzn. strukturovaná data.

    XML se jako formát pro strukturovaná data běžně používá (konfigurace, data, zprávy…) a jestli je trochu ukecané, tak to není až tak dané tím, že umožňuje tvořit i dokumenty.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    23.7.2017 15:56 RM
    Rozbalit Rozbalit vše Re: YAML
    Co si o tom YAMLu něco přečíst?

    Už jdu na to, díky za upozornění.
    22.7.2017 18:01 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Ideální datový formát
    No většina těch formátů se stejně musí pro uživatele (většinu) zobrazit v nějaké jednoduché vizualizaci typu klíč=hodnota. Pokud je pak uživatel primární zdroj konfigurace, tak by ten formát měl být co nejblíž této jednoduché vizualizaci (takovej json formát bez linefeedů je sice hezkej, ale editovat v něm by bylo utrpení). Sice se dá asi udělat zobrazovací a reparsovací mezistupeň (aka editor), ale je to další článek, co může selhat, a v případě že ten "editor" není schopnej naběhnout s poškozenou/neexistující konfigurací, tak je to řezaní si větve pod zadkem (například editor pro hypotetický binární formát fungující jen pro Xka, použitý na zničený konfigurák těch Xek).

    Pro mě je ideální formát takový, který je možné v nouzi editovat přes nouzovou konzoli přes UART pomocí sedu.
    xkucf03 avatar 23.7.2017 15:52 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Ideální datový formát

    Ani ty jsi ten zápisek nečetl? Píšu tam, že zde neřeším konfiguráky nebo lidsky psaná data. Zajímá mě formát pro komunikaci mezi dvěma stroji/programy.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    23.7.2017 18:52 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Ideální datový formát
    LOL fakt že jo, to mám z toho že čtu každou druhou větu, sorry.
    22.7.2017 22:01 Harald Tvaroh
    Rozbalit Rozbalit vše Re: Ideální datový formát
    idelani format existuje a zminil ho uz pred 40 lety Dennis Ritchie. Mike Gancarz to pak upresnil s tim, ze vse je text. Jsou to proste telegramy, kde partneri vedi, co se na kterem miste datoveho proudu nachazi. Splnuje to veskera kriteria (lidsky citelny, nezavisly na architekture, sestaveni a parsovani je primitivni, apod.).
    23.7.2017 15:36 smazáno | skóre: 18 | blog: smazáno
    Rozbalit Rozbalit vše Re: Ideální datový formát
    dokud v tom textu neni mezera :P
    xkucf03 avatar 23.7.2017 16:41 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Ideální datový formát

    To je sice hezké, že „vše je text“ – ale ten text má většinou nějakou vnitřní strukturu – a to je právě ten formát!

    kde partneri vedi, co se na kterem miste datoveho proudu nachazi

    Pokud např. nevíš, že ten text máš rozsekat na jednotlivé řádky (\n nebo \r\n, na to se ještě dá přijít) a ty řádky na jednotlivé sloupce podle třeba středníků (i na to by se dalo přijít), tak ta data stejně nedekóduješ, protože neznáš formát – nevíš na kterém místě datového proudu se nachází který atribut (např. ve čtvrtém sloupečku). K tomu si připočti, že musíš mít nějak definované escapování speciálních znaků – např. co když nějaká hodnota bude obsahovat středník, který se používá jako oddělovač?

    Příkazy jako grep, cut, sed dobře slouží pro ad-hoc práci, kde má člověk věci pod dohledem a ručně si zkontroluje výsledek – nebo když pracuješ s velmi jednoduchými daty, kde nemusíš řešit třeba to escapování nebo víceřádkové hodnoty. Ale pokud to má běžet bez dozoru a má to být 100% spolehlivé, tak to většinou chce jiný formát a jiné nástroje.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    23.7.2017 22:32 Kalašnikov
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Vždyť tam uvádí, že je potřeba znát co se na kterem miste datoveho proudu nachazi, to je ten tvůj formát! Třeba konstatní šířka sloupce. Pro oddělovače si pak lze vymyslet nějaká atypická slova jako < tagmag>. Krom toho znak \0 se často používá jako oddělovač místo \n a seznam tak může obsahovat i víceřádkové texty. Nějaké to zabezpečení je pak další věc.
    xkucf03 avatar 23.7.2017 23:32 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Ideální datový formát

    \0 některé věci řeší (byť tedy nemůžeš uvnitř hodnoty míst \0), ale problém je v tom, že tím nepředáš žádnou složitější strukturu – maximálně seznam/pole. Ještě se dá udělat tabulka – jako první hodnotu dáš počet sloupců a pak sázíš jednotlivé sloupce postupně ze všech řádků. Ale to už si nad tím stavíš svůj vlastní formát.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    24.7.2017 08:51 Kalašnikov
    Rozbalit Rozbalit vše Re: Ideální datový formát
    problém je v tom, že tím nepředáš žádnou složitější strukturu

    Pokud už bych to potřeboval, pak samozřejmě použiji vhodný formát nebo jazyk a nebudu vymýšlet nic na bázi CSV.

    maximálně seznam/pole

    Proč? Slovník je také v pohodě a jednoduché objekty - dejme tomu max hloubky 3 - také. Jen stačí použít jako separátory slova, která budou obsahovat odkaz na předka, případně dát druhé straně vědět, podle jakého klíče byl strom procházen.
    xkucf03 avatar 24.7.2017 23:05 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Ideální datový formát

    Pravda, slovník/mapa se tím dá napsat taky. Ale stejně jako ta tabulka (matice) je to už nějaký formát postavený nad tím, který má svoji specifickou syntaxi spočívající v tom, jak jednotlivé tokeny skládáš dohromady. Stejně tak bys tam mohl dát třeba JSON nebo XML – když je rozsekáš podle mezer, tak z toho máš zase jen posloupnost textových tokenů a můžeš je předat jako parametry na příkazové řádce.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    24.7.2017 09:29 Kalašnikov
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Jinak mam pocit, že nehledáte ideální datový formát, ale univerzální. O tom ale to vlákno není.
    24.7.2017 13:35 JS1 | skóre: 2 | blog: intuition_pump
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Ono tech ridicich znaku existuje vic. Specificky, jsou tam i oddelovace poli, zaznamu, atd.

    Akorat holt dnesni uzus veli nepouzivat je.
    Lidstvo čelí v tomto století hrozbě civilizačního kolapsu. Podpořte hnutí klimatickakoalice.cz!
    xkucf03 avatar 24.7.2017 22:35 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Ideální datový formát

    O tom vím, ale neviděl jsem je nikde používat a když na ně přijde řeč, tak se na ně lidi tváří dost negativně.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    25.7.2017 09:41 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Protože v mnoha (především grafických) prostředích se nezobrazují a zmizí při použití copy&paste
    26.7.2017 07:33 RM
    Rozbalit Rozbalit vše Re: Ideální datový formát
    A co je špatného na takovém formátu (konfiguráku) a následné serializaci?:
    % nějaký komentář
    $var = TEST;
    @TEST = (OBJNAME BUDDY);
    
    #TESTHASH = ([OBJNAME]="first simple object" [BUDDY]="more realistic object")
    
    .OBJNAME:
    	name = something
    	translate:
    		1  = first
    		2  = second
    	something = xxx
    
    Mám tedy k dispozici skalár/pole/hash/ a objekt s podobnou syntaxí jakou používá Bash (což byl záměr). Jako oddělovače se používají znaky \n případně ; (pokud nechci použít jako oddělovač prázdný řádek). Pro odsazení v objektech se používá \t. Takový formát snadno převedu na CSV s oddělovačem \0 takto:
    sed '/^[ \t]*%/d ; /^\t/{:a;s/\t/\n/;ta} ; s/;[ \t]*\([$@#.]\)/\n\1/g ; s/;[ \t]*$/\n/' | tr '\n' '\0'  file.txt
    
    K obnově a konverzi do potřebného formátu mi stačí program AWK přibližně o čtyřiceti řádcích kódu, který strean převede sestaví tak, aby byl použitelný třeba pro inklůdnutí do skriptu bashe nebo perlu.
    26.7.2017 07:37 RM
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Já jen, že stačí i ten jeden znak \0, pokud se na to někdo netváří ;).
    27.7.2017 08:54 Kalašnikov
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Tak to by mne tedy také zajímalo, jak nám to autor vysvětlí. Je tedy možné i pomocí jediného \0 přenášet objekty libovolné hloubky a z takového formátu pak objekt (strom) znovu sestavit. Krom toho by mne zajímalo, co je v tomto případě ten formát, když, podle autora, je formát až něco nad tím, pokud jsem ho správně pochopil.
    xkucf03 avatar 27.7.2017 21:06 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Ideální datový formát

    \0 ti umožní spolehlivě oddělit prvky seznamu1 – ale pořád je to jen seznam. Pokud chceš místo seznamu mapu, tabulku, strom, nějakou složitější strukturu atd. tak si musíš definovat svůj vlastní jazyk a někde ho popsat. Např. pokud je první prvek T, tak jde o tabulku, druhý prvek určuje počet prvků a následující prvky jsou jednotlivé hodnoty tabulky v pořadí od prvního sloupce prvního řádku po poslední sloupec posledního řádku.

    Bez této definice jazyka/formátu nemáš nic víc než pouhý seznam prvků. A i to, že \0 odděluje prvky seznamu, musíš někde popsat.

    [1] pokud tedy samy neobsahují \0, ale to je celkem málo časté

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    23.7.2017 23:19 Kalašnikov
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Příkazy jako grep, cut, sed dobře slouží pro ad-hoc práci...

    Tak nepoužiju grep, cut, sed, které se pro to nehodí ale použiji gawk, který umí jako oddělovač třeba i ten <tagmag>. Otázka je, jestli by zrovna gnu utility někdo chtěl používat pro programování parseru nějaké důležité aplikace. Já bych to třeba dělal určitě v něčem jiném.
    24.7.2017 15:03 fi
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Zalezi, na co to chces. Mel jsem zakaznika, kterej chtel naprogramovat sitove transparentni message exchange s routovanim pro neSSI cluster a ocekavali ~5000000zprav/s. V tom pripade vzdycky skoncis u pouzivani Cckovejch struktur, protoze vic nez konverzi mezi endianama nestihnes a to se jeste budes koukat, jestli nahodou komunikace nebezi mezi dvema little endian systemy, aby sis to urychlil.

    Pokud chces nejakou praci offloadovat na HW, tak se v dobrym pripade muzes spolehnout na to, ze HW bude koukat na prvnich 64bytu, takze urcite nechces, aby na zacatku zpravy byla nejaka xml sracka, ktera je ve vsech zpravach stejna.
    Josef Kufner avatar 24.7.2017 16:38 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Pak tu jsou nástroje jako například Protocol Buffers.
    Hello world ! Segmentation fault (core dumped)
    24.7.2017 21:02 fi
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Na protobuf jsem koukal, ale v te dobe (krome toho, ze nebyl kompilator pro C), nebylo mozne snadno pracovat s hlavickou s daty na fixnich pozicich, takze hlavicku by musel cist SW. CPU se sitovym akceleratorem umoznuji optimalizovat doruceni a misto prijmani zpravy do RAM, muzete zpravu cist rovnou do cache jadra, kde bezi thread prijemce. Jak presne se todle v HW configuruje zalezi na vyrobci, ale vetsinou je to nejaka kombinace masek a lookup tabulka, cimz protobuf nematchnete. U protocolbuffers se IMO predpoklada, ze je clovek pouzije uvnitr UDP/TCP a pod to jeste IP, coz ma zbytecne overhead, pokud pouzivate sbernici, ktera todle umi sama, treba RIO nebo IB.
    24.7.2017 21:36 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Ideální datový formát
    treba RIO nebo IB
    Neznám ani jedno z toho, ale zní to zajímavě. Byl by odkaz?

    Jinak to, co popisuješ, zní opravdu specializovaně, na to opravdu asi běžně rozšířené formáty nepůjdou. Krom protobuffers vím ještě o Cap'n Proto, kde se bijí v prsa, že jsou bez overheadu, ale neznám to natolik, abych mohl říct, jestli by to šlo použít pro tvůj usecase...
    24.7.2017 22:21 fi
    Rozbalit Rozbalit vše Re: Ideální datový formát
    RapidIO a InfiniBand. Na rozdil od ethernetu zarucuji doruceni zpravy (a nebo oznameni chyby) a poradi doruceni, takze je zbytecne nad tim jeste pouzivat TCP/IP.

    Vetsina dokumentace k chipum neni volne k dispozici, vyjimkou jsou veci od texas instruments, kde najdete dokumentaci na jejich webu, ale co vim, tak TI dela s RIO jen DSPcka (sitovej stack mizernej, ale porad lepsi, nez co si Intel koupil z Indie), ale maji podporu ve vanilla jadre.

    Hezke CPU pro sitovani ma Cavium a Spark S7 ma mit IB v chipu, ale s novejma Sparkama jsem jeste nedelal.
    24.7.2017 23:48 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Ideální datový formát
    Aha, jasý, nedošlo mi, že IB se myslí InfiniBand. Ale RapidIO jsem neznal, díky.

    Mám shodou okolností přístup na jeden S7 server, ale InfiniBand nemá a beztak nemám možnost si tam moc hrát se sítí...
    xkucf03 avatar 24.7.2017 22:47 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Ideální datový formát
    ~5000000zprav/s

    Pěkné číslo :-)

    Co se s těmi zprávami dělá? Rozparsování je jen první krok (a většinou poměrně nenáročný oproti tomu, co přijde potom). Pak je nějaké rozhodování/směrování na základě atributů v té zprávě?

    K tomu by stačilo, aby ten meta-formát umožnil napsat schéma tak, že atributy budou mít fixní délky, budou začínat na pevně daných pozicích. A dovedu si představit i to, že by šlo napsat schéma tak, aby zprávu šlo napasovat na céčkovou strukturu (pokud je tedy napsaná jako portabilní, jinak bys musel mít na každé platformě jiné struktury, na které to budeš mapovat).

    IMHO by to šlo a je to zajímavý příklad. Nicméně trochu extrémní – tohle je možná případ užití, který je při návrhu formátu pro široké použití lepší raději škrtnout, pokud by to mělo nějaké výrazné nevýhody v obvyklejších případech užití.

    aby na zacatku zpravy byla nejaka xml sracka, ktera je ve vsech zpravach stejna

    Ne tady opravdu není řeč o XML, ale o nějakém hypotetickém a (zřejmě) binárním formátu. Maximálně by to mohla být binární serializace XML, ale to není věc, kterou bych měl primárně na mysli v tomhle zápisku.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    24.7.2017 23:46 fi
    Rozbalit Rozbalit vše Re: Ideální datový formát
    ~5000000zprav/s

    Pěkné číslo :-)

    Co se s těmi zprávami dělá? Rozparsování je jen první krok (a většinou poměrně nenáročný oproti tomu, co přijde potom). Pak je nějaké rozhodování/směrování na základě atributů v té zprávě?

    Dela se tim vpodstate vsechno, IPC pro aplikace, semafory, casovace, logovani, konfigurace, externi komunikace... Diky tomu se aplikace mohou vicemene volne presouvat mezi uzly klastru, takze aplikace, co napriklad posila ven logy syslog protokolem, nemusi bezet na uzlu, kde je ethernet (a vedet na jake IP posilat).

    K tomu by stačilo, aby ten meta-formát umožnil napsat schéma tak, že atributy budou mít fixní délky, budou začínat na pevně daných pozicích. A dovedu si představit i to, že by šlo napsat schéma tak, aby zprávu šlo napasovat na céčkovou strukturu (pokud je tedy napsaná jako portabilní, jinak bys musel mít na každé platformě jiné struktury, na které to budeš mapovat).

    jj, presne tak. Jeste pak je limitnim faktorem delka hlavicky, protoze kdyz mi prijde zprava a chci ji preposlat pres UDP na ethernetu a dokazu to poznat podle prvnich X bytu (zavisi na CPU), tak muze stacit prehazet par pointeru a zbytek udela HW, takze zpracovani jedne zpravy je jen par desitek instrukci.

    IMHO by to šlo a je to zajímavý příklad. Nicméně trochu extrémní – tohle je možná případ užití, který je při návrhu formátu pro široké použití lepší raději škrtnout, pokud by to mělo nějaké výrazné nevýhody v obvyklejších případech užití.

    V kazdem formatu je dobre zjistit co nejdrive, co se s danou zpravou bude delat. Kdybych chtel genericky userspace format, tak na zacatek zpravy dam hash schematu (coz mi prijde lepsi nez pochybna kombinace ID/verze, nemusi byt ani moc dlouhy, protoze se stejne musi vse overovat) a strukturu udelam tak, abych pri cteni nemusel parsovat vsechno - aby offset jednotlivejch polozek sel snadno spocitat. Rovnou by to pak i mohlo generovat BPF filtry aby si uzivatel mohl sam rozhodnout, jak si rozdeli praci mezi vlakna a nemusel na to mit dispatcher.
    aby na zacatku zpravy byla nejaka xml sracka, ktera je ve vsech zpravach stejna

    Ne tady opravdu není řeč o XML, ale o nějakém hypotetickém a (zřejmě) binárním formátu. Maximálně by to mohla být binární serializace XML, ale to není věc, kterou bych měl primárně na mysli v tomhle zápisku.

    To byl spis obecnej povzdech nad tim, ze spousta formatu cpe uzitecny informace moc daleko od zacatku ;-)
    xkucf03 avatar 25.7.2017 00:29 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Ideální datový formát

    Co je konkrétně moc dlouhá hlavička? Abych měl představu.

    Např. Private Enterprise Number (přiděluje IANA) jsou čtyři bajty. K tomu stačí přidat třeba čtyři bajty pro označení typu zprávy/protokolu v rámci dané organizace + nějaké magické číslo nebo oddělovač a jsme cca na 10 bajtech a máme globálně jedinečnou identifikaci protokolu/zprávy, jmenný prostor. Je to moc nebo ne?

    Pokud by se ten jmenný prostor odvozoval od doménového jména textově, tak to bude trochu víc, ale u krátkých jmen to nebude o moc horší.

    Další věc je, že by šlo v rámci jedné komunikace poslat tyhle věci jen jednou a pak už se jen odkazovat na nějaké ID relace. I když pak zpráva sama o sobě neobsahuje vše potřebné a druhá strana si musí pamatovat stav.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes

    Založit nové vláknoNahoru

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