Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.
Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
Revolut nabídne neomezený mobilní tarif za 12,50 eur (312 Kč). Aktuálně startuje ve Velké Británii a Německu.
Společnost Amazon miliardáře Jeffa Bezose vypustila na oběžnou dráhu první várku družic svého projektu Kuiper, který má z vesmíru poskytovat vysokorychlostní internetové připojení po celém světě a snažit se konkurovat nyní dominantnímu Starlinku nejbohatšího muže planety Elona Muska.
Poslední aktualizací začal model GPT-4o uživatelům příliš podlézat. OpenAI jej tak vrátila k předchozí verzi.
Google Chrome 136 byl prohlášen za stabilní. Nejnovější stabilní verze 136.0.7103.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 8 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »
Tiskni
Sdílej:
.some.id^LF
LF
Specifikace říká:
For a one-line record, ' follows, for a multiline record, ^ followed by a string of maximum of 64 octets and LF follows. For a one-line record any data follow until the first occurence of LF. For a multiline record any data follow until the first occurence of LF immediately followed by the string of maximum of 64 octets.
Přemýšlím jak to formulovat ve specifikaci lépe. Možná bych měl oddělit specifikaci pro singleline a multiline. Nebo raději ne? Nějaké nápady jak to upřesnit? Díky.
JSON je smradlavý bastl, který neumí ani komentáře → na konfiguráky absolutně nevhodný a na jakékoli lidsky psané datové struktury vlastně taky (často potřebuješ data ladit a různě si s tím hrát a tam se fakt hodí mít možnost kus zakomentovat – všude jinde ta možnost je – např. XML, INI, SQL, YAML atd.).
cat .icewm/preferences | grep -i hladany_retazec
no a vždy nájdem čo potrebujem. Spravidla to vypľuje komentár aj s hodnotu.
Ale neviem či nenosím drevo do lesa, keď viem že miluješ XML Já zase neviděl JSON s komentáři a vzhledem k tomu, že jsem četl specifikaci, tak ani nevěřím, že nějaký existuje.
Oproti tomu komentovaných XML jsem viděl spoustu a taky jsem viděl spoustu XML s XSD nebo jiným schématem, u kterých mi editor během psaní validoval dokument a napovídal elementy a zobrazoval dokumentaci. Práce pak jde výrazně rychleji od ruky a člověk má větší jistotu, že to bude fungovat, než když píše naslepo nebo podle externí dokumentace.
Já zase neviděl JSON s komentáři a vzhledem k tomu, že jsem četl specifikaci, tak ani nevěřím, že nějaký existuje.No proto bych třeba na konfiguraci doporučil spíš TOML. Beztak je (ještě o něco) jednoušší editovat konfigurák v TOMLu než v JSONU.
Oproti tomu komentovaných XML jsem viděl spoustu a taky jsem viděl spoustu XML s XSD nebo jiným schématem, u kterých mi editor během psaní validoval dokument a napovídal elementy a zobrazoval dokumentaci. Práce pak jde výrazně rychleji od ruky a člověk má větší jistotu, že to bude fungovat, než když píše naslepo nebo podle externí dokumentace.To, že je potřeba celkem rozsáhlý tooling a od někoho vypracovaná schémata, aby editace XML nezpůsobovala vývojářům PTSD, 1) mě nepřekvapuje a 2) nepovažuju za plus.
od někoho vypracovaná schémata
A co jiného navrhuješ? To mám si mám pořídit věšteckou kouli a psát podle ní? Tak jako tak je potřeba napsat specifikaci a strojově čitelná je ta nejlepší, jaká může být (vysvětlující texty do ní lze vždy doplnit, ale obráceně to nefunguje – specifikaci v přirozeném jazyce těžko použije nějaký nástroj a těžko ti usnadní práci – musíš všechno přečíst sám a dělat ručně).
ssh foobar vim ~/some/file
).
XML by bylo fajn, kdyby
A co jiného navrhuješ? To mám si mám pořídit věšteckou kouli a psát podle ní? Tak jako tak je potřeba napsat specifikaci a strojově čitelná je ta nejlepší, jaká může být (vysvětlující texty do ní lze vždy doplnit, ale obráceně to nefunguje – specifikaci v přirozeném jazyce těžko použije nějaký nástroj a těžko ti usnadní práci – musíš všechno přečíst sám a dělat ručně).A co jsi to používal / používáš za editor? Já jsem na XML zatím nic použitelného neviděl a něco takového by se hodilo.
Netbeans a jEdit, občas ještě Eclipse. Nicméně dokonalé to není a ten potenciál, co by z toho fotmátu šel vytěžit, je ještě mnohem větší – ale i tak to dalece přesahuje jiné formány, kde je podpora v podstatě nulová (v lepším případ zvýrazňování syntaxe).
... tak vis jak to pak vypada v realu - ty XML konfiguraky (prave, kvuli tomu aby se daly zpracovavat pomoci ruznych nastroju) jsou tak slozity, ze dokonce ani s tema udelatkama se v tom nikdo nevyzna
Já zase neviděl JSON s komentáři a vzhledem k tomu, že jsem četl specifikaci, tak ani nevěřím, že nějaký existuje.Já ano. A není to rozšíření specifikace o komentáře zase tak složité.
XML do toho netahej, o to tu nejde – můj komentář byl o JSONu a o jeho zásadní vadě – absenci komentářů – která tento formát činí nevhodným pro většinu použití. I ten tvůj oblíbený „plaintext“1 ty komentáře podporuje.
[1] ve skutečnosti to žádný „plaintext“ není a je to nějak specifikovaný značkovací jazyk, asi něco na způsob INI nebo .properties souborů
můj komentář byl o JSONu a o jeho zásadní vadě – absenci komentářů – která tento formát činí nevhodným pro většinu použitíTo bych neřekl, pro svoje většinové použití, tj. data interchange (zejména na webu apod.) a serializaci, vyhovuje v zásadě velmi dobře. (A o lepší alternativě nevím.) Na konfiguraci JSON jako takový moc není, pokud ta konfigurace je větší než minimální. Editory jako Sublime nebo VS Code si za tímhle účelem do JSONu komentáře přidaly, což není čisté řešení, nicméně v praxi s tím na 99% problém nebude.
Pro serializaci a strojové rozhraní se klidně může použít binární formát. Co se týče lidské čitelnosti – většina JSONu, který potkávám, je humus na jednom řádku, takže člověk stejně potřebuje speciální nástroj, který to rozparsuje a zobrazí v lidsky čitelné podobě – a to můžu dělat i s binárním formátem (třeba si ho otevřít ve Wiresharku nebo vypsat jedním příkazem v konsoli).
Editory jako Sublime nebo VS Code si za tímhle účelem do JSONu komentáře přidaly
Takže už to není JSON a nemá cenu se o tom v souvislosti s JSONem bavit, mj. proto, že parser JSONu si na tom vyláme zuby.
Pro serializaci a strojové rozhraní se klidně může použít binární formát.Je otázka, jestli by to přineslo výhody, např. v tom prostředí webu. Přenos se stejně typicky komprimuje a pro dekódování, zejména v JS, je JSON nejspíše stejně snazší.
Takže už to není JSON a nemá cenu se o tom v souvislosti s JSONem bavit, mj. proto, že parser JSONu si na tom vyláme zuby.Výhoda je v tom, že pro uživatele to stále je JSON, je zvyklý s tím pracovat. Že to nejde parsovat obecným JSON parserem jaksi ničemu nevadí.
JSON má komentáře na stejné úrovni jako uSX popsaný v blogu. Tedy ani jeden je nemá a emuluje se pomocí vyhrazené property.Ne tak docela. V JSON se musí vyhradit nějaká hodnota vedle ostatních a tudíž každá implementace musí nějak sémanticky rozlišit, zdali to je komentář či hodnota, protože JSON specifikace pro rozlišení neposkytuje žádný nástroj. uSX však tento problém nemá, protože komentáře nelze adresovat žádným ID (ačkoliv v AST někde samozřejmě zůstanou, ale není důležité kde a implementace by na ně měla zcela kašlat s výjimkou prvních několika bajtů streamu, které určují požadovanou verzi specifikace pro úspěšné zpracování následujícího streamu).
Hlavní výhoda JSONu je v tom, že ve většině dynamických jazyků se mapuje 1:1 na běžné datové struktury (JSON je poskládaný jen z uzlů typu seznam, objekt, null, bool, string, číslo).V zásadě ano to tak je, občas bývají problémy s datovými typy - např. kvůli tomu, že JSON nerozlišuje float a integer (natožpak různé velikosti integeru nebo znaménkovitost). Nicméně souhlasim, že se JSON typicky snadno reprezentuje v různých jayzcích. Co mně osobně na JSONu vadí (mnohem víc než absence komentářů) je, že netoleruje čárky na konci věcí (trailing comma), tj. např.
[ 1, 2, 3, ]
není validní.
Oproti tomu je například v XML je 18 typů uzlů, parser je složitý až hrůza a neumí to rozlišit null od false.XML je markup (navíc zatížený historií - HTML, SGML), na něco jinýho než strukturování dokumentů ho IMHO nejde moc brát vážně...
Pokud není důležité „kde“, tak parsováním a opětovnou serializací komentáře buď ztratíš, nebo zdrhnou někam kdo ví kam.Pardon, vyjádřil jsem se dvojsmyslem. Komentáře samozřejmě zůstanou v AST (kterým je holý seznam dvojic, takže mapování na běžné struktury je samozřejmost), a to přesně na stejném místě kde byly na vstupu. Ohledně schématu, tak uSX samozřejmě podporu schémat má - a to ve formě volitelné standardní knihovny schémat (ta může být však jednoduše nahrazena jinou, vlastní knihovnou schémat v případě potřeby).
Technická: o XML se to rozhodně říct dá, kódování a dekódování jsou symetrické operace"Rozhodně" se to tedy IMHO říct nedá. Například následující dva XML snippety mají jiný AST:
<person><firstname>Pepa</firstname><lastname>Vomáčka</lastname></person>
<person>
<firstname>Pepa</firstname>
<lastname>Vomáčka</lastname>
</person>
Jestli budou nebo nebudou interpretovány stejně je v zásadě záležitost aplikace, příp. je potřeba to ošetřit schématem.
Další věc je, že enkódery mohou/nemusí různě kódovat znaky do entit (ie. třeba " místo " apod.) nebo používat CDATA.
Komentáře chybí jen při ručním psaní konfiguráků.
Což je dost podstatná vada. Přidání komentářů nezvyšuje výrazně složitost formátu, takže tohle pokládám jednoznačně za špatný návrh a šetření na nesprávném místě.
ukládání a předávání dat, API, konfigurace upravovaná z GUI
I tam se komentáře hodí a není důvod, proč by tam neměly být. Při vývoji těchto věcí je potřeba ladit data, testovat, API si často budeš nejdřív provolávat ručně přes curl, JMeter, SoapUI atd. a tam se hodí mít možnost zakomentovávat různé části, zkoušet posílat různé požadavky nebo si do toho psát poznámky.
V takových případech to je dokonce výhoda, neboť zakódování a dekódování jsou pak zcela symetrické operace a žádná data se při strojovém zpracování neztrácí
Jednak se ztrácí pořadí1 a jednak třeba u toho XML jsou komentáře normální uzly a jsou součástí modelu (můžeš je načíst a pak zase uložit).
[1] což někdy hraje roli resp. omezuje to způsoby využití takového formátu – např. když na hodnotě jednoho atributu závisí způsob parsování dalších atributů – atributy se ti při výstupu zpřehází a pak to nejde přečíst na jeden průchod
Tedy ani jeden je nemá a emuluje se pomocí vyhrazené property.
Ne, to opravdu za komentáře považovat nelze. Zasírá to datový model a v souvislosti s tím, že JSON neumí jmenné prostory, není ani možnost jak to logicky separovat od skutečných dat.
Software na druhé straně by s tím musel počítat, což jsem ještě neviděl. Takové „komentáře“ pak nefungují buď vůbec (druhá strana ti vrátí chybu, protože narazila na atribut, kterému nerozumí) nebo to v horším případě projde a může se to chovat divně (druhá strana si ten komentář vyloží jako něco jiného).
Zrovna jsem s tím dneska taky bojoval :-) Sice vím, co od toho čekat, takže už na to moc nezapomínám, ale odmazávat ty čárky je otrava. (generoval jsem si nějaké seznamy prvků a kopíroval je do JMeteru s požadavkem v JSONu).
I když mám takový blbý pocit že software pro F-35 byl napsaný "moderně" v Javě, podle toho jak zabugovaný krám to je!Afaik je psaný z většiny v C/C++.
No, F-35 jako nepříliš podařený klon Jaku-141 je proti nim fakt sračka, jeho jediná šance je že odpálí raketu a fofrem uteče dřív, než ho zaměří ruský radar.Tak já bych to zas tak nezatracoval, zrovna dneska vyšlo Cvičení Red Flag: Stíhačka F-35 ničí soupeře poměrem 15:1
V každém případě nelze číslo 15:1 brát, ostatně jako číslo 241:2 v případě F-22A, jako etalon pro výsledek jakéhokoliv nasazení F-35 (nebo F-22A) ve skutečné letecké válce.A jestli MiG-29 simulují pomocí F-16, je třeba podotknout že těm piloti naší tygří letky na MiG-21 v simulovaných soubojích opakovaně natrhávali prdel. Rovněž podobné souboje F-15 či F-18 vs Su-27 přinesly Američanů ve 100% hezké druhé místo. Ale jo, šanci určitě mají, protože dovedou vymyslet účinnou taktiku a učit se z chyb. Rozhoduje hlavně ta taktika, jako tenkrát v Izraeli, kdy na sestřel jednoho MiG-25 potřebovali šest letadel najednou, pomocí kterých na Syřana ušili dokonalou past. A sami si potom do mnohem primitivnější pasti pořádně naběhli.
:-/
Rychlou kompilaci má dnes kde co - a nemusí kvůli tomu prznit syntaxi jazyka.To si nemyslim, dodnes je to aktuální téma. Na rychlost kompilace se zaměřuje např. Go, které ale je na ten úkor dost osekáno o různé fíčury (např. generika). Naprosti tomu třeba rustc je notoricky pomalý (spousta statické analýzy, složitý type system, ...). Ani jedno z toho mi nepřijde jednoznačně lepší. Otázka složitosti kompilátoru je dnes stále tradeoff tak jako kdysi, akorát to máme celé škálováno na větší objemy...
Málokdo z přítomných zde zná skutečný Wirthův Pascal. Borland sám musel Pascal mohutně rozšířit, jinak by byl absolutně prakticky nepoužitelnýA co ma byt? Jazyky se vyviji. Srovnej puvodni Fortran a dnesni Fortran. Srovnej C# 1.0 a C# 6.0. Srovnej puvodni C++ a C++11.
zejména typ file.Ok. Ted se nam to keca. Ale v dobe navrhu Pascalu se pracovalo s daty trochu jinym zpusobem, viz derne stitky, pasky, atp., kde puvodni pascalovsky zpusob prace s daty dava smysl. Nojo, kdyby tak tehdy mel Wirth vesteckou kouli nebo se aspon podival do hvezd, vedel by, ze se za dvacet let bude pracovat se soubory uplne jinak.
A to při zachování pěkných vlastností (KISS, rychlost zpracování/tvoření, použitelnost pro nekonečné proudové zpracování, spolupráce s ostatními formáty, rozšiřitelnost, kompatibilita mezi textovými editory a programovacími jazyky, atd.).Myslím tedy, že porovnání s akademickým jazykem není na místě. Rozhodnutí udělaná v uSX bych spíše přirovnal k vhodnému použití Eulerovy metody na numerické výpočty. Je to triviální metoda, která je nejrychlejší na použití, lidské pochopení a má velmi nízké nároky na výpočetní výkon. Poskytuje velmi přesné výsledky pro velmi malý počet kroků (uSX těží z toho, že používá pouze 3 oddělovací ASCII znaky), ale nehodí se pro velký počet kroků (Pascal používá tolik oddělovačů, že z toho jde hlava kolem). Analogicky s ostatními rozhodnutími v uSX a Pascalu. Jsem přesvědčený, že konfigurační/serializační formáty, které mají standard popsaný na mnoha stránkách ISO A4 nejsou univerzální a jejich složitost nepřináší užitek. Proč? Protože jediným důvodem existence těchto specifikací je srozumitelnost pro člověka (viz. "binární" serializace níže). Pokud však jeden člověk není schopen zvládnout tu specifikaci (a troufám si tvrdit, že ani tady na ábíčku není ani jeden člověk, který zná např. celou specifikaci XML), pak tyto specifikace pozbývají smyslu a měli by se všude na těchto místech používat "binární" serializace (např. MessagePack, Cap'n Proto, Protobuf, ...), protože jsou výrazně rychlejší a jednodušší na strojové zpracování a jejich "nečitelnost" člověkem je irelevantní.
Jsem přesvědčený, že konfigurační/serializační formáty, které mají standard popsaný na mnoha stránkách ISO A4 nejsou univerzální a jejich složitost nepřináší užitek.Ano. A proto má JSON specifikace jen 14 stran, přičemž většinu tvoří obálka, úvod, obsah a reference. Samotná specifikující kapitola je na 5 stran a to jen kvůli tomu, že použili velké obrázky pro popis gramatiky.
Abych to přirovnal, teoreticky jde x86 čip navrhnout tak, aby měl jen 3 nožičky. Dvě nožičky budou napájení, a 1 nožičky bude pro vstupní/výstupní data, samozřejmě vše serializované do jednoho signálu. Ale jen idiot by to považoval za dobrý návrh procesoru, a jen idiot by si myslel, že je to KISS návrh.Všichni víme, že v IT dobrá přirovnání neexistují. Zde popisujete nožičky jako úzké hrdlo, kdežto u datových formátů (uSX není výjimkou) je úzkým hrdlem vždy datový model formátu. Zdá se mi, že zde vedete ohromnou diskuzi na téma parsovatelnosti, přičemž to bylo zmíněno jako jedna z mnoha zajímavých (požadovaných) vlastností a nikoliv jako nějaký Svatý grál. Ani ve specifikaci uSX to není (ani nebylo) nikde zdůrazněno...
Zřejmě pro návrh formátů nemáte cit. Například navrhnout apostrof pro oddělení identifikátoru a hodnoty - to chce ignoranta hrubého zrna.Já su rád za každý takový příklad. Apostrof zmínili již ostatní. Předpoklad byl, že téměř všichni budoucí uživatelé mají buď zkušenost s Lisp-like syntaxí a nebo to jsou "sekretářky" mající převládající zkušenost s běžným textem, kde jsou apostrofy časté a nepárové. Každopádně tento apostrof je ale naprosto podružný problém - máme zde ASCII tabulku a v ní 253 dostupných znaků (LF, ^ a \0 jsou zabrané) a můžeme vybírat do aleluja. Nu a že bych specifikování formátu spojoval s nějakým citem pro návrh formátů, jak píšete, tak to mi zní spíše poeticky než jako vážně míněná kritika. Hm, ale mohl bych tady udělat anketu o nejoblíbenější nepárový oddělovač pro uSX
Dal přednost čisté a jednoduše parsovatelné gramatice před praktickou použitelností - tedy udělal stejnou chybu jako autor usx.Pascal vznikal v dobe, kdy tehdejsi superpocitace mely desitky dnesnich kB RAM. Takze cim jednodussi parser/prekladac, tim vic mista na data.
Protože jednoduše parsovatelná gramatika měla přednost před praktičností jazyka.To je prakticnost z dnesniho pohledu. Za onoho casu, pokud byl preklad vicepruchodovy, nedaly se jednotlive kroky ulozit do pameti, protoze ji bylo zoufale malo, a tak se to resilo zapisem na externi medium. To tedy znamena: ulozit fazi prekladu na pasku, premotat pasku, pripadne presunout pasku do jineho stroje, spustit dalsi fazi prekladace, v horsim pripade preskladavat derne stitky. To vse za situace, kdy na dany stroj si delaji narok dalsi programatori nebo operatori. Takze jazyk, ktery v jednom pruchodu zvladne vygenerovat binarku a pripadne ji okamzite spustit, byl v te dobe asi velke terno a prinos k produktivite prace.
Nicméně Borland zprznil extenzi Pascalu natolik, že smrt Pascalu byla jen otázkou času přes spousty peněz a nadějí Borlandu.Az nekdy do poloviny nultych let, byly Delphi jediny rozumny nastroj pro vyvoj pro MS Windows. Pak je vytlacil Microsoft se svou masivni kampani za C# a .NET.
Pěstujte fantazii dál, hodně se tím bavím.To je mile.
Pascal vznikal v době, kdy už na světě řada programovacích jazyků existovala. A přestože se těžko dá předpokládat, že by měl Pascal k dispozici horší počítače než ostatníPascal byl zverejnen v roce 1970. V te dobe se prodavaly pocitace PDP-11, CDC6000, IBM/360 s kapacitami pameti v radech desitek kB. Dejme tomu, ze pocitac mel cca 64 kB, nejakych cca 20 kB na zakladni obsluzne rutiny/OS, dalsich dejme tomu 20 kB prekladac samotny, a hned zbyva 25 kB na samotny program, prip. data. Navic, je-li program nacitam z dernych stitku (v te dobe standardni medium pro programovani) jeden pruchod je opravdu zadouci. Ano, tehdy jazyky uz existovaly, dlouhodoba zkusenost byla minimalni. Jazyk B (konec sedesatych let), ze ktereho vzeslo cecko nemel ani datove typy a struktury.
Tehdy bylo spíše důležité, jak kvalitní a nenáročný kód vyplodil ten kompilátor, než to kolik průchodů bylo.Vzhledem ke zpusobu prace s danym pocitacem, tak rychly jednopruchodovy system opravdu prinasel velke benefity, viz vyse. Prekladace te doby se stezi vzmohly jen na zakladni optimalizace, nic lepsiho si dovolit ani nemohly, protoze by k tomu potrebovaly nejakou pamet a procesorovy cas, ktere se nedostavalo. Jen pro uvedeni do kontextu, Unix byl prvni OS napsany ve vyssim programovacim jazyce ostatne i proto, ze prekladace existujicich jazyku nebyly zrovna 2x efektivni.
A také ve Microsoft Visual Basicu, což byl velice rozumný nástroj.Aaaa, pan bude odbornik! VB byl vsechno, jen ne rozumny nastroj.
Ono je to trochu jinak. Borland začal krachovat mnohem mnohem dříve.Ano, uz jsem pomalu zapomnel, ze Microsoft tehdy pretahl Anderse Hejsberga, aby delal na vyvoji jejich nastroju.
[user] email = xxx@gmail.com name = Johnny English [core] pager = less -FRSX autocrlf = input safecrlf = true ; always use plain prompt disregarding $SSH_ASKPASS value askpass = [alias] a = add --all d = difftool co = checkout ci = commit --verbose st = status br = branch sh = show --pretty="format:" --name-only logg = log --pretty=format:\"%C(auto)%h %cd %s%d [%an]\" --graph --date=short type = cat-file -t dump = cat-file -p [commit] verbose = true [diff] tool = vimdiff indentHeuristic = true [merge] tool = vimdiff [push] default = simple [difftool] prompt = falsedo uSX:
'1.0 .user.email'xxx@gmail.com .user.name'Johnny English .core.pager'less -FRSX .core.autocrlf'input .core.safecrlf'true ' always use plain prompt disregarding $SSH_ASKPASS value .core.askpass' .alias.a'add --all .alias.d'difftool .alias.co'checkout .alias.ci'commit --verbose .alias.st'status .alias.br'branch .alias.sh'show --pretty="format:" --name-only .alias.logg'log --pretty=format:\"%C(auto)%h %cd %s%d [%an]\" --graph --date=short .alias.type'cat-file -t .alias.dump'cat-file -p .commit.verbose'true .diff.tool'vimdiff .diff.indentHeuristic'true .merge.tool'vimdiff .push.default'simple .difftool.prompt'falsePovažujete tuto syntax za chaotickou? Pokud ano, pak uSX totálně selhal a specifikace by měla vypadat jinak.
Ty tečky na začátku názvů mi přijdou nadbytečné1 a apostrof mi přijde nevhodný z vizuálních důvodů – moc to splývá dohromady – vhodnější mi přijde = nebo : ideálně s možností doplnit mezery pro lepší odlišení klíče a hodnoty případně zarovnání hodnot pod sebe (zarovnávání má sice i nevýhody, ale někdy to smysl dává).
Další věc je, že se na každém řádku opakují názvy všech nadřazených úrovní. Asi je to kvůli snadnému grepování, ale znepříjemňuje to editaci – když budeš chtít přesadit jeden uzel (zvlášť když má potomky) do jiné části stromu, tak to bude docela peklo. V XML to v podstatě jen označíš myší a přetáhneš jinam :-)
A nějak v tom nevidím, jak zapsat pole…
Shodou okolností jsem se taky zamýšlel nad vlastním formátem, pojmenoval jsem si to XFI – XML for idiots – a je to syntaxe pro datové struktury2 vytvořená s ohledem na snadný zápis, přehlednost a uniformitu3. Ale zatím to není ve stavu, že bych si to troufal prezentovat ostatním :-)
[1] když už je potřeba odlišit více případů, tak bych na to šel tak, aby tam ve většině případů nebylo nic a v těch méně častých případech tam byl nějaký znak – pokud je ale na začátku každého řádku tečka, přijde mi to špatně navržené
[2] nevhodná pro dokumenty – pro ně bych radši něco ve stylu TeXu, ale když jsem se zamýšlel nad zápisem atributů a escapováním, tak mi z toho začalo vycházet něco složitějšího než XML…
[3] pokud možno jeden způsob, jak něco zapsat – nějaká variabilita tam je, ale jen kde to dává smysl
Přijde mi, že se snaží vymyslet "obecně skvělý" formát, což IMHO nejde.Ano, protoze hlavni navrhove kompromisy jsou: - Chci efektivni reprezentaci (binarni) nebo citelnou reprezentaci (textovou)? - Chci samopopisny format (schema dat je jeho soucasti) nebo format bez schematu za ucelem uspory mista, a do jake miry? - Chci primarne text a v nem escapovat strukturovana data (a la treba XML), nebo chci strukturovana data a v nich escapovat text (a la treba JSON)?
- Chci efektivni reprezentaci (binarni) nebo citelnou reprezentaci (textovou)?Mohu mít bez kompromisů obojí zároveň - třeba vedle sebe (text -> nepotřebuji zajistit, aby byl čitelný, protože již čitelný je; binární data -> nepotřebuji zajistit, aby byla čitelná, protože jsou binární; QED).
- Chci samopopisny format (schema dat je jeho soucasti) nebo format bez schematu za ucelem uspory mista, a do jake miry?Mohu mít obojí zároveň (formát bude podporovat schéma, ale plně volitelně - schéma bude vyžadované pouze tehdy, pokud bude tento požadavek odesílatele vyjádřen v metadatech streamu).
- Chci primarne text a v nem escapovat strukturovana data (a la treba XML), nebo chci strukturovana data a v nich escapovat text (a la treba JSON)?Tohle dilema začíná nabývat na důležitosti pouze s rostoucím množstvím syntaktických "vyhrazených" konstruktů. Pokud se však množství těchto konstruktů bude blížit nule (řekněme třeba 1-4), pak to nijak řešit formát nemusí a neomezí to jeho možnosti a upotřebitelnost. Mimochodem, v uSX se lze escapování (statisticky) vyhnout, pokud si vygeneruji náhodně těch 64 oktetů jako oddělovač (pravděpodobnost, že se v jednom přenášeném záznamu objeví 64 po sobě jdoucích oktetů, které jsem si náhodně vygeneroval by měla být výrazně nižší, než že budu přenášet tak obrovský záznam, ve kterém by se nějaká taková posloupnost mohla objevit).
'1.0
.core.askpass'
.core.autocrlf'input
.core.pager'less -FRSX
.core.safecrlf'true
.user.email'zzz@gmail.com
.user.name'Johnny British
' actual value must be this, so
' always use plain prompt disregarding $SSH_ASKPASS value
' until user input something else this value is used
'1.0 .user.email'xxx@gmail.com .user.name'Johnny English .core.pager'less -FRSX .core.autocrlf'input .core.safecrlf'true ' always use plain prompt disregarding $SSH_ASKPASS value .core.askpass' .alias.a'add --all .alias.d'difftool .alias.co'checkout .alias.ci'commit --verbose .alias.st'status .alias.br'branch .alias.sh'show --pretty="format:" --name-only .alias.logg'log --pretty=format:\"%C(auto)%h %cd %s%d [%an]\" --graph --date=short .alias.type'cat-file -t .alias.dump'cat-file -p .commit.verbose'true .diff.tool'vimdiff .diff.indentHeuristic'true .merge.tool'vimdiff .push.default'simple .difftool.prompt'false
The format uses just three characters (' ^ LF) as delimiters. Any character might be used as value (there are no requirements on encoding nor anything else)Jestliže spec neobsahuje požadavky na kódování, můžou ty delimitery být kódovaný třeba v UTF-16, UTF-32 nebo obecně jakýmkoli ASCII-nekompatibilním kódování? Linefeed v UTF-32 je
0x0000000A
.
strings
), protože je formát čistě binární a nebere ani trochu ohled na lidskou čitelnost.
Mimochodem TOML považuji za extrémně složitý. A už vůbec v porovnání s tím, co poskytuje oproti ostatním lidsky čitelným formátům (YAML, INI, Java resources, JSON, XML, atd.). TOML také nepodporuje streamy (protože to je hash tabulka). I když základní myšlenka TOML je podobná (TOML je hash tabulka key + value; uSX je seznam dvojic key + value).
Mimochodem, všiml jsem si, že ve všech formátech, kde autoři zvolili pro řešení problému "zápis nepovoleného znaku" escapování se strašně špatně cokoliv lidsky píše, protože člověk musí hlídat zanořování znaků, opakování inkriminovaných znaků, escapování escapovaných escapovaných escapovaných znaků, musí znát velmi dobře standard, aby věděl ve kterých kontextech co escapovat a čím, atd. Formáty, které se escapování umí jakž takž vyhýbat považuji za lépe navržené než ty s escapováním.
Ano, zkoušel. Právě TOML byl jeden z několika málo formátů, který mě přiměl k myšlence, že formát nutně musí podporovat jak lidsky čitelná, tak binární data.Docela by mě zajímala motivace / use case pro tenhle požadavek... To jsem asi ještě nikde moc neviděl...
Ano, zkoušel. Právě TOML byl jeden z několika málo formátů, který mě přiměl k myšlence, že formát nutně musí podporovat jak lidsky čitelná, tak binární data.Koukal jsi na Rebol? Sice je to programovací jazyk, ale dá se taky použít na přenos dat, podobně jako třeba lispovské s-expression.
s/INI/TOML
INI je zlo. Nemá nikde žádný standard a každý parser se chová podle svýho. Naposledy, když jsem řešil INI, což bylo před pár lety, zhrozil jsem se, protože INI codec se choval jinak v kdelibs a jinak v čistém Qt.
TOML je INI-like formát, který ale má pořádnou standardizaci.
Kravina na kvadrát, výplod šílence, de.ilní paskvil ... neumětelové, nýmandi.Pojďte dál. Prosím, posaďte se. Tak to budeme točit. Už je to v produkci. Všichni jsou nadšení. To byl produkční, ten co tu byl.
BINARY
není nijak kódován.container
), stejně jako skládáte třídy v OOP. Jak myslíte, že to dělá ten Smalltalk, když posílá zprávu přes síť? Rozloží ji na jednotlivé atomy a na druhé straně zase složí (třeba pomocí ObjectDumper/ObjectLoader či DataStream).BINARY
a dát si do něj, co chcete.BINARY
bychom ten formát silně degradovali. Ale možnost by to skutečně byla.Jinak me by se libilo XML (tj.markup s mixed tagy) ve stylu TeXu.
Nad tím jsem shodou okolností taky přemýšlel. TeXová syntaxe je jedna z možností, hodí se pro tvorbu dokumentů (text a v něm sem tam nějaká ta značka). Naopak pro popis datových struktur (a konfigurace) by se mi víc líbilo to založit na odsazování.
Každopádně logickým výstupem by byl DOM resp. SAX události, takže by nebyl problém to použít na místě XML nebo dokonce podporovat víc formátů zápisu současně. Něco málo už jsem implementoval v alt2xml.
Každopádně logickým výstupem by byl DOM resp. SAX události, takže by nebyl problém to použít na místě XML nebo dokonce podporovat víc formátů zápisu současně.Ju, s tím uSX počítá - viz. paragraf o obousměrném 1:1 mapování do/z jiných formátů (např. XML).
Jinak me by se libilo XML (tj.markup s mixed tagy) ve stylu TeXu. To asi zatim na trhu chybi.Můžete to rozvést (stačí ukázkový konfigurák)? Docela mě to zajímá.
Nechapu, vadi ti CBOR a nevadi MsgPack? Ja jsem se nakonec rozhodl pro CBOR, protoze ma RFC.CBOR je vlastně "starý MsgPack" popsaný jedním (!) aktivistou jako RFC, aniž by mu to komunita schválila (on tam ještě udělal minimálně jednu docela zásadní změnu zcela dle vlastní vůle, takže to není úplně košér...). Viz. níže.
Te vytce s typy moc nerozumim - z moji zkusenosti je CBOR jednoduchy na generovani i parsovani.Nedopsal jsem předtím větu
Můžete to rozvést (stačí ukázkový konfigurák)? Docela mě to zajímá.Ukazkovy konfigurak nemam, ale tady je mikrospecifikace. Me slo puvodne spis o neco ve stylu Autodocu, ale jednodussiho (konzistentnejsiho) na zapis.
Kex markup is similar to XML or HTML, the markup can intersperse normal text (typically UTF-8). The normal tags have no meaning and are left untouched unless there is a macro definition that can evaluate it. The processing of document with Kex syntax will evaluate all the tags that have macros. Unless define otherwise, the evaluation only happens once (that is, Kex markup can be processed to yield another with Kex narkup). Kex markup syntax: \symbol - single tag, symbol is any valid C literal (also character ':' is reserved for namespaces and can occur in symbol) \symbol{text} - pair tag, text is any Kex markup \symbol[arg]{text} - pair tag with optional argument (aka attribute), again attributes can have Kex markup \symbol[arg1|arg2|..]{text} - pair tag with multiple arguments (also character ':' can be used within arguments to separate key and value to represent dictionary) \symbol. - single tag which symbol would normally blend with the text \!symbol - metatag, reserved for use in Kex macro language (so the normal tags are solely reserved for the user) \#{comment} - block comment, comment can contain Kex markup (so the closing brace must match) \#comment - comment to the end of line (copied/ignored during evaluation) \\ \{ \} \[ \] \| \. \: - escapes for special symbols \ - escape for whitespace, causes the whitespace to be ignored (not included in the output) \%xxxx. - escape for any character, xxxx is Unicode in hex, '.' is optional \!![endmark]{literal text|endmark} - universal escape, endmark can be user specified sequence of characters, endmark is optional and can be empty \&location - defines the current location in the document with a name (can be any symbol) \@location - refers to the named location
Možná to tam někde je (ještě jsem to nepřečetl celé), ale jaká je logická struktura dat popisovaných tím formátem? Např. v případě XML je to strom elementů, atributů, komentářů případně dalších uzlů. Jak to vypadá u tvého formátu? Můžeš to nakreslit? (obrázek hodně pomůže a člověk na první pohled vidí, o co jde)
Tímhle bych každopádně začal a až pak vymýšlel způsob zápisu. Těch může být ostatně víc (např. binární a textový, různé formy), ale logická struktura, které se z toho načte je vždy jedna.